| 115 | }; |
| 116 | |
| 117 | TEST_F(MultipathLevelBuilderTest, NonNullableSingleListNonNullableEntries) { |
| 118 | auto entries = field("Entries", ::arrow::int64(), /*nullable=*/false); |
| 119 | auto list_type = large_list(entries); |
| 120 | // Translates to parquet schema: |
| 121 | // required group bag { |
| 122 | // repeated group [unseen] (List) { |
| 123 | // required int64 Entries; |
| 124 | // } |
| 125 | // } |
| 126 | // So: |
| 127 | // def level 0: an empty list |
| 128 | // def level 1: a non-null entry |
| 129 | auto array = ::arrow::ArrayFromJSON(list_type, R"([[1], [2, 3], [4, 5, 6]])"); |
| 130 | |
| 131 | ASSERT_OK( |
| 132 | MultipathLevelBuilder::Write(*array, /*nullable=*/false, &context_, callback_)); |
| 133 | |
| 134 | ASSERT_THAT(results_, SizeIs(1)); |
| 135 | const CapturedResult& result = results_[0]; |
| 136 | |
| 137 | result.CheckLevels(/*def_levels=*/std::vector<int16_t>(/*count=*/6, 1), |
| 138 | /*rep_levels=*/{0, 0, 1, 0, 1, 1}); |
| 139 | |
| 140 | ASSERT_THAT(result.post_list_elements, SizeIs(1)); |
| 141 | EXPECT_THAT(result.post_list_elements[0].start, Eq(0)); |
| 142 | EXPECT_THAT(result.post_list_elements[0].end, Eq(6)); |
| 143 | } |
| 144 | |
| 145 | TEST_F(MultipathLevelBuilderTest, NullableSingleListWithAllNullsLists) { |
| 146 | auto entries = field("Entries", ::arrow::int64(), /*nullable=*/false); |
nothing calls this directly
no test coverage detected