Can pass Java array into JavaScript preprocess
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 09 Dec 2013 21:03:25 +0100
branchpreprocess
changeset 34661a0d1cbb590
parent 345 6a82db9cf97e
child 347 d70b10e97a68
Can pass Java array into JavaScript
json-tck/src/main/java/net/java/html/js/tests/Bodies.java
json-tck/src/main/java/net/java/html/js/tests/JavaScriptBodyTest.java
     1.1 --- a/json-tck/src/main/java/net/java/html/js/tests/Bodies.java	Fri Dec 06 16:31:36 2013 +0100
     1.2 +++ b/json-tck/src/main/java/net/java/html/js/tests/Bodies.java	Mon Dec 09 21:03:25 2013 +0100
     1.3 @@ -51,4 +51,13 @@
     1.4          "return c.@net.java.html.js.tests.Sum::sum(II)(40, 2);"
     1.5      )
     1.6      public static native int sumIndirect(Sum c);
     1.7 +    
     1.8 +    @JavaScriptBody(args = { "arr", "index" }, body = "return arr[index];")
     1.9 +    public static native Object select(Object[] arr, int index);
    1.10 +
    1.11 +    @JavaScriptBody(args = { "arr" }, body = "return arr.length;")
    1.12 +    public static native int length(Object[] arr);
    1.13 +
    1.14 +    @JavaScriptBody(args = { "arr", "i", "value" }, body = "arr[i] = value;")
    1.15 +    public static native void modify(String[] arr, int i, String value);
    1.16  }
     2.1 --- a/json-tck/src/main/java/net/java/html/js/tests/JavaScriptBodyTest.java	Fri Dec 06 16:31:36 2013 +0100
     2.2 +++ b/json-tck/src/main/java/net/java/html/js/tests/JavaScriptBodyTest.java	Mon Dec 09 21:03:25 2013 +0100
     2.3 @@ -67,6 +67,32 @@
     2.4          int res = Bodies.sumIndirect(new Sum());
     2.5          assert res == 42 : "Expecting 42";
     2.6      }
     2.7 +    
     2.8 +    @KOTest public void selectFromJavaArray() {
     2.9 +        String[] arr = { "Ahoj", "World" };
    2.10 +        Object res = Bodies.select(arr, 1);
    2.11 +        assert "World".equals(res) : "Expecting World, but was: " + res;
    2.12 +    }
    2.13 +
    2.14 +    @KOTest public void lengthOfJavaArray() {
    2.15 +        String[] arr = { "Ahoj", "World" };
    2.16 +        int res = Bodies.length(arr);
    2.17 +        assert res == 2 : "Expecting 2, but was: " + res;
    2.18 +    }
    2.19 +
    2.20 +    @KOTest public void javaArrayInOut() {
    2.21 +        String[] arr = { "Ahoj", "World" };
    2.22 +        Object res = Bodies.id(arr);
    2.23 +        assert res == arr : "Expecting same array, but was: " + res;
    2.24 +    }
    2.25 +
    2.26 +//  Modifying an array is a complex operation in the bridge:    
    2.27 +//    
    2.28 +//    @KOTest public void modifyJavaArray() {
    2.29 +//        String[] arr = { "Ahoj", "World" };
    2.30 +//        Bodies.modify(arr, 0, "Hello");
    2.31 +//        assert "Hello".equals(arr[0]) : "Expecting World, but was: " + arr[0];
    2.32 +//    }
    2.33  
    2.34      private static class R implements Runnable {
    2.35          int cnt;