# HG changeset patch # User Jaroslav Tulach # Date 1348811033 -7200 # Node ID 95330dd02c47fe441647606d29e64024e743edbf # Parent 7cfa9b56f88836150407ed0c63379d280ebc4e1a Implementation of two more methods for String - yet many are missing to make StringBuilder work diff -r 7cfa9b56f888 -r 95330dd02c47 vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java Fri Sep 28 07:27:34 2012 +0200 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java Fri Sep 28 07:43:53 2012 +0200 @@ -43,9 +43,14 @@ } String name = toProcess.getFirst(); processed.add(name); + if (name.startsWith("sun/")) { + continue; + } if (name.startsWith("java/") && !name.equals("java/lang/Object") && !name.equals("java/lang/String") + && !name.equals("java/lang/StringBuilder") + && !name.equals("java/lang/AbstractStringBuilder") ) { continue; } diff -r 7cfa9b56f888 -r 95330dd02c47 vm/src/main/resources/org/apidesign/vm4brwsr/emulation/java_lang_String.js --- a/vm/src/main/resources/org/apidesign/vm4brwsr/emulation/java_lang_String.js Fri Sep 28 07:27:34 2012 +0200 +++ b/vm/src/main/resources/org/apidesign/vm4brwsr/emulation/java_lang_String.js Fri Sep 28 07:43:53 2012 +0200 @@ -662,32 +662,6 @@ case 19: return; // 177 } } -function java_lang_String_lengthI(arg0) { - var arg1; -; - var stack = new Array(1); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().count); // 180 1 97 - case 4: return stack.pop(); // 172 - } -} -function java_lang_String_isEmptyZ(arg0) { - var arg1; -; - var stack = new Array(1); - var gt = 0; - for(;;) switch(gt) { - case 0: stack.push(arg0); // 42 - case 1: stack.push(stack.pop().count); // 180 1 97 - case 4: if (stack.pop() != 0) { gt = 11; continue; } // 154 0 7 - case 7: stack.push(1); // 4 - case 8: gt = 12; continue; // 167 0 4 - case 11: stack.push(0); // 3 - case 12: return stack.pop(); // 172 - } -} */ String.prototype._toJS = function (self) { return self; }; @@ -695,6 +669,13 @@ function java_lang_String_charAtCI(arg0,arg1) { return arg0._toJS(arg0).charAt(arg1); } +function java_lang_String_lengthI(arg0) { + return arg0._toJS(arg0).length; +} +function java_lang_String_isEmptyZ(arg0) { + return arg0._toJS(arg0).length === 0; +} + /* function java_lang_String_codePointAtII(arg0,arg1) { var arg2; @@ -3395,6 +3376,8 @@ /* new method for JavaScript String */ String.prototype.charAtCI = java_lang_String_charAtCI; +String.prototype.lengthI = java_lang_String_lengthI; +String.prototype.isEmptyZ = java_lang_String_isEmptyZ; diff -r 7cfa9b56f888 -r 95330dd02c47 vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Fri Sep 28 07:27:34 2012 +0200 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Fri Sep 28 07:43:53 2012 +0200 @@ -6,8 +6,28 @@ */ public class StringSample { public static final String HELLO = "Hello World!"; + private static int counter; + + private final int cnt; + public StringSample() { + cnt = ++counter; + } + public static char sayHello(int indx) { return HELLO.charAt(indx); } + + public static String toStringTest(int howMuch) { + StringSample ss = null; + for (int i = 0; i < howMuch; i++) { + ss = new StringSample(); + } + return ss.toString(); + } + + @Override + public String toString() { + return HELLO + cnt; + } } diff -r 7cfa9b56f888 -r 95330dd02c47 vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Fri Sep 28 07:27:34 2012 +0200 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Fri Sep 28 07:43:53 2012 +0200 @@ -17,6 +17,14 @@ "H", 0 ); } + + @Test public void toStringConcatenation() throws Exception { + assertExec( + "Five executions should generate 5Hello World!", + "org_apidesign_vm4brwsr_StringSample_toStringTestLjava_lang_StringI", + "5Hello World!", 5 + ); + } private static void assertExec(String msg, String methodName, Object expRes, Object... args) throws Exception { StringBuilder sb = new StringBuilder();