1.1 --- a/emul/src/main/java/java/lang/reflect/Method.java Thu Jan 03 11:13:40 2013 +0100
1.2 +++ b/emul/src/main/java/java/lang/reflect/Method.java Thu Jan 03 11:20:40 2013 +0100
1.3 @@ -148,6 +148,7 @@
1.4 case 'B': return Byte.TYPE;
1.5 case 'Z': return Boolean.TYPE;
1.6 case 'S': return Short.TYPE;
1.7 + case 's': return String.class;
1.8 // case 'V': return Void.TYPE;
1.9 case 'L': try {
1.10 int up = sig.indexOf("_2");
2.1 --- a/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Thu Jan 03 11:13:40 2013 +0100
2.2 +++ b/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Thu Jan 03 11:20:40 2013 +0100
2.3 @@ -99,7 +99,7 @@
2.4 String val = cd.stringValue(primitive, textual);
2.5 String attrType;
2.6 if (type == 's') {
2.7 - attrType = "Ljava_lang_String_2";
2.8 + attrType = "s";
2.9 if (textual) {
2.10 val = '"' + val + '"';
2.11 }
3.1 --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/JSLauncher.java Thu Jan 03 11:13:40 2013 +0100
3.2 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/JSLauncher.java Thu Jan 03 11:20:40 2013 +0100
3.3 @@ -49,7 +49,7 @@
3.4 try {
3.5 mi.result(code.invokeMethod(
3.6 console,
3.7 - "invoke__Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2",
3.8 + "invoke__sss",
3.9 mi.className, mi.methodName).toString(), null);
3.10 } catch (ScriptException | NoSuchMethodException ex) {
3.11 mi.result(null, ex);
4.1 --- a/launcher/src/main/resources/org/apidesign/bck2brwsr/launcher/harness.xhtml Thu Jan 03 11:13:40 2013 +0100
4.2 +++ b/launcher/src/main/resources/org/apidesign/bck2brwsr/launcher/harness.xhtml Thu Jan 03 11:20:40 2013 +0100
4.3 @@ -33,7 +33,7 @@
4.4 </textarea>
4.5
4.6 <script type="text/javascript">
4.7 - vm.loadClass('org.apidesign.bck2brwsr.launcher.Console').harness__VLjava_lang_String_2('$U/../data');
4.8 + vm.loadClass('org.apidesign.bck2brwsr.launcher.Console').harness__Vs('$U/../data');
4.9 </script>
4.10 </body>
4.11 </html>
5.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/Bck2Brwsr.java Thu Jan 03 11:13:40 2013 +0100
5.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/Bck2Brwsr.java Thu Jan 03 11:20:40 2013 +0100
5.3 @@ -28,7 +28,7 @@
5.4 * be used to bootstrap and load the virtual machine: <pre>
5.5 * var vm = bck2brwsr();
5.6 * var main = vm.loadClass('org.your.pkg.Main');
5.7 - * main.main__V_3Ljava_lang_String_2(null);
5.8 + * main.main__V_3s(null);
5.9 * </pre>
5.10 * In case one wants to initialize the virtual machine with ability to
5.11 * load classes lazily when needed, one can provide a loader function to
6.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Jan 03 11:13:40 2013 +0100
6.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Jan 03 11:20:40 2013 +0100
6.3 @@ -19,6 +19,7 @@
6.4
6.5 import java.io.IOException;
6.6 import java.io.InputStream;
6.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
6.8 import org.apidesign.javap.AnnotationParser;
6.9 import org.apidesign.javap.ClassData;
6.10 import org.apidesign.javap.FieldData;
6.11 @@ -1271,9 +1272,18 @@
6.12 default: sb.append(ch); break;
6.13 }
6.14 }
6.15 + final String strng = "Ljava_lang_String_2";
6.16 + for(;;) {
6.17 + int pos = sb.indexOf(strng);
6.18 + if (pos == -1) {
6.19 + break;
6.20 + }
6.21 + sb.delete(pos, pos + strng.length());
6.22 + sb.insert(pos, 's');
6.23 + }
6.24 return sb.toString();
6.25 }
6.26 -
6.27 +
6.28 private static String findMethodName(MethodData m, StringBuilder cnt) {
6.29 StringBuilder name = new StringBuilder();
6.30 if ("<init>".equals(m.getName())) { // NOI18N
7.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Thu Jan 03 11:13:40 2013 +0100
7.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Thu Jan 03 11:20:40 2013 +0100
7.3 @@ -117,12 +117,12 @@
7.4 + " var loader = {};\n"
7.5 + " loader.vm = vm;\n"
7.6 + " loader.loadClass = function(name) {\n"
7.7 - + " var attr = name.replace__Ljava_lang_String_2CC(name, '.','_');\n"
7.8 + + " var attr = name.replace__sCC(name, '.','_');\n"
7.9 + " var fn = vm[attr];\n"
7.10 + " if (fn) return fn(false);\n"
7.11 + " if (!args[0]) throw 'bck2brwsr initialized without loader function, cannot load ' + name;\n"
7.12 + " return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
7.13 - + " load___3Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2(loader, name, args);\n"
7.14 + + " load___3Ljava_lang_Object_2Ljava_lang_Object_2s_3Ljava_lang_Object_2(loader, name, args);\n"
7.15 + " }\n"
7.16 + " if (args[0]) vm.loadClass = loader.loadClass;\n"
7.17 + " return loader;\n"
8.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Thu Jan 03 11:13:40 2013 +0100
8.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Thu Jan 03 11:20:40 2013 +0100
8.3 @@ -86,7 +86,7 @@
8.4
8.5 /* possibly not needed:
8.6 @JavaScriptBody(args = {"loader", "n" }, body =
8.7 - "var cls = n.replace__Ljava_lang_String_2CC(n, '.','_').toString();" +
8.8 + "var cls = n.replace__sCC(n, '.','_').toString();" +
8.9 "loader.vm[cls] = true;\n"
8.10 )
8.11 private static native void beingDefined(Object loader, String name);
8.12 @@ -114,15 +114,15 @@
8.13
8.14 @JavaScriptBody(args = {"self", "n"},
8.15 body =
8.16 - "var cls = n.replace__Ljava_lang_String_2CC(n, '/','_').toString();"
8.17 - + "\nvar dot = n.replace__Ljava_lang_String_2CC(n,'/','.').toString();"
8.18 + "var cls = n.replace__sCC(n, '/','_').toString();"
8.19 + + "\nvar dot = n.replace__sCC(n,'/','.').toString();"
8.20 + "\nvar lazy = self.fld_lazy;"
8.21 + "\nvar loader = lazy.fld_loader;"
8.22 + "\nvar vm = loader.vm;"
8.23 + "\nif (vm[cls]) return false;"
8.24 + "\nvm[cls] = function() {"
8.25 + "\n var instance = arguments.length == 0 || arguments[0] === true;"
8.26 - + "\n return lazy.load__Ljava_lang_Object_2Ljava_lang_String_2Z(lazy, dot, instance);"
8.27 + + "\n return lazy.load__Ljava_lang_Object_2sZ(lazy, dot, instance);"
8.28 + "\n};"
8.29 + "\nreturn true;")
8.30 @Override
9.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ByteCodeToJavaScriptTest.java Thu Jan 03 11:13:40 2013 +0100
9.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ByteCodeToJavaScriptTest.java Thu Jan 03 11:20:40 2013 +0100
9.3 @@ -38,7 +38,7 @@
9.4 }, cnt, returnType);
9.5 assertEquals(cnt.toString(), "000", "No doubles or longs");
9.6 assertTrue(returnType[0] != 'V', "Returns string");
9.7 - assertEquals(ret, "replace__Ljava_lang_String_2Ljava_lang_String_2CC");
9.8 + assertEquals(ret, "replace__ssCC");
9.9 }
9.10
9.11 @Test
9.12 @@ -50,6 +50,17 @@
9.13 }, cnt, returnType);
9.14 assertEquals(cnt.toString(), "0", "No doubles or longs");
9.15 assertTrue(returnType[0] != 'V', "Returns string");
9.16 - assertEquals(ret, "toJavaScript__Ljava_lang_String_2_3B");
9.17 + assertEquals(ret, "toJavaScript__s_3B");
9.18 + }
9.19 + @Test
9.20 + public void manglingProblemWithInteger() {
9.21 + StringBuilder cnt = new StringBuilder();
9.22 + char[] returnType = { 'V' };
9.23 + String ret = ByteCodeToJavaScript.findMethodName(new String[] {
9.24 + "VMinVM", "toJavaScript", "(II)Ljava/lang/String;"
9.25 + }, cnt, returnType);
9.26 + assertEquals(cnt.toString(), "00", "No doubles or longs");
9.27 + assertTrue(returnType[0] != 'V', "Returns string");
9.28 + assertEquals(ret, "toJavaScript__sII");
9.29 }
9.30 }
10.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Thu Jan 03 11:13:40 2013 +0100
10.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Thu Jan 03 11:20:40 2013 +0100
10.3 @@ -48,25 +48,25 @@
10.4 assertEquals(Classes.classForInstance(), "java.io.IOException");
10.5 }
10.6 @Test public void jsInstanceName() throws Exception {
10.7 - assertExec("I/O name", Classes.class, "classForInstance__Ljava_lang_String_2", "java.io.IOException");
10.8 + assertExec("I/O name", Classes.class, "classForInstance__s", "java.io.IOException");
10.9 }
10.10 @Test public void javaName() throws Exception {
10.11 assertEquals(Classes.name(), "java.io.IOException");
10.12 }
10.13 @Test public void jsName() throws Exception {
10.14 - assertExec("I/O name", Classes.class, "name__Ljava_lang_String_2", "java.io.IOException");
10.15 + assertExec("I/O name", Classes.class, "name__s", "java.io.IOException");
10.16 }
10.17 @Test public void javaSimpleName() throws Exception {
10.18 assertEquals(Classes.simpleName(), "IOException");
10.19 }
10.20 @Test public void jsGetsSimpleName() throws Exception {
10.21 - assertExec("I/O simple name", Classes.class, "simpleName__Ljava_lang_String_2", "IOException");
10.22 + assertExec("I/O simple name", Classes.class, "simpleName__s", "IOException");
10.23 }
10.24 @Test public void javaCanonicalName() {
10.25 assertEquals(Classes.canonicalName(), "java.io.IOException");
10.26 }
10.27 @Test public void jsCanonicalName() throws Exception {
10.28 - assertExec("I/O simple name", Classes.class, "canonicalName__Ljava_lang_String_2", "java.io.IOException");
10.29 + assertExec("I/O simple name", Classes.class, "canonicalName__s", "java.io.IOException");
10.30 }
10.31 @Test public void javaNewInstance() throws Exception {
10.32 assertTrue(Classes.newInstance());
10.33 @@ -80,7 +80,7 @@
10.34 );
10.35 }
10.36 @Test public void jsNoNewInstance() throws Exception {
10.37 - assertExec("Check problems with new instance", Classes.class, "newInstanceNoPubConstructor__Ljava_lang_String_2",
10.38 + assertExec("Check problems with new instance", Classes.class, "newInstanceNoPubConstructor__s",
10.39 "java.lang.InstantiationException:java.lang.Float"
10.40 );
10.41 }
10.42 @@ -88,17 +88,17 @@
10.43 assertExec("Check class annotation", Classes.class, "getMarker__I", Double.valueOf(10));
10.44 }
10.45 @Test public void jsStringAnnotation() throws Exception {
10.46 - assertExec("Check class annotation", Classes.class, "getNamer__Ljava_lang_String_2Z", "my text", true);
10.47 + assertExec("Check class annotation", Classes.class, "getNamer__sZ", "my text", true);
10.48 }
10.49 @Test public void jsStringAnnotationFromArray() throws Exception {
10.50 - assertExec("Check class annotation", Classes.class, "getNamer__Ljava_lang_String_2Z", "my text", false);
10.51 + assertExec("Check class annotation", Classes.class, "getNamer__sZ", "my text", false);
10.52 }
10.53 @Test public void javaInvokeMethod() throws Exception {
10.54 assertEquals(Classes.reflectiveMethodCall(true, "name"), "java.io.IOException", "Calls the name() method via reflection");
10.55 }
10.56 @Test public void jsInvokeMethod() throws Exception {
10.57 assertExec("Calls the name() method via reflection", Classes.class,
10.58 - "reflectiveMethodCall__Ljava_lang_Object_2ZLjava_lang_String_2",
10.59 + "reflectiveMethodCall__Ljava_lang_Object_2Zs",
10.60 "java.io.IOException", true, "name"
10.61 );
10.62 }
10.63 @@ -107,19 +107,19 @@
10.64 }
10.65 @Test public void jsFindMethod() throws Exception {
10.66 assertExec("Calls the name() method via reflection", Classes.class,
10.67 - "reflectiveMethodCall__Ljava_lang_Object_2ZLjava_lang_String_2",
10.68 + "reflectiveMethodCall__Ljava_lang_Object_2Zs",
10.69 "java.io.IOException", false, "name"
10.70 );
10.71 }
10.72 @Test public void primitiveReturnType() throws Exception {
10.73 assertExec("Tries to get an integer via reflection", Classes.class,
10.74 - "primitiveType__Ljava_lang_String_2Ljava_lang_String_2",
10.75 + "primitiveType__ss",
10.76 Classes.primitiveType("primitive"), "primitive"
10.77 );
10.78 }
10.79 @Test public void primitiveBoolReturnType() throws Exception {
10.80 assertExec("Tries to get an integer via reflection", Classes.class,
10.81 - "primitiveType__Ljava_lang_String_2Ljava_lang_String_2",
10.82 + "primitiveType__ss",
10.83 Classes.primitiveType("primitiveB"), "primitiveB"
10.84 );
10.85 }
10.86 @@ -128,33 +128,33 @@
10.87 }
10.88 @Test public void jsAnnotatedMethod() throws Exception {
10.89 assertExec("Calls the name() method via reflection", Classes.class,
10.90 - "reflectiveMethodCall__Ljava_lang_Object_2ZLjava_lang_String_2",
10.91 + "reflectiveMethodCall__Ljava_lang_Object_2Zs",
10.92 "java.io.IOException", false, null
10.93 );
10.94 }
10.95 @Test public void jsClassParam() throws Exception {
10.96 assertExec("Calls the nameOfIO()", Classes.class,
10.97 - "nameOfIO__Ljava_lang_String_2",
10.98 + "nameOfIO__s",
10.99 "java.io.IOException"
10.100 );
10.101 }
10.102 @Test public void noInterface() throws Exception {
10.103 assertExec("Calls Class.isInterface", Classes.class,
10.104 - "isInterface__ZLjava_lang_String_2",
10.105 + "isInterface__Zs",
10.106 0.0, "java.lang.String"
10.107 );
10.108 }
10.109 /*
10.110 @Test public void isInterface() throws Exception {
10.111 assertExec("Calls Class.isInterface", Classes.class,
10.112 - "isInterface__ZLjava_lang_String_2",
10.113 + "isInterface__Zs",
10.114 1.0, "java.lang.Runnable"
10.115 );
10.116 }
10.117 */
10.118 @Test public void integerType() throws Exception {
10.119 assertExec("Computes the type", Classes.class,
10.120 - "intType__Ljava_lang_String_2",
10.121 + "intType__s",
10.122 Classes.intType()
10.123 );
10.124 }
11.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/ExceptionsTest.java Thu Jan 03 11:13:40 2013 +0100
11.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ExceptionsTest.java Thu Jan 03 11:20:40 2013 +0100
11.3 @@ -48,7 +48,7 @@
11.4
11.5 @Test public void createObject() throws Exception {
11.6 assertExec("Object created", Exceptions.class,
11.7 - "newInstance__Ljava_lang_String_2Ljava_lang_String_2",
11.8 + "newInstance__ss",
11.9 "java.lang.Object",
11.10 "java.lang.Object"
11.11 );
11.12 @@ -56,7 +56,7 @@
11.13
11.14 @Test public void createFloatFails() throws Exception {
11.15 assertExec("Float not created", Exceptions.class,
11.16 - "newInstance__Ljava_lang_String_2Ljava_lang_String_2",
11.17 + "newInstance__ss",
11.18 "java.lang.Float",
11.19 "java.lang.Float"
11.20 );
11.21 @@ -64,7 +64,7 @@
11.22
11.23 @Test public void createUnknownFails() throws Exception {
11.24 assertExec("Object created", Exceptions.class,
11.25 - "newInstance__Ljava_lang_String_2Ljava_lang_String_2",
11.26 + "newInstance__ss",
11.27 "CNFE:org.apidesign.Unknown",
11.28 "org.apidesign.Unknown"
11.29 );
11.30 @@ -74,7 +74,7 @@
11.31 Object vm = code.invokeFunction("bck2brwsr");
11.32 Object clazz = code.invokeMethod(vm, "loadClass", Exceptions.class.getName());
11.33
11.34 - String method = "readCounter__ILjava_lang_String_2";
11.35 + String method = "readCounter__Is";
11.36
11.37 try {
11.38 Object ret = code.invokeMethod(clazz, method, "org.apidesign.Unknown");
12.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Thu Jan 03 11:13:40 2013 +0100
12.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/NumberTest.java Thu Jan 03 11:20:40 2013 +0100
12.3 @@ -29,19 +29,19 @@
12.4 */
12.5 public class NumberTest {
12.6 @Test public void integerFromString() throws Exception {
12.7 - assertExec("Can convert string to integer", Integer.class, "parseInt__ILjava_lang_String_2",
12.8 + assertExec("Can convert string to integer", Integer.class, "parseInt__Is",
12.9 Double.valueOf(333), "333"
12.10 );
12.11 }
12.12
12.13 @Test public void doubleFromString() throws Exception {
12.14 - assertExec("Can convert string to double", Double.class, "parseDouble__DLjava_lang_String_2",
12.15 + assertExec("Can convert string to double", Double.class, "parseDouble__Ds",
12.16 Double.valueOf(33.3), "33.3"
12.17 );
12.18 }
12.19
12.20 @Test public void autoboxDouble() throws Exception {
12.21 - assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToString__Ljava_lang_String_2",
12.22 + assertExec("Autoboxing of doubles is OK", Numbers.class, "autoboxDblToString__s",
12.23 "3.3"
12.24 );
12.25 }
12.26 @@ -131,7 +131,7 @@
12.27 @Test public void fiveInStringJS() throws Exception {
12.28 String s = Numbers.intToString();
12.29 assertExec("Should be the same: " + s,
12.30 - Numbers.class, "intToString__Ljava_lang_String_2",
12.31 + Numbers.class, "intToString__s",
12.32 s
12.33 );
12.34 }
12.35 @@ -139,7 +139,7 @@
12.36 @Test public void sevenInStringJS() throws Exception {
12.37 String s = Numbers.floatToString();
12.38 assertExec("Should be the same: " + s,
12.39 - Numbers.class, "floatToString__Ljava_lang_String_2",
12.40 + Numbers.class, "floatToString__s",
12.41 s
12.42 );
12.43 }
13.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Thu Jan 03 11:13:40 2013 +0100
13.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StaticMethodTest.java Thu Jan 03 11:20:40 2013 +0100
13.3 @@ -201,7 +201,7 @@
13.4 @Test public void javaScriptBody() throws Exception {
13.5 assertExec(
13.6 "JavaScript string",
13.7 - StaticMethod.class, "i2s__Ljava_lang_String_2II",
13.8 + StaticMethod.class, "i2s__sII",
13.9 "333",
13.10 330, 3
13.11 );
13.12 @@ -210,7 +210,7 @@
13.13 @Test public void switchJarda() throws Exception {
13.14 assertExec(
13.15 "The expected value",
13.16 - StaticMethod.class, "swtch__Ljava_lang_String_2I",
13.17 + StaticMethod.class, "swtch__sI",
13.18 "Jarda",
13.19 0
13.20 );
13.21 @@ -219,7 +219,7 @@
13.22 @Test public void switchDarda() throws Exception {
13.23 assertExec(
13.24 "The expected value",
13.25 - StaticMethod.class, "swtch__Ljava_lang_String_2I",
13.26 + StaticMethod.class, "swtch__sI",
13.27 "Darda",
13.28 1
13.29 );
13.30 @@ -227,7 +227,7 @@
13.31 @Test public void switchParda() throws Exception {
13.32 assertExec(
13.33 "The expected value",
13.34 - StaticMethod.class, "swtch2__Ljava_lang_String_2I",
13.35 + StaticMethod.class, "swtch2__sI",
13.36 "Parda",
13.37 22
13.38 );
13.39 @@ -235,7 +235,7 @@
13.40 @Test public void switchMarda() throws Exception {
13.41 assertExec(
13.42 "The expected value",
13.43 - StaticMethod.class, "swtch__Ljava_lang_String_2I",
13.44 + StaticMethod.class, "swtch__sI",
13.45 "Marda",
13.46 -433
13.47 );
13.48 @@ -243,7 +243,7 @@
13.49
13.50 @Test public void checkNullCast() throws Exception {
13.51 assertExec("Null can be cast to any type",
13.52 - StaticMethod.class, "castNull__Ljava_lang_String_2Z",
13.53 + StaticMethod.class, "castNull__sZ",
13.54 null, true
13.55 );
13.56 }
14.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Thu Jan 03 11:13:40 2013 +0100
14.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Thu Jan 03 11:20:40 2013 +0100
14.3 @@ -97,6 +97,20 @@
14.4 return -1;
14.5 }
14.6
14.7 + public static String replaceWithS(String value) {
14.8 + StringBuilder sb = new StringBuilder(value);
14.9 + final String strng = "Ljava_lang_String_2";
14.10 + for (;;) {
14.11 + int pos = sb.indexOf(strng);
14.12 + if (pos == -1) {
14.13 + break;
14.14 + }
14.15 + sb.delete(pos, strng.length());
14.16 + sb.insert(pos, 's');
14.17 + }
14.18 + return sb.toString().toString();
14.19 + }
14.20 +
14.21 public static String toStringTest(int howMuch) {
14.22 counter = 0;
14.23 StringSample ss = null;
15.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Thu Jan 03 11:13:40 2013 +0100
15.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Thu Jan 03 11:20:40 2013 +0100
15.3 @@ -38,7 +38,7 @@
15.4 @Test public void fromChars() throws Exception {
15.5 assertExec(
15.6 "First char in Hello is ABC",
15.7 - StringSample.class, "fromChars__Ljava_lang_String_2CCC",
15.8 + StringSample.class, "fromChars__sCCC",
15.9 "ABC", 'A', 'B', 'C'
15.10 );
15.11 }
15.12 @@ -46,7 +46,7 @@
15.13 @Test public void concatChars() throws Exception {
15.14 assertExec(
15.15 "Composing yields ABC",
15.16 - StringSample.class, "chars__Ljava_lang_String_2CCC",
15.17 + StringSample.class, "chars__sCCC",
15.18 "ABC", 'A', 'B', 'C'
15.19 );
15.20 }
15.21 @@ -54,7 +54,7 @@
15.22 @Test public void concatCharsFromInts() throws Exception {
15.23 assertExec(
15.24 "Composing yields ABC",
15.25 - StringSample.class, "charsFromNumbers__Ljava_lang_String_2",
15.26 + StringSample.class, "charsFromNumbers__s",
15.27 "ABC"
15.28 );
15.29 }
15.30 @@ -62,7 +62,7 @@
15.31 @Test public void concatCharsFromChars() throws Exception {
15.32 assertExec(
15.33 "Composing yields ABC",
15.34 - StringSample.class, "charsFromChars__Ljava_lang_String_2",
15.35 + StringSample.class, "charsFromChars__s",
15.36 "ABC"
15.37 );
15.38 }
15.39 @@ -78,7 +78,7 @@
15.40 @Test(timeOut=10000) public void toStringConcatenation() throws Exception {
15.41 assertExec(
15.42 "Five executions should generate 5Hello World!",
15.43 - StringSample.class, "toStringTest__Ljava_lang_String_2I",
15.44 + StringSample.class, "toStringTest__sI",
15.45 "Hello World!5", 5
15.46 );
15.47 }
15.48 @@ -89,7 +89,7 @@
15.49 @Test(timeOut=10000) public void stringStringConcat() throws Exception {
15.50 assertExec(
15.51 "Composes strings OK",
15.52 - StringSample.class, "concatStrings__Ljava_lang_String_2",
15.53 + StringSample.class, "concatStrings__s",
15.54 "Hello World!1" + "\\\n\r\t"
15.55 );
15.56 }
15.57 @@ -104,14 +104,14 @@
15.58 @Test public void replaceChars() throws Exception {
15.59 assertExec(
15.60 "Can replace slashes by underscores",
15.61 - StringSample.class, "replace__Ljava_lang_String_2Ljava_lang_String_2CC",
15.62 + StringSample.class, "replace__ssCC",
15.63 "x_y_z", "x/y/z", '/', '_'
15.64 );
15.65 }
15.66 @Test public void replaceIntChars() throws Exception {
15.67 assertExec(
15.68 "Can replace slashes by underscores",
15.69 - StringSample.class, "replace__Ljava_lang_String_2Ljava_lang_String_2CC",
15.70 + StringSample.class, "replace__ssCC",
15.71 "x_y_z", "x/y/z", (int)'/', (int)'_'
15.72 );
15.73 }
15.74 @@ -119,7 +119,7 @@
15.75 @Test public void insertBuilder() throws Exception {
15.76 assertExec(
15.77 "Can insert something into a buffer?",
15.78 - StringSample.class, "insertBuffer__Ljava_lang_String_2",
15.79 + StringSample.class, "insertBuffer__s",
15.80 "Ahojdo!"
15.81 );
15.82 }
15.83 @@ -129,7 +129,7 @@
15.84 int jh = StringSample.hashCode(j);
15.85 assertExec(
15.86 "Hashcode is the same " +jh,
15.87 - StringSample.class, "hashCode__ILjava_lang_String_2",
15.88 + StringSample.class, "hashCode__Is",
15.89 Double.valueOf(jh), j
15.90 );
15.91 }
15.92 @@ -138,28 +138,28 @@
15.93 int jh = StringSample.hashCode(j);
15.94 assertExec(
15.95 "Hashcode is the same " + jh,
15.96 - StringSample.class, "hashCode__ILjava_lang_String_2",
15.97 + StringSample.class, "hashCode__Is",
15.98 Double.valueOf(jh), j
15.99 );
15.100 }
15.101 @Test public void stringSwitch1() throws Exception {
15.102 assertExec(
15.103 "Get one",
15.104 - StringSample.class, "stringSwitch__ILjava_lang_String_2",
15.105 + StringSample.class, "stringSwitch__Is",
15.106 Double.valueOf(1), "jedna"
15.107 );
15.108 }
15.109 @Test public void stringSwitch2() throws Exception {
15.110 assertExec(
15.111 "Get two",
15.112 - StringSample.class, "stringSwitch__ILjava_lang_String_2",
15.113 + StringSample.class, "stringSwitch__Is",
15.114 Double.valueOf(2), "dve"
15.115 );
15.116 }
15.117 @Test public void stringSwitchDefault() throws Exception {
15.118 assertExec(
15.119 "Get -1",
15.120 - StringSample.class, "stringSwitch__ILjava_lang_String_2",
15.121 + StringSample.class, "stringSwitch__Is",
15.122 Double.valueOf(-1), "none"
15.123 );
15.124 }
15.125 @@ -168,12 +168,22 @@
15.126 assertEquals(StringSample.countAB("Ahoj Bedo!"), 3, "Verify Java code is sane");
15.127 assertExec(
15.128 "One A and one B adds to 3",
15.129 - StringSample.class, "countAB__ILjava_lang_String_2",
15.130 + StringSample.class, "countAB__Is",
15.131 Double.valueOf(3), "Ahoj Bedo!"
15.132 );
15.133
15.134 }
15.135
15.136 + @Test public void replaceInSB() throws Exception {
15.137 + final String text = "Ljava_lang_String_2";
15.138 + String exp = StringSample.replaceWithS(text);
15.139 + assertExec(
15.140 + "Also replaces the text",
15.141 + StringSample.class, "replaceWithS__ss",
15.142 + exp, text
15.143 + );
15.144 + }
15.145 +
15.146 private static CharSequence codeSeq;
15.147 private static Invocable code;
15.148
16.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Thu Jan 03 11:13:40 2013 +0100
16.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Thu Jan 03 11:20:40 2013 +0100
16.3 @@ -59,7 +59,7 @@
16.4 try {
16.5 ret = code.invokeFunction("bck2brwsr");
16.6 ret = code.invokeMethod(ret, "loadClass", VMinVM.class.getName());
16.7 - ret = code.invokeMethod(ret, "toJavaScript__Ljava_lang_String_2_3B", arr);
16.8 + ret = code.invokeMethod(ret, "toJavaScript__s_3B", arr);
16.9 } catch (Exception ex) {
16.10 File f = File.createTempFile("execution", ".js");
16.11 FileWriter w = new FileWriter(f);