From 961e021ea528aea89129cab4289df4406b24e8b1 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Fri, 7 Aug 2015 14:36:08 +0200 Subject: Bitfield Unit Test: Add 3bit test-data; Add testing 'untouched' other bits of put32/get32 --- .../com/jogamp/common/util/TestBitfield00.java | 61 +++++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) (limited to 'src/junit') diff --git a/src/junit/com/jogamp/common/util/TestBitfield00.java b/src/junit/com/jogamp/common/util/TestBitfield00.java index bb8ca37..9ace743 100644 --- a/src/junit/com/jogamp/common/util/TestBitfield00.java +++ b/src/junit/com/jogamp/common/util/TestBitfield00.java @@ -95,7 +95,7 @@ public class TestBitfield00 extends SingletonJunitCase { final int val0 = (int)l; final int oneBitCountI = Integer.bitCount(val0); final int oneBitCount1 = Bitfield.Util.bitCount(val0); - final String msg = String.format("Round 0x%08x, c %d / %d / %d%n", val0, + final String msg = String.format("Round 0x%08x, c %d / %d / %d", val0, oneBitCountL, oneBitCountI, oneBitCount1); Assert.assertEquals(msg, oneBitCountI, oneBitCountL); Assert.assertEquals(msg, oneBitCountI, oneBitCount1); @@ -124,7 +124,7 @@ public class TestBitfield00 extends SingletonJunitCase { static void test_BitCount32_Data(final int i, final int expOneBits) { final int oneBitCountI = Integer.bitCount(i); final int oneBitCount1 = Bitfield.Util.bitCount(i); - final String msg = String.format("Round 0x%08x, c %d / %d%n", i, + final String msg = String.format("Round 0x%08x, c %d / %d", i, oneBitCountI, oneBitCount1); Assert.assertEquals(msg, oneBitCount1, expOneBits); Assert.assertEquals(msg, oneBitCountI, oneBitCount1); @@ -194,6 +194,11 @@ public class TestBitfield00 extends SingletonJunitCase { new TestDataBF(16, 0xDEAD, "1101111010101101"), new TestDataBF(16, 0xBEEF, "1011111011101111") }; + static TestDataBF[] testDataBF3Bit = { + new TestDataBF(3, 0x01, "001"), + new TestDataBF(3, 0x02, "010"), + new TestDataBF(3, 0x05, "101") + }; @Test public void test20_ValidateTestData() { @@ -203,6 +208,9 @@ public class TestBitfield00 extends SingletonJunitCase { for(int i=0; i>> 5); @@ -276,6 +287,9 @@ public class TestBitfield00 extends SingletonJunitCase { for(int i=0; i %d", + d.val, d.pattern, d.bitSize, bf.size(), oneBitCount, lowBitnum, maxBitpos); // // via put32 @@ -310,7 +327,7 @@ public class TestBitfield00 extends SingletonJunitCase { // // via copy32 // - if( bf.size()-d.bitSize > lowBitnum+1 ) { + if( lowBitnum < maxBitpos ) { // copy bits 1 forward // clear trailing orig bit Assert.assertEquals(msg, d.val, bf.copy32(lowBitnum, lowBitnum+1, d.bitSize)); @@ -341,7 +358,7 @@ public class TestBitfield00 extends SingletonJunitCase { // // via copy // - if( bf.size()-d.bitSize > lowBitnum+1 ) { + if( lowBitnum < maxBitpos ) { // copy bits 1 forward // clear trailing orig bit for(int i=d.bitSize-1; i>=0; i--) { @@ -374,6 +391,36 @@ public class TestBitfield00 extends SingletonJunitCase { } Assert.assertEquals(msg, oneBitCount, bf.bitCount()); assertEquals(bf, lowBitnum, d.val, d.pattern, oneBitCount); + + // + // Validate 'other bits' put32/get32 + // + bf.clearField(false); + bf.put32( lowBitnum, d.bitSize, d.val); + checkOtherBits(d, bf, lowBitnum, msg, 0); + + bf.clearField(true); + bf.put32( lowBitnum, d.bitSize, d.val); + checkOtherBits(d, bf, lowBitnum, msg, Bitfield.UNSIGNED_INT_MAX_VALUE); + } + + static void checkOtherBits(final TestDataBF d, final Bitfield bf, final int lowBitnum, final String msg, final int expBits) { + final int highBitnum = lowBitnum + d.bitSize - 1; + // System.err.println(msg+": [0"+".."+"("+lowBitnum+".."+highBitnum+").."+(bf.size()-1)+"]"); + for(int i=0; i, exp "+BitDemoData.toHexString(exp)); + Assert.assertEquals(msg+", bitpos "+i, exp, val); + } + for(int i=highBitnum+1; i, exp "+BitDemoData.toHexString(exp)); + Assert.assertEquals(msg+", bitpos "+i, exp, val); + } } public static void main(final String args[]) throws IOException { -- cgit v1.2.3