clarify licensing
[nestedvm.git] / src / tests / CallTest.java
index e0c9732..1d57bce 100644 (file)
@@ -1,7 +1,12 @@
+// Copyright 2000-2005 the Contributors, as shown in the revision logs.
+// Licensed under the Apache License 2.0 ("the License").
+// You may not use this file except in compliance with the License.
+
 package tests;
 
 import org.ibex.nestedvm.Runtime;
 import java.io.*;
 package tests;
 
 import org.ibex.nestedvm.Runtime;
 import java.io.*;
+import java.util.Date;
 
 public class CallTest {
     public static void main(String[] args) throws Exception {
 
 public class CallTest {
     public static void main(String[] args) throws Exception {
@@ -13,27 +18,28 @@ public class CallTest {
         int a6 = args.length > 5 ? Integer.parseInt(args[5]) : 0;
         
         System.out.println("Version is: " + System.getProperty("os.version"));
         int a6 = args.length > 5 ? Integer.parseInt(args[5]) : 0;
         
         System.out.println("Version is: " + System.getProperty("os.version"));
-        Runtime rt;
+        final Runtime rt;
         if(a1 == 99) // yeah.. this is ugly
             rt = new org.ibex.nestedvm.Interpreter("build/tests/Test.mips");
         else
         if(a1 == 99) // yeah.. this is ugly
             rt = new org.ibex.nestedvm.Interpreter("build/tests/Test.mips");
         else
-               //FIXME: Callback not subclass
-            rt = new Test() {
-                protected int callJava(int a, int b, int c, int d) {
+            rt = (Runtime) Class.forName("tests.Test").newInstance();
+               
+        rt.setCallJavaCB(new Runtime.CallJavaCB() {
+                public int call(int a, int b, int c, int d) {
                     switch(a) {
                     switch(a) {
-                        case 1: return strdup("OS: " + System.getProperty("os.name"));
-                        case 2: return strdup(System.getProperty("os.version"));
-                        case 3: return strdup(new Date().toString());
-                        case 4: return allocFDEnt(new OutputStreamFD(new CustomOS()));
+                        case 1: return rt.strdup("OS: " + System.getProperty("os.name"));
+                        case 2: return rt.strdup(System.getProperty("os.version"));
+                        case 3: return rt.strdup(new Date().toString());
+                        case 4: return rt.addFD(new Runtime.InputOutputStreamFD(null,new CustomOS()));
                         case 5:
                             System.out.println("In callJava() in Java"); 
                         case 5:
                             System.out.println("In callJava() in Java"); 
-                            try { call("backinmips"); } catch(CallException e) { }
+                            try { rt.call("backinmips"); } catch(Runtime.CallException e) { }
                             System.out.println("Back in callJava() in Java");
                             return 0;
                             System.out.println("Back in callJava() in Java");
                             return 0;
-                        default: return super.callJava(a,b,c,d);
+                        default: return 0;
                     }
                 }
                     }
                 }
-            };
+            });
         System.out.println("Runtime: " + rt);
         
         rt.start(new String[]{"Test","calltest"});
         System.out.println("Runtime: " + rt);
         
         rt.start(new String[]{"Test","calltest"});
@@ -41,12 +47,13 @@ public class CallTest {
         
         System.out.println("== Start of CallTest ==");
         System.out.println("Back in java... calling callme()");
         
         System.out.println("== Start of CallTest ==");
         System.out.println("Back in java... calling callme()");
-        int ret = rt.call("callme",a1,a2,a3,a4,a5,a6);
+        int ret = rt.call("callme",new int[]{a1,a2,a3,a4,a5,a6});
         System.out.println("callme returned: " + ret);
         
         int addr = rt.strdup("Hello, World from java");
         rt.call("echo",addr,4);
         rt.free(addr);
         System.out.println("callme returned: " + ret);
         
         int addr = rt.strdup("Hello, World from java");
         rt.call("echo",addr,4);
         rt.free(addr);
+        rt.call("echo",new Object[]{"Hello, World, from the Object[] call method",new Integer(2)});
         System.out.println("== End of CallTest ==");
         
         rt.execute();
         System.out.println("== End of CallTest ==");
         
         rt.execute();