diff --git a/core/src/test/org/jnode/test/CoreTestSuite.java b/core/src/test/org/jnode/test/CoreTestSuite.java index f56f5066e..bf42e17db 100644 --- a/core/src/test/org/jnode/test/CoreTestSuite.java +++ b/core/src/test/org/jnode/test/CoreTestSuite.java @@ -35,6 +35,7 @@ @SuiteClasses({ NumberUtilsTest.class, VersionTest.class, + SignatureTest.class, } ) public class CoreTestSuite { diff --git a/core/src/test/org/jnode/test/SignatureTest.java b/core/src/test/org/jnode/test/SignatureTest.java index 74e085dd6..62bb5eab2 100644 --- a/core/src/test/org/jnode/test/SignatureTest.java +++ b/core/src/test/org/jnode/test/SignatureTest.java @@ -21,6 +21,7 @@ package org.jnode.test; import org.jnode.vm.classmgr.Signature; +import org.jnode.vm.facade.TypeSizeInfo; import org.junit.Assert; import org.junit.Test; @@ -46,4 +47,46 @@ public void testSignatureCharArray() { String res = Signature.toSignature(char[].class); Assert.assertEquals("[C", res); } + + @Test + public void testToSignaturePrimitives() { + Assert.assertEquals("Z", Signature.toSignature(Boolean.TYPE)); + Assert.assertEquals("B", Signature.toSignature(Byte.TYPE)); + Assert.assertEquals("C", Signature.toSignature(Character.TYPE)); + Assert.assertEquals("S", Signature.toSignature(Short.TYPE)); + Assert.assertEquals("I", Signature.toSignature(Integer.TYPE)); + Assert.assertEquals("J", Signature.toSignature(Long.TYPE)); + Assert.assertEquals("F", Signature.toSignature(Float.TYPE)); + Assert.assertEquals("D", Signature.toSignature(Double.TYPE)); + Assert.assertEquals("V", Signature.toSignature(Void.TYPE)); + } + + @Test + public void testToSignatureArrays() { + Assert.assertEquals("[Z", Signature.toSignature(boolean[].class)); + Assert.assertEquals("[[I", Signature.toSignature(int[][].class)); + Assert.assertEquals("[Ljava/lang/String;", Signature.toSignature(String[].class)); + } + + @Test + public void testToSignatureMethod() { + Assert.assertEquals("()V", Signature.toSignature(Void.TYPE, new Class[0])); + Assert.assertEquals("(I)V", Signature.toSignature(Void.TYPE, new Class[]{Integer.TYPE})); + Assert.assertEquals("(II)I", Signature.toSignature(Integer.TYPE, new Class[]{Integer.TYPE, Integer.TYPE})); + Assert.assertEquals("(Ljava/lang/String;I)Ljava/lang/Object;", + Signature.toSignature(Object.class, new Class[]{String.class, Integer.TYPE})); + } + + @Test + public void testGetArgSlotCount() { + TypeSizeInfo typeSizeInfo = new TypeSizeInfo(1, 1, 2, 2, 1); + Assert.assertEquals(0, Signature.getArgSlotCount(typeSizeInfo, "()V")); + Assert.assertEquals(1, Signature.getArgSlotCount(typeSizeInfo, "(I)V")); + Assert.assertEquals(2, Signature.getArgSlotCount(typeSizeInfo, "(II)V")); + Assert.assertEquals(2, Signature.getArgSlotCount(typeSizeInfo, "(J)V")); + Assert.assertEquals(2, Signature.getArgSlotCount(typeSizeInfo, "(D)V")); + Assert.assertEquals(3, Signature.getArgSlotCount(typeSizeInfo, "(IJ)V")); + Assert.assertEquals(1, Signature.getArgSlotCount(typeSizeInfo, "(Ljava/lang/Object;)V")); + Assert.assertEquals(1, Signature.getArgSlotCount(typeSizeInfo, "([I)V")); + } }