MCPcopy Create free account
hub / github.com/apache/arrow / TestGet

Method TestGet

cpp/src/arrow/field_ref_test.cc:361–405  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

359
360 template <typename I, bool Flattened = false>
361 void TestGet() const {
362 using O = OutputType<I>;
363 const auto& input = case_->InputAs<I>();
364 ASSERT_OK_AND_ASSIGN(auto v0, DoGetOne<Flattened>(*input, FieldRef("a")));
365 ASSERT_OK_AND_ASSIGN(auto v1, DoGetOne<Flattened>(*input, FieldRef("b")));
366 ASSERT_OK_AND_ASSIGN(auto v1_0, DoGetOne<Flattened>(*input, FieldRef("b", "a")));
367 ASSERT_OK_AND_ASSIGN(auto v1_1, DoGetOne<Flattened>(*input, FieldRef("b", "b")));
368 ASSERT_OK_AND_ASSIGN(auto v1_1_0, DoGetOne<Flattened>(*input, FieldRef("b", "b", 0)));
369 ASSERT_OK_AND_ASSIGN(auto v1_1_1, DoGetOne<Flattened>(*input, FieldRef("b", "b", 1)));
370
371 AssertOutputsEqual<I>(case_->v0.OutputAs<O>(), v0);
372 AssertOutputsEqual<I>(case_->v1.OutputAs<O>(), v1);
373 if constexpr (Flattened) {
374 AssertOutputsEqual<I>(case_->v1_0_flat.OutputAs<O>(), v1_0);
375 AssertOutputsEqual<I>(case_->v1_1_flat.OutputAs<O>(), v1_1);
376 AssertOutputsEqual<I>(case_->v1_1_0_flat.OutputAs<O>(), v1_1_0);
377 AssertOutputsEqual<I>(case_->v1_1_1_flat.OutputAs<O>(), v1_1_1);
378 } else {
379 AssertOutputsEqual<I>(case_->v1_0.OutputAs<O>(), v1_0);
380 AssertOutputsEqual<I>(case_->v1_1.OutputAs<O>(), v1_1);
381 AssertOutputsEqual<I>(case_->v1_1_0.OutputAs<O>(), v1_1_0);
382 AssertOutputsEqual<I>(case_->v1_1_1.OutputAs<O>(), v1_1_1);
383 }
384
385 // Cases where multiple matches are found
386 EXPECT_OK_AND_ASSIGN(auto multiple_matches,
387 DoGetAll<Flattened>(*input, FieldRef("b", "b", "a")));
388 EXPECT_EQ(multiple_matches.size(), 2);
389 EXPECT_RAISES_WITH_MESSAGE_THAT(
390 Invalid, ::testing::HasSubstr("Multiple matches for "),
391 (DoGetOne<Flattened>(*input, FieldRef("b", "b", "a"))));
392 EXPECT_RAISES_WITH_MESSAGE_THAT(
393 Invalid, ::testing::HasSubstr("Multiple matches for "),
394 (DoGetOneOrNone<Flattened>(*input, FieldRef("b", "b", "a"))));
395
396 // Cases where no match is found
397 EXPECT_OK_AND_ASSIGN(auto no_matches,
398 DoGetAll<Flattened>(*input, FieldRef("b", "b", "b")));
399 EXPECT_EQ(no_matches.size(), 0);
400 EXPECT_RAISES_WITH_MESSAGE_THAT(
401 Invalid, ::testing::HasSubstr("No match for "),
402 (DoGetOne<Flattened>(*input, FieldRef("b", "b", "b"))));
403 ASSERT_OK_AND_EQ(nullptr,
404 (DoGetOneOrNone<Flattened>(*input, FieldRef("b", "b", "b"))));
405 }
406};
407
408// ----------------------------------------------------------------------

Callers

nothing calls this directly

Calls 1

FieldRefFunction · 0.70

Tested by

no test coverage detected