| 5 | { |
| 6 | |
| 7 | TEST(MRMesh, BitSet) |
| 8 | { |
| 9 | BitSet bs0(4); |
| 10 | bs0.set(0); |
| 11 | bs0.set(2); |
| 12 | |
| 13 | EXPECT_EQ( bs0.nthSetBit( 0 ), 0 ); |
| 14 | EXPECT_EQ( bs0.nthSetBit( 1 ), 2 ); |
| 15 | EXPECT_EQ( bs0.nthSetBit( 2 ), BitSet::npos ); |
| 16 | |
| 17 | BitSet bs1(3); |
| 18 | bs1.set(1); |
| 19 | bs1.set(2); |
| 20 | |
| 21 | EXPECT_TRUE( end( bs1 ) == std::find_if( begin( bs1 ), end( bs1 ), []( size_t i ) { return i == 0; } ) ); |
| 22 | EXPECT_FALSE( end( bs1 ) == std::find_if( begin( bs1 ), end( bs1 ), []( size_t i ) { return i == 1; } ) ); |
| 23 | |
| 24 | EXPECT_EQ( BitSet( bs0 & bs1 ).count(), 1 ); |
| 25 | EXPECT_EQ( BitSet( bs0 | bs1 ).count(), 3 ); |
| 26 | EXPECT_EQ( BitSet( bs0 - bs1 ).count(), 1 ); |
| 27 | EXPECT_EQ( BitSet( bs1 - bs0 ).count(), 1 ); |
| 28 | EXPECT_EQ( BitSet( bs0 ^ bs1 ).count(), 2 ); |
| 29 | |
| 30 | EXPECT_EQ( BitSet( BitSet( bs0 ) &= bs1 ).count(), 1 ); |
| 31 | EXPECT_EQ( BitSet( BitSet( bs0 ) |= bs1 ).count(), 3 ); |
| 32 | EXPECT_EQ( BitSet( BitSet( bs0 ) -= bs1 ).count(), 1 ); |
| 33 | EXPECT_EQ( BitSet( BitSet( bs1 ) -= bs0 ).count(), 1 ); |
| 34 | EXPECT_EQ( BitSet( BitSet( bs0 ) ^= bs1 ).count(), 2 ); |
| 35 | |
| 36 | EXPECT_EQ( bs0.find_last(), size_t( 2 ) ); |
| 37 | BitSet bs2( 5 ); |
| 38 | EXPECT_EQ( bs2.find_last(), size_t( -1 ) ); |
| 39 | |
| 40 | EXPECT_FALSE( bs1.is_subset_of( bs0 ) ); |
| 41 | EXPECT_FALSE( bs0.is_subset_of( bs1 ) ); |
| 42 | BitSet bs3 = bs0; |
| 43 | EXPECT_TRUE( bs3.is_subset_of( bs0 ) ); |
| 44 | bs3.resize( 5 ); |
| 45 | EXPECT_TRUE( bs3.is_subset_of( bs0 ) ); |
| 46 | EXPECT_TRUE( bs0.is_subset_of( bs3 ) ); |
| 47 | bs3.set( 4 ); |
| 48 | EXPECT_FALSE( bs3.is_subset_of( bs0 ) ); |
| 49 | EXPECT_TRUE( bs0.is_subset_of( bs3 ) ); |
| 50 | |
| 51 | BitSet bs4( 270 ); |
| 52 | bs4.set( 160 ); |
| 53 | bs4.set( 161 ); |
| 54 | EXPECT_EQ( bs4.find_first(), 160 ); |
| 55 | EXPECT_EQ( bs4.find_next( 160 ), 161 ); |
| 56 | EXPECT_EQ( bs4.find_first_not_set(), 0 ); |
| 57 | EXPECT_EQ( bs4.find_next_not_set( 0 ), 1 ); |
| 58 | EXPECT_EQ( bs4.find_last(), 161 ); |
| 59 | EXPECT_EQ( bs4.find_last_not_set(), 269 ); |
| 60 | bs4.flip(); |
| 61 | EXPECT_EQ( bs4.find_first(), 0 ); |
| 62 | EXPECT_EQ( bs4.find_next( 0 ), 1 ); |
| 63 | EXPECT_EQ( bs4.find_first_not_set(), 160 ); |
| 64 | EXPECT_EQ( bs4.find_next_not_set( 160 ), 161 ); |
nothing calls this directly
no test coverage detected