| 1099 | } |
| 1100 | |
| 1101 | void TestUnaligned(const BitmapOperation& op, const std::vector<int>& left_bits, |
| 1102 | const std::vector<int>& right_bits, |
| 1103 | const std::vector<int>& result_bits) { |
| 1104 | std::shared_ptr<Buffer> left, right, out; |
| 1105 | int64_t length; |
| 1106 | auto offset_values = {0, 1, 3, 5, 7, 8, 13, 21, 38, 75, 120, 65536}; |
| 1107 | |
| 1108 | for (int64_t left_offset : offset_values) { |
| 1109 | BitmapFromVector(left_bits, left_offset, &left, &length); |
| 1110 | |
| 1111 | for (int64_t right_offset : offset_values) { |
| 1112 | BitmapFromVector(right_bits, right_offset, &right, &length); |
| 1113 | |
| 1114 | for (int64_t out_offset : offset_values) { |
| 1115 | ASSERT_OK_AND_ASSIGN( |
| 1116 | out, op.Call(default_memory_pool(), left->mutable_data(), left_offset, |
| 1117 | right->mutable_data(), right_offset, length, out_offset)); |
| 1118 | auto reader = BitmapReader(out->mutable_data(), out_offset, length); |
| 1119 | ASSERT_READER_VALUES(reader, result_bits); |
| 1120 | |
| 1121 | // Clear out buffer and try non-allocating version |
| 1122 | std::memset(out->mutable_data(), 0, out->size()); |
| 1123 | ASSERT_OK(op.Call(left->mutable_data(), left_offset, right->mutable_data(), |
| 1124 | right_offset, length, out_offset, out->mutable_data())); |
| 1125 | reader = BitmapReader(out->mutable_data(), out_offset, length); |
| 1126 | ASSERT_READER_VALUES(reader, result_bits); |
| 1127 | } |
| 1128 | } |
| 1129 | } |
| 1130 | } |
| 1131 | }; |
| 1132 | |
| 1133 | TEST_F(BitmapOp, And) { |
nothing calls this directly
no test coverage detected