| 134 | |
| 135 | template <class TBitMapImpl> |
| 136 | void TestOrImpl() { |
| 137 | TBitMapImpl bitmap1; |
| 138 | TBitMapImpl bitmap2; |
| 139 | |
| 140 | size_t initBits1[] = {0, 10, 11, 76}; |
| 141 | size_t initBits2[] = {1, 11, 22, 50}; |
| 142 | |
| 143 | INIT_BITMAP(bitmap1, initBits1); |
| 144 | INIT_BITMAP(bitmap2, initBits2); |
| 145 | |
| 146 | bitmap1.Or(bitmap2); |
| 147 | |
| 148 | UNIT_ASSERT_EQUAL(bitmap1.Count(), 7); |
| 149 | UNIT_ASSERT_EQUAL(bitmap2.Count(), 4); |
| 150 | |
| 151 | size_t resBits[] = {0, 1, 10, 11, 22, 50, 76}; |
| 152 | |
| 153 | CHECK_BITMAP(bitmap1, resBits); |
| 154 | CHECK_BITMAP(bitmap2, initBits2); |
| 155 | |
| 156 | bitmap1.Clear(); |
| 157 | INIT_BITMAP(bitmap1, initBits1); |
| 158 | |
| 159 | UNIT_ASSERT_EQUAL(bitmap1 | (bitmap2 << 3), TBitMapImpl(bitmap1).Or(bitmap2, 3)); |
| 160 | UNIT_ASSERT_EQUAL(bitmap1 | (bitmap2 << 64), TBitMapImpl(bitmap1).Or(bitmap2, 64)); |
| 161 | UNIT_ASSERT_EQUAL(bitmap1 | (bitmap2 << 66), TBitMapImpl(bitmap1).Or(bitmap2, 66)); |
| 162 | |
| 163 | UNIT_ASSERT_EQUAL(bitmap2 | (bitmap1 << 3), TBitMapImpl(bitmap2).Or(bitmap1, 3)); |
| 164 | UNIT_ASSERT_EQUAL(bitmap2 | (bitmap1 << 64), TBitMapImpl(bitmap2).Or(bitmap1, 64)); |
| 165 | UNIT_ASSERT_EQUAL(bitmap2 | (bitmap1 << 66), TBitMapImpl(bitmap2).Or(bitmap1, 66)); |
| 166 | } |
| 167 | |
| 168 | Y_UNIT_TEST(TestOrFixed) { |
| 169 | TestOrImpl<TBitMap<145>>(); |