package org.redisson;
import java.util.BitSet;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
import org.redisson.api.RBitSet;
public class RedissonBitSetTest extends BaseTest {
@Test
public void testIndexRange() {
RBitSet bs = redisson.getBitSet("testbitset");
long topIndex = Integer.MAX_VALUE*2L;
assertThat(bs.get(topIndex)).isFalse();
bs.set(topIndex);
assertThat(bs.get(topIndex)).isTrue();
}
@Test
public void testLength() {
RBitSet bs = redisson.getBitSet("testbitset");
bs.set(0, 5);
bs.clear(0, 1);
assertThat(bs.length()).isEqualTo(5);
bs.clear();
bs.set(28);
bs.set(31);
assertThat(bs.length()).isEqualTo(32);
bs.clear();
bs.set(3);
bs.set(7);
assertThat(bs.length()).isEqualTo(8);
bs.clear();
bs.set(3);
bs.set(120);
bs.set(121);
assertThat(bs.length()).isEqualTo(122);
bs.clear();
bs.set(0);
assertThat(bs.length()).isEqualTo(1);
}
@Test
public void testClear() {
RBitSet bs = redisson.getBitSet("testbitset");
bs.set(0, 8);
bs.clear(0, 3);
assertThat(bs.toString()).isEqualTo("{3, 4, 5, 6, 7}");
}
@Test
public void testNot() {
RBitSet bs = redisson.getBitSet("testbitset");
bs.set(3);
bs.set(5);
bs.not();
assertThat(bs.toString()).isEqualTo("{0, 1, 2, 4, 6, 7}");
}
@Test
public void testSet() {
RBitSet bs = redisson.getBitSet("testbitset");
bs.set(3);
bs.set(5);
assertThat(bs.toString()).isEqualTo("{3, 5}");
BitSet bs1 = new BitSet();
bs1.set(1);
bs1.set(10);
bs.set(bs1);
bs = redisson.getBitSet("testbitset");
assertThat(bs.toString()).isEqualTo("{1, 10}");
}
@Test
public void testSetGet() {
RBitSet bitset = redisson.getBitSet("testbitset");
assertThat(bitset.cardinality()).isZero();
assertThat(bitset.size()).isZero();
bitset.set(10, true);
bitset.set(31, true);
assertThat(bitset.get(0)).isFalse();
assertThat(bitset.get(31)).isTrue();
assertThat(bitset.get(10)).isTrue();
assertThat(bitset.cardinality()).isEqualTo(2);
assertThat(bitset.size()).isEqualTo(32);
}
@Test
public void testSetRange() {
RBitSet bs = redisson.getBitSet("testbitset");
bs.set(3, 10);
assertThat(bs.cardinality()).isEqualTo(7);
assertThat(bs.size()).isEqualTo(16);
}
@Test
public void testAsBitSet() {
RBitSet bs = redisson.getBitSet("testbitset");
bs.set(3, true);
bs.set(41, true);
assertThat(bs.size()).isEqualTo(48);
BitSet bitset = bs.asBitSet();
assertThat(bitset.get(3)).isTrue();
assertThat(bitset.get(41)).isTrue();
assertThat(bs.cardinality()).isEqualTo(2);
}
@Test
public void testAnd() {
RBitSet bs1 = redisson.getBitSet("testbitset1");
bs1.set(3, 5);
assertThat(bs1.cardinality()).isEqualTo(2);
assertThat(bs1.size()).isEqualTo(8);
RBitSet bs2 = redisson.getBitSet("testbitset2");
bs2.set(4);
bs2.set(10);
bs1.and(bs2.getName());
assertThat(bs1.get(3)).isFalse();
assertThat(bs1.get(4)).isTrue();
assertThat(bs1.get(5)).isFalse();
assertThat(bs2.get(10)).isTrue();
assertThat(bs1.cardinality()).isEqualTo(1);
assertThat(bs1.size()).isEqualTo(16);
}
}