package org.limewire.collection;
import junit.framework.Test;
import org.limewire.util.BaseTestCase;
public class BitNumbersTest extends BaseTestCase {
public BitNumbersTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(BitNumbersTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testNumberConstruction() {
BitNumbers bn = new BitNumbers(15);
assertTrue(bn.isEmpty());
assertEquals(15, bn.getMax());
for(int i = 0; i < 32; i++)
assertFalse(bn.isSet(i));
assertEquals("", bn.toHexString());
assertEquals(new byte[0], bn.toByteArray());
bn.set(0);
bn.set(3);
bn.set(5);
bn.set(10);
assertFalse(bn.isEmpty());
assertEquals(15, bn.getMax());
for(int i = 0; i < 15; i++)
assertEquals(i == 0 || i == 3 || i == 5 || i == 10, bn.isSet(i));
assertEquals("942", bn.toHexString());
assertEquals(new byte[] { (byte)0x94, 0x20 }, bn.toByteArray());
}
public void testByteArrayConstruction() {
byte[] b = new byte[] { (byte)0x94, 0x20 };
BitNumbers bn = new BitNumbers(b);
assertFalse(bn.isEmpty());
assertEquals(16, bn.getMax());
for(int i = 0; i < 15; i++)
assertEquals(i == 0 || i == 3 || i == 5 || i == 10, bn.isSet(i));
assertEquals("942", bn.toHexString());
assertEquals(new byte[] { (byte)0x94, 0x20 }, bn.toByteArray());
bn.set(1);
bn.set(11);
bn.set(15);
for(int i = 0; i < 16; i++)
assertEquals(i == 0 || i == 1 || i == 3 || i == 5 || i == 10 || i == 11 || i == 15, bn.isSet(i));
assertEquals("D431", bn.toHexString());
assertEquals(new byte[] { (byte)0xD4, 0x31 }, bn.toByteArray());
}
public void testStringConstructionWhole() {
BitNumbers bn = new BitNumbers("9420");
assertFalse(bn.isEmpty());
assertEquals(16, bn.getMax());
for(int i = 0; i < 15; i++)
assertEquals(i == 0 || i == 3 || i == 5 || i == 10, bn.isSet(i));
assertEquals("942", bn.toHexString());
assertEquals(new byte[] { (byte)0x94, 0x20 }, bn.toByteArray());
bn.set(1);
bn.set(11);
bn.set(15);
for(int i = 0; i < 16; i++)
assertEquals(i == 0 || i == 1 || i == 3 || i == 5 || i == 10 || i == 11 || i == 15, bn.isSet(i));
assertEquals("D431", bn.toHexString());
assertEquals(new byte[] { (byte)0xD4, 0x31 }, bn.toByteArray());
}
public void testStringConstructionNibble() {
BitNumbers bn = new BitNumbers("942");
assertFalse(bn.isEmpty());
assertEquals(16, bn.getMax());
for(int i = 0; i < 15; i++)
assertEquals(i == 0 || i == 3 || i == 5 || i == 10, bn.isSet(i));
assertEquals("942", bn.toHexString());
assertEquals(new byte[] { (byte)0x94, 0x20 }, bn.toByteArray());
bn.set(1);
bn.set(11);
bn.set(15);
for(int i = 0; i < 16; i++)
assertEquals(i == 0 || i == 1 || i == 3 || i == 5 || i == 10 || i == 11 || i == 15, bn.isSet(i));
assertEquals("D431", bn.toHexString());
assertEquals(new byte[] { (byte)0xD4, 0x31 }, bn.toByteArray());
}
public void testToHexStringCutsExtra() {
BitNumbers bn = new BitNumbers("100000");
assertFalse(bn.isEmpty());
assertEquals(24, bn.getMax());
for(int i = 0; i < 32; i++) {
assertEquals(i == 3, bn.isSet(i));
}
assertEquals("1", bn.toHexString());
}
public void testToByteArrayCutsExtra() {
BitNumbers bn = new BitNumbers("100000");
assertFalse(bn.isEmpty());
assertEquals(24, bn.getMax());
for(int i = 0; i < 32; i++) {
assertEquals(i == 3, bn.isSet(i));
}
assertEquals(new byte[] { 0x10 }, bn.toByteArray() );
}
public void testEquals() {
BitNumbers bitNumbers1 = new BitNumbers("01");
BitNumbers bitNumbers2 = new BitNumbers(new byte[] { 0x1 });
assertTrue(bitNumbers1 + " should be equal to " + bitNumbers2, bitNumbers1.equals(bitNumbers2));
}
}