package com.navercorp.pinpoint.common.util; import org.junit.Assert; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author Woonduk Kang(emeroad) */ public class BitFieldUtilsTest { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Test public void testBitField() { int bitField = 0; int position = 5; bitField = BitFieldUtils.setBit(bitField, position, true); Assert.assertTrue(BitFieldUtils.testBit(bitField, position)); Assert.assertEquals(BitFieldUtils.getBit(bitField, position), 1); bitField = -1; bitField = BitFieldUtils.clearBit(bitField, position); Assert.assertEquals(BitFieldUtils.getBit(bitField, position), 0); } @Test public void testGetBit_byte() { byte bitField = 0; int position = 2; bitField = BitFieldUtils.setBit(bitField, position, true); Assert.assertTrue(BitFieldUtils.testBit(bitField, position)); Assert.assertEquals(BitFieldUtils.getBit(bitField, position), 1); } @Test public void testGetBit_int() { int bitField = 0; int position = 2; bitField = BitFieldUtils.setBit(bitField, position, true); Assert.assertTrue(BitFieldUtils.testBit(bitField, position)); Assert.assertEquals(BitFieldUtils.getBit(bitField, position), 1); } @Test public void testGetBit_int_unsigned_shift() { int bitField = 0; int position = Integer.SIZE-1; bitField = BitFieldUtils.setBit(bitField, position, true); Assert.assertTrue(BitFieldUtils.testBit(bitField, position)); Assert.assertEquals(BitFieldUtils.getBit(bitField, position), 1); } @Test public void testGetBit_long_unsigned_shift() { long bitField = 0; int position = Long.SIZE -1; bitField = BitFieldUtils.setBit(bitField, position, true); Assert.assertTrue(BitFieldUtils.testBit(bitField, position)); Assert.assertEquals(BitFieldUtils.getBit(bitField, position), 1); bitField = BitFieldUtils.setBit(bitField, position, false); Assert.assertFalse(BitFieldUtils.testBit(bitField, position)); Assert.assertEquals(BitFieldUtils.getBit(bitField, position), 0); } @Test public void test_2Bit() { int bitField = 0; int position = 2; Assert.assertEquals(BitFieldUtils.get2Bit(bitField, position), 0); bitField = set2Bit(bitField, position, true, false); Assert.assertEquals(BitFieldUtils.get2Bit(bitField, position), 1); bitField = set2Bit(bitField, position, false, true); Assert.assertEquals(BitFieldUtils.get2Bit(bitField, position), 2); bitField = set2Bit(bitField, position, true, true); Assert.assertEquals(BitFieldUtils.get2Bit(bitField, position), 3); bitField = -1; Assert.assertEquals(BitFieldUtils.get2Bit(bitField, position), 3); bitField = set2Bit(bitField, position, false, false); Assert.assertEquals(BitFieldUtils.get2Bit(bitField, position), 0); } private int set2Bit(int bitField, int position, boolean first, boolean second) { bitField = BitFieldUtils.setBit(bitField, position, first); bitField = BitFieldUtils.setBit(bitField, position+1, second); return bitField; } }