diff options
Diffstat (limited to 'src/junit/com/jogamp/common/nio')
3 files changed, 121 insertions, 1 deletions
diff --git a/src/junit/com/jogamp/common/nio/BuffersTest.java b/src/junit/com/jogamp/common/nio/BuffersTest.java index 0b72cd4..836e46d 100644 --- a/src/junit/com/jogamp/common/nio/BuffersTest.java +++ b/src/junit/com/jogamp/common/nio/BuffersTest.java @@ -43,14 +43,45 @@ public class BuffersTest { @Test public void slice() { + IntBuffer buffer = Buffers.newDirectIntBuffer(6); buffer.put(new int[]{1,2,3,4,5,6}).rewind(); - IntBuffer threefour = (IntBuffer)Buffers.slice(buffer, 2, 2); + IntBuffer threefour = Buffers.slice(buffer, 2, 2); assertEquals(3, threefour.get(0)); assertEquals(4, threefour.get(1)); assertEquals(2, threefour.capacity()); + + assertEquals(0, buffer.position()); + assertEquals(6, buffer.limit()); + + IntBuffer fourfivesix = Buffers.slice(buffer, 3, 3); + + assertEquals(4, fourfivesix.get(0)); + assertEquals(5, fourfivesix.get(1)); + assertEquals(6, fourfivesix.get(2)); + assertEquals(3, fourfivesix.capacity()); + + assertEquals(0, buffer.position()); + assertEquals(6, buffer.limit()); + + IntBuffer onetwothree = Buffers.slice(buffer, 0, 3); + + assertEquals(1, onetwothree.get(0)); + assertEquals(2, onetwothree.get(1)); + assertEquals(3, onetwothree.get(2)); + assertEquals(3, onetwothree.capacity()); + + assertEquals(0, buffer.position()); + assertEquals(6, buffer.limit()); + + // is it really sliced? + buffer.put(2, 42); + + assertEquals(42, buffer.get(2)); + assertEquals(42, onetwothree.get(2)); + } diff --git a/src/junit/com/jogamp/common/nio/TestPointerBufferEndian.java b/src/junit/com/jogamp/common/nio/TestPointerBufferEndian.java new file mode 100644 index 0000000..da232a2 --- /dev/null +++ b/src/junit/com/jogamp/common/nio/TestPointerBufferEndian.java @@ -0,0 +1,48 @@ + +package com.jogamp.common.nio; + +import com.jogamp.common.os.*; + +import org.junit.Assert; +import org.junit.Test; + +import static java.lang.System.*; + +public class TestPointerBufferEndian { + + protected void testImpl (boolean direct) { + int bitsPtr = Platform.getPointerSizeInBits(); + String bitsProp = System.getProperty("sun.arch.data.model"); + String os = System.getProperty("os.name"); + String cpu = System.getProperty("os.arch"); + out.println("OS: <"+os+"> CPU: <"+cpu+"> Bits: <"+bitsPtr+"/"+bitsProp+">"); + out.println("CPU is: "+ (Platform.is32Bit()?"32":"64") + " bit"); + out.println("Buffer is in: "+ (Platform.isLittleEndian()?"little":"big") + " endian"); + + long[] valuesSource = { 0x0123456789ABCDEFL, 0x8877665544332211L, 0xAFFEDEADBEEFAFFEL }; + long[] values32Bit = { 0x0000000089ABCDEFL, 0x0000000044332211L, 0x00000000BEEFAFFEL }; + + PointerBuffer ptr = direct ? PointerBuffer.allocateDirect(3) : PointerBuffer.allocate(valuesSource.length); + ptr.put(valuesSource, 0, valuesSource.length); + ptr.rewind(); + + int i=0; + while(ptr.hasRemaining()) { + long v = ptr.get() ; + long t = Platform.is32Bit() ? values32Bit[i] : valuesSource[i]; + Assert.assertTrue("Value["+i+"] shall be 0x"+Long.toHexString(t)+", is: 0x"+Long.toHexString(v), t == v); + i++; + } + Assert.assertTrue("iterator "+i+" != "+valuesSource.length, i==valuesSource.length); + } + + @Test + public void testDirect () { + testImpl (true); + } + + @Test + public void testIndirect () { + testImpl (false); + } +} diff --git a/src/junit/com/jogamp/common/nio/TestStructAccessorEndian.java b/src/junit/com/jogamp/common/nio/TestStructAccessorEndian.java new file mode 100644 index 0000000..09781ec --- /dev/null +++ b/src/junit/com/jogamp/common/nio/TestStructAccessorEndian.java @@ -0,0 +1,41 @@ +package com.jogamp.common.nio; + +import com.jogamp.common.nio.*; +import com.jogamp.common.os.*; + +import java.nio.*; + +import org.junit.Assert; +import org.junit.Test; + +import static java.lang.System.*; + +public class TestStructAccessorEndian { + + @Test + public void testStructAccessorEndian1 () { + int bitsPtr = Platform.getPointerSizeInBits(); + String bitsProp = System.getProperty("sun.arch.data.model"); + String os = System.getProperty("os.name"); + String cpu = System.getProperty("os.arch"); + out.println("OS: <"+os+"> CPU: <"+cpu+"> Bits: <"+bitsPtr+"/"+bitsProp+">"); + out.println("CPU is: "+ (Platform.is32Bit()?"32":"64") + " bit"); + out.println("Buffer is in: "+ (Platform.isLittleEndian()?"little":"big") + " endian"); + + long[] valuesSource = { 0x0123456789ABCDEFL, 0x8877665544332211L, 0xAFFEDEADBEEFAFFEL }; + ByteBuffer tst = Buffers.newDirectByteBuffer(Buffers.SIZEOF_LONG * valuesSource.length); + StructAccessor acc = new StructAccessor(tst); + + int i; + + for(i=0; i<valuesSource.length; i++) { + acc.setLongAt(i, valuesSource[i]); + } + + for(i=0; i<valuesSource.length; i++) { + long v = acc.getLongAt(i); + long t = valuesSource[i]; + Assert.assertTrue("Value["+i+"] shall be 0x"+Long.toHexString(t)+", is: 0x"+Long.toHexString(v), t == v); + } + } +} |