| 45 | } |
| 46 | |
| 47 | TEST(TestColumnReader, DefLevelsToBitmap) { |
| 48 | // Bugs in this function were exposed in ARROW-3930 |
| 49 | std::vector<int16_t> def_levels = {3, 3, 3, 2, 3, 3, 3, 3, 3}; |
| 50 | |
| 51 | std::vector<uint8_t> valid_bits(2, 0); |
| 52 | |
| 53 | LevelInfo level_info; |
| 54 | level_info.def_level = 3; |
| 55 | level_info.rep_level = 1; |
| 56 | |
| 57 | ValidityBitmapInputOutput io; |
| 58 | io.values_read_upper_bound = def_levels.size(); |
| 59 | io.values_read = -1; |
| 60 | io.valid_bits = valid_bits.data(); |
| 61 | |
| 62 | internal::DefLevelsToBitmap(def_levels.data(), 9, level_info, &io); |
| 63 | ASSERT_EQ(9, io.values_read); |
| 64 | ASSERT_EQ(1, io.null_count); |
| 65 | |
| 66 | // Call again with 0 definition levels, make sure that valid_bits is unmodified |
| 67 | const uint8_t current_byte = valid_bits[1]; |
| 68 | io.null_count = 0; |
| 69 | internal::DefLevelsToBitmap(def_levels.data(), 0, level_info, &io); |
| 70 | |
| 71 | ASSERT_EQ(0, io.values_read); |
| 72 | ASSERT_EQ(0, io.null_count); |
| 73 | ASSERT_EQ(current_byte, valid_bits[1]); |
| 74 | } |
| 75 | |
| 76 | TEST(TestColumnReader, DefLevelsToBitmapPowerOfTwo) { |
| 77 | // PARQUET-1623: Invalid memory access when decoding a valid bits vector that has a |
nothing calls this directly
no test coverage detected