diff options
author | Sven Gothel <[email protected]> | 2014-06-17 23:05:42 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-06-17 23:05:42 +0200 |
commit | 9843e983a4fc71a64eb3de9cb364a1f4ffa56b3a (patch) | |
tree | bfa478ad7212ab48dab38fd7fb9fb1a39a560c8d /src/junit/com | |
parent | f4e753ff1f39be381307ffdb0fb6bb7a2d323eff (diff) |
Fix commit f4e753ff1f39be381307ffdb0fb6bb7a2d323eff: 'compound array call-by-value' JavaMethodBindingEmitter, array may still require NIO handling, also consider NIO array length.
Diffstat (limited to 'src/junit/com')
3 files changed, 121 insertions, 50 deletions
diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java b/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java index 900d959..cc00373 100644 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/BaseClass.java @@ -909,9 +909,30 @@ public class BaseClass extends JunitTracer { } } - private void dumpDim(final String pre, final TK_Dimension dim) { + private static void dumpDim(final String pre, final TK_Dimension dim) { System.err.println(pre+dim.getX()+"/"+dim.getY()+" "+dim.getWidth()+"x"+dim.getHeight()); } + private static void assertDim(final String pre, + final int expX, final int expY, final int expWidth, final int expHeight, + final TK_Dimension hasDim) { + dumpDim(pre, hasDim); + Assert.assertEquals(expX, hasDim.getX()); + Assert.assertEquals(expY, hasDim.getY()); + Assert.assertEquals(expWidth, hasDim.getWidth()); + Assert.assertEquals(expHeight, hasDim.getHeight()); + } + private static void dumpDim(final String pre, final int[] pos, final int size[]) { + System.err.println(pre+pos[0]+"/"+pos[1]+" "+size[0]+"x"+size[1]); + } + private static void assertDim(final String pre, + final int expX, final int expY, final int expWidth, final int expHeight, + final int[] pos, final int size[]) { + dumpDim(pre, pos, size); + Assert.assertEquals(expX, pos[0]); + Assert.assertEquals(expY, pos[1]); + Assert.assertEquals(expWidth, size[0]); + Assert.assertEquals(expHeight, size[1]); + } /** Test compound access call-by-reference */ public void chapter10TestCompoundCallByReference(Bindingtest1 binding) throws Exception { @@ -973,67 +994,78 @@ public class BaseClass extends JunitTracer { { final TK_Surface surface = binding.createSurface(); final TK_Dimension dim0 = surface.getBounds(); - dumpDim("ch11.0: ref-dim ", dim0); - Assert.assertEquals(0x11111111, dim0.getX()); - Assert.assertEquals(0x22222222, dim0.getY()); - Assert.assertEquals(0x33333333, dim0.getWidth()); - Assert.assertEquals(0x44444444, dim0.getHeight()); + assertDim("ch11.0: ref-dim ", 0x11111111, 0x22222222, 0x33333333, 0x44444444, dim0); final TK_Dimension dim1 = binding.getSurfaceBoundsValue(surface); - dumpDim("ch11.0: val-dim ", dim1); - Assert.assertEquals(0x11111111, dim1.getX()); - Assert.assertEquals(0x22222222, dim1.getY()); - Assert.assertEquals(0x33333333, dim1.getWidth()); - Assert.assertEquals(0x44444444, dim1.getHeight()); + assertDim("ch11.0: val-dim ", 0x11111111, 0x22222222, 0x33333333, 0x44444444, dim1); binding.destroySurface(surface); } - final TK_Dimension dim0 = binding.getBoundsValue(11, 22, 33, 44); { - dumpDim("ch11.1: val-dim ", dim0); - Assert.assertEquals(11, dim0.getX()); - Assert.assertEquals(22, dim0.getY()); - Assert.assertEquals(33, dim0.getWidth()); - Assert.assertEquals(44, dim0.getHeight()); + final TK_Dimension dim0 = binding.getBoundsValue(11, 22, 33, 44); + assertDim("ch11.1: val-dim ", 11, 22, 33, 44, dim0); + final TK_Surface surface = binding.getSurfaceValue(dim0); + final TK_Dimension dim1 = binding.getSurfaceBoundsValue(surface); + assertDim("ch11.2: val-dim ", 11, 22, 33, 44, dim1); + final boolean sameInstanceByVal = binding.isSameInstanceByVal(dim0, dim1); + final boolean sameInstanceByRef = binding.isSameInstanceByRef(dim0, dim1); + System.err.println("ch11.3: sameInstanceByVal "+sameInstanceByVal); + System.err.println("ch11.3: sameInstanceByRef "+sameInstanceByRef); + Assert.assertFalse(sameInstanceByVal); + Assert.assertFalse(sameInstanceByRef); + } + { + final TK_Dimension dim1 = binding.getBoundsValue(11, 22, 33, 44); + final TK_Dimension dim2 = binding.getBoundsValue(1, 2, 3, 4); + final TK_Dimension[] sumands = { dim1, dim2 }; + final TK_Dimension dimSum = binding.addDimensions(sumands); + assertDim("ch11.4: sum-dim ", 11+1, 22+2, 33+3, 44+4, dimSum); + binding.zeroDimensions(sumands); + assertDim("ch11.5: zero-dim[0] ", 0, 0, 0, 0, sumands[0]); + assertDim("ch11.5: zero-dim[1] ", 0, 0, 0, 0, sumands[1]); + } + { + final TK_Dimension dim0 = binding.getBoundsValue(0, 0, 0, 0); + final TK_Dimension[] dim0A = { dim0 }; + binding.copyPrimToDimensions(new int[] { 11, 22}, 0, new int[] { 100, 200}, 0, dim0A); + assertDim("ch11.6: copyPrim2Dim ", 11, 22, 100, 200, dim0); + final int[] pos = { 0, 0 }; + final int[] size = { 0, 0 }; + binding.copyDimensionsToPrim(dim0, pos, 0, size, 0); + assertDim("ch11.7: copyDim2Prim ", 11, 22, 100, 200, pos, size); } - final TK_Surface surface = binding.getSurfaceValue(dim0); - final TK_Dimension dim1 = binding.getSurfaceBoundsValue(surface); { - dumpDim("ch11.2: val-dim ", dim0); - Assert.assertEquals(11, dim1.getX()); - Assert.assertEquals(22, dim1.getY()); - Assert.assertEquals(33, dim1.getWidth()); - Assert.assertEquals(44, dim1.getHeight()); + final int expRGBAi = 0x112233aa; + final byte[] expRGBAb = { (byte)0xaa, 0x33, 0x22, 0x11 }; + final int hasRGBAi = binding.rgbaToInt(expRGBAb, 0); + System.err.println("ch11.8: expRGBAb 0x"+ + Integer.toHexString(expRGBAb[3])+", 0x"+ + Integer.toHexString(expRGBAb[2])+", 0x"+ + Integer.toHexString(expRGBAb[1])+", 0x"+ + Integer.toHexString(expRGBAb[0]) ); + System.err.println("ch11.8: hasRGBAi 0x"+Integer.toHexString(hasRGBAi)); + Assert.assertEquals(expRGBAi, hasRGBAi); + + final byte[] hasRGBAb = new byte[] { 0, 0, 0, 0 }; + binding.intToRgba(hasRGBAi, hasRGBAb, 0); + System.err.println("ch11.9: hasRGBAb 0x"+ + Integer.toHexString(hasRGBAb[3])+", 0x"+ + Integer.toHexString(hasRGBAb[2])+", 0x"+ + Integer.toHexString(hasRGBAb[1])+", 0x"+ + Integer.toHexString(hasRGBAb[0]) ); + Assert.assertArrayEquals(expRGBAb, hasRGBAb); } - final boolean sameInstanceByVal = binding.isSameInstanceByVal(dim0, dim1); - final boolean sameInstanceByRef = binding.isSameInstanceByRef(dim0, dim1); - System.err.println("ch11.3: sameInstanceByVal "+sameInstanceByVal); - System.err.println("ch11.3: sameInstanceByRef "+sameInstanceByRef); - Assert.assertFalse(sameInstanceByVal); - Assert.assertFalse(sameInstanceByRef); - - final TK_Dimension dim2 = binding.getBoundsValue(1, 2, 3, 4); - final TK_Dimension[] sumands = { dim1, dim2 }; - final TK_Dimension dimSum = binding.addDimensions(sumands); { - dumpDim("ch11.4: sum-dim ", dimSum); - Assert.assertEquals(11+1, dimSum.getX()); - Assert.assertEquals(22+2, dimSum.getY()); - Assert.assertEquals(33+3, dimSum.getWidth()); - Assert.assertEquals(44+4, dimSum.getHeight()); + final int[] result = { 0 }; + binding.addInt(new int[] { 1, 2}, 0, result, 0); + System.err.println("ch11.10: addInt "+result[0]); + Assert.assertEquals(3, result[0]); } - binding.zeroDimensions(sumands); { - dumpDim("ch11.5: zero-dim[0] ", sumands[0]); - dumpDim("ch11.5: zero-dim[1] ", sumands[1]); - Assert.assertEquals(0, sumands[0].getX()); - Assert.assertEquals(0, sumands[0].getY()); - Assert.assertEquals(0, sumands[0].getWidth()); - Assert.assertEquals(0, sumands[0].getHeight()); - Assert.assertEquals(0, sumands[1].getX()); - Assert.assertEquals(0, sumands[1].getY()); - Assert.assertEquals(0, sumands[1].getWidth()); - Assert.assertEquals(0, sumands[1].getHeight()); + final byte[] result = { 0 }; + binding.addByte(new byte[] { 1, 2}, 0, result, 0); + System.err.println("ch11.11: addByte "+result[0]); + Assert.assertEquals(3, result[0]); } } } diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c b/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c index ca24444..7581d20 100644 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/test1.c @@ -543,3 +543,35 @@ MYAPI void MYAPIENTRY zeroDimensions(TK_Dimension s[2]) { s[1].width = 0; s[1].height = 0; } + +MYAPI void MYAPIENTRY copyPrimToDimensions(const int pos[2], const int size[2], TK_Dimension dest[1]) { + dest[0].x = pos[0]; + dest[0].y = pos[1]; + dest[0].width = size[0]; + dest[0].height = size[1]; +} +MYAPI void MYAPIENTRY copyDimensionsToPrim(TK_Dimension dim, int dpos[2], int dsize[2]) { + dpos[0] = dim.x; + dpos[1] = dim.y; + dsize[0] = dim.width; + dsize[1] = dim.height; +} +MYAPI int MYAPIENTRY rgbaToInt(const char rgba[4]) { + return ((unsigned int)rgba[3] & 0xffU) << 24 | + ((unsigned int)rgba[2] & 0xffU) << 16 | + ((unsigned int)rgba[1] & 0xffU) << 8 | + ((unsigned int)rgba[0] & 0xffU); +} +MYAPI void MYAPIENTRY intToRgba(int irgba, char rgbaSink[4]) { + rgbaSink[0] = (char) ( (irgba ) & 0xff ); + rgbaSink[1] = (char) ( (irgba >> 8 ) & 0xff ); + rgbaSink[2] = (char) ( (irgba >> 16 ) & 0xff ); + rgbaSink[3] = (char) ( (irgba >> 24 ) & 0xff ); +} +MYAPI void MYAPIENTRY addInt(const int summands[2], int result[1]) { + result[0] = summands[0] + summands[1]; +} +MYAPI void MYAPIENTRY addByte(const char summands[2], char result[1]) { + result[0] = summands[0] + summands[1]; +} + diff --git a/src/junit/com/jogamp/gluegen/test/junit/generation/test1.h b/src/junit/com/jogamp/gluegen/test/junit/generation/test1.h index a487f7a..dcf5cfc 100644 --- a/src/junit/com/jogamp/gluegen/test/junit/generation/test1.h +++ b/src/junit/com/jogamp/gluegen/test/junit/generation/test1.h @@ -253,3 +253,10 @@ MYAPI Bool MYAPIENTRY isSameInstanceByRef(const TK_Dimension *s1, const TK_Dimen MYAPI TK_Dimension MYAPIENTRY addDimensions(const TK_Dimension s[2]); MYAPI void MYAPIENTRY zeroDimensions(TK_Dimension s[2]); +MYAPI void MYAPIENTRY copyPrimToDimensions(const int pos[2], const int size[2], TK_Dimension dest[1]); +MYAPI void MYAPIENTRY copyDimensionsToPrim(TK_Dimension dim, int dpos[2], int dsize[2]); +MYAPI int MYAPIENTRY rgbaToInt(const char rgba[4]); +MYAPI void MYAPIENTRY intToRgba(int irgba, char rgbaSink[4]); +MYAPI void MYAPIENTRY addInt(const int summands[2], int result[1]); +MYAPI void MYAPIENTRY addByte(const char summands[2], char result[1]); + |