Signed-off-by: Vegard Nossum <vegard.nos...@gmail.com>
---
 Makefile                      |    1 +
 regression/jvm/CloneTest.java |   64 +++++++++++++++++++++++++++++++++++++++++
 regression/run-suite.sh       |    1 +
 3 files changed, 66 insertions(+), 0 deletions(-)
 create mode 100644 regression/jvm/CloneTest.java

diff --git a/Makefile b/Makefile
index 3db3210..1dd388f 100644
--- a/Makefile
+++ b/Makefile
@@ -216,6 +216,7 @@ REGRESSION_TEST_SUITE_CLASSES = \
        regression/jvm/ArrayTest.class \
        regression/jvm/BranchTest.class \
        regression/jvm/ClassExceptionsTest.class \
+       regression/jvm/CloneTest.class \
        regression/jvm/ControlTransferTest.class \
        regression/jvm/ConversionTest.class \
        regression/jvm/ExceptionsTest.class \
diff --git a/regression/jvm/CloneTest.java b/regression/jvm/CloneTest.java
new file mode 100644
index 0000000..53ce002
--- /dev/null
+++ b/regression/jvm/CloneTest.java
@@ -0,0 +1,64 @@
+package jvm;
+
+public class CloneTest extends TestCase {
+    public static class X implements Cloneable {
+        int x;
+        int y;
+
+        public Object clone() throws CloneNotSupportedException {
+            return super.clone();
+        }
+    }
+
+    private static void cloneObjectTest() throws Exception {
+        X x = new X();
+        x.x = 1;
+        x.y = 2;
+
+        X y = (X) x.clone();
+        assertEquals(y.x, 1);
+        assertEquals(y.y, 2);
+    }
+
+    private static void clonePrimitiveArrayTest() throws Exception {
+        int[] x = new int[10];
+
+        for (int i = 0; i < x.length; ++i)
+            x[i] = i;
+
+        int[] y = (int[]) x.clone();
+
+        for (int i = 0; i < x.length; ++i)
+            assertEquals(y[i], i);
+
+        y[0]++;
+        assertFalse(x[0] == y[0]);
+    }
+
+    private static void cloneObjectArrayTest() throws Exception {
+        X[] x = new X[10];
+
+        for (int i = 0; i < x.length; ++i) {
+            x[i] = new X();
+            x[i].x = i;
+            x[i].y = 2 * i;
+        }
+
+        X[] y = (X[]) x.clone();
+
+        for (int i = 0; i < x.length; ++i) {
+            assertEquals(y[i].x, i);
+            assertEquals(y[i].y, 2 * i);
+        }
+
+        y[0] = new X();
+        assertFalse(x[0] == y[0]);
+    }
+
+    public static void main(String[] args) throws Exception {
+        cloneObjectTest();
+        clonePrimitiveArrayTest();
+        cloneObjectArrayTest();
+        exit();
+    }
+}
diff --git a/regression/run-suite.sh b/regression/run-suite.sh
index ad9d886..ce10cde 100755
--- a/regression/run-suite.sh
+++ b/regression/run-suite.sh
@@ -56,6 +56,7 @@ if [ -z "$CLASS_LIST" ]; then
     run_java jvm.ArrayTest 0
     run_java jvm.BranchTest 0
     run_java jvm.ClassExceptionsTest 0
+    run_java jvm.CloneTest 0
     run_java jvm.ControlTransferTest 0
     run_java jvm.ConversionTest 0
     run_java jvm.ExceptionsTest 0
-- 
1.6.0.4


------------------------------------------------------------------------------
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to