package org.teiid.test.bufferservice;
import org.teiid.common.buffer.impl.ConcurrentBitSet;
public class ConcurrentBitSetTest {
public static void main(String[] args) {
testBitsSet();
testSegmentUse();
testCompactBitSet();
testCompactHighest();
testCompactHighestEmpty();
}
static void testCompactHighestEmpty() {
ConcurrentBitSet bst = new ConcurrentBitSet(1 << 19, 1);
bst.setCompact(true);
bst.getAndSetNextClearBit();
bst.clear(0);
System.out.println(bst.getAndSetNextClearBit(0));
}
static void testCompactHighest() {
ConcurrentBitSet bst = new ConcurrentBitSet(1 << 19, 1);
bst.setCompact(true);
for (int i = 0; i < bst.getTotalBits(); i++) {
System.out.println(bst.getAndSetNextClearBit());
}
System.out.println();
System.out.println(bst.getTotalBits()-1 + " - " + bst.getHighestBitSet(0));
System.out.println(bst.getTotalBits()-1 + " - " + bst.getHighestBitSet(1));
for (int i = bst.getTotalBits()-20; i < bst.getTotalBits(); i++) {
bst.clear(i);
}
System.out.println(bst.getTotalBits()-21 + " - " + bst.compactHighestBitSet(0));
for (int i = bst.getTotalBits()-20; i < bst.getTotalBits(); i++) {
bst.getAndSetNextClearBit();
}
System.out.println(bst.getAndSetNextClearBit());
for (int i = 20; i < bst.getTotalBits(); i++) {
bst.clear(i);
}
System.out.println(bst.getTotalBits()-1 + " - " + bst.getHighestBitSet(0));
System.out.println( bst.compactHighestBitSet(0));
}
static void testCompactBitSet() {
ConcurrentBitSet bst = new ConcurrentBitSet(100000, 1);
bst.setCompact(true);
for (int i = 0; i < 100000; i++) {
System.out.println(bst.getAndSetNextClearBit());
}
bst.clear(50);
bst.clear(500);
bst.clear(5000);
System.out.println(bst.getAndSetNextClearBit());
}
static void testSegmentUse() {
ConcurrentBitSet bst = new ConcurrentBitSet(50001, 4);
System.out.println(bst.getAndSetNextClearBit(0));
System.out.println(bst.getAndSetNextClearBit(0));
System.out.println(bst.getAndSetNextClearBit(4));
}
static void testBitsSet() {
ConcurrentBitSet bst = new ConcurrentBitSet(50001, 4);
System.out.println(bst);
System.out.println(bst.getAndSetNextClearBit());
System.out.println(bst.getAndSetNextClearBit());
System.out.println(bst.getAndSetNextClearBit());
System.out.println(bst.getAndSetNextClearBit());
System.out.println(bst.getAndSetNextClearBit());
System.out.println(bst.getBitsSet());
bst.clear(12501);
System.out.println(bst.getBitsSet());
}
}