@Test public void testPowerSet() { final ImmutableBitSet empty = ImmutableBitSet.of(); assertThat(Iterables.size(empty.powerSet()), equalTo(1)); assertThat(empty.powerSet().toString(), equalTo("[{}]")); final ImmutableBitSet single = ImmutableBitSet.of(2); assertThat(Iterables.size(single.powerSet()), equalTo(2)); assertThat(single.powerSet().toString(), equalTo("[{}, {2}]")); final ImmutableBitSet two = ImmutableBitSet.of(2, 10); assertThat(Iterables.size(two.powerSet()), equalTo(4)); assertThat(two.powerSet().toString(), equalTo("[{}, {10}, {2}, {2, 10}]")); final ImmutableBitSet seventeen = ImmutableBitSet.range(3, 20); assertThat(Iterables.size(seventeen.powerSet()), equalTo(131072)); }
/** * Tests the method {@link * org.apache.calcite.util.ImmutableBitSet#contains(org.apache.calcite.util.ImmutableBitSet)}. */ @Test public void testBitSetsContains() { assertTrue(ImmutableBitSet.range(0, 5).contains(ImmutableBitSet.range(2, 4))); assertTrue(ImmutableBitSet.range(0, 5).contains(ImmutableBitSet.range(4))); assertFalse(ImmutableBitSet.range(0, 5).contains(ImmutableBitSet.of(14))); assertFalse(ImmutableBitSet.range(20, 25).contains(ImmutableBitSet.of(14))); final ImmutableBitSet empty = ImmutableBitSet.of(); assertTrue(ImmutableBitSet.range(20, 25).contains(empty)); assertTrue(empty.contains(empty)); assertFalse(empty.contains(ImmutableBitSet.of(0))); assertFalse(empty.contains(ImmutableBitSet.of(1))); assertFalse(empty.contains(ImmutableBitSet.of(63))); assertFalse(empty.contains(ImmutableBitSet.of(64))); assertFalse(empty.contains(ImmutableBitSet.of(1000))); assertTrue(ImmutableBitSet.of(1, 4, 7).contains(ImmutableBitSet.of(1, 4, 7))); }
/** Tests the method {@link BitSets#range(int, int)}. */ @Test public void testRange() { assertEquals(ImmutableBitSet.range(0, 4).toList(), Arrays.asList(0, 1, 2, 3)); assertEquals(ImmutableBitSet.range(1, 4).toList(), Arrays.asList(1, 2, 3)); assertEquals(ImmutableBitSet.range(4).toList(), Arrays.asList(0, 1, 2, 3)); assertEquals(ImmutableBitSet.range(0).toList(), Collections.<Integer>emptyList()); assertEquals(ImmutableBitSet.range(2, 2).toList(), Collections.<Integer>emptyList()); assertThat(ImmutableBitSet.range(63, 66).toString(), equalTo("{63, 64, 65}")); assertThat(ImmutableBitSet.range(65, 68).toString(), equalTo("{65, 66, 67}")); assertThat(ImmutableBitSet.range(65, 65).toString(), equalTo("{}")); assertThat(ImmutableBitSet.range(65, 65).length(), equalTo(0)); assertThat(ImmutableBitSet.range(65, 165).cardinality(), equalTo(100)); // Same tests as above, using a builder. assertThat(ImmutableBitSet.builder().set(63, 66).build().toString(), equalTo("{63, 64, 65}")); assertThat(ImmutableBitSet.builder().set(65, 68).build().toString(), equalTo("{65, 66, 67}")); assertThat(ImmutableBitSet.builder().set(65, 65).build().toString(), equalTo("{}")); assertThat(ImmutableBitSet.builder().set(65, 65).build().length(), equalTo(0)); assertThat(ImmutableBitSet.builder().set(65, 165).build().cardinality(), equalTo(100)); final ImmutableBitSet e0 = ImmutableBitSet.range(0, 0); final ImmutableBitSet e1 = ImmutableBitSet.of(); assertTrue(e0.equals(e1)); assertThat(e0.hashCode(), equalTo(e1.hashCode())); // Empty builder returns the singleton empty set. assertTrue(ImmutableBitSet.builder().build() == ImmutableBitSet.of()); }