1.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Sun Nov 18 14:39:55 2012 +0100
1.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Sun Nov 18 15:20:07 2012 +0100
1.3 @@ -1396,7 +1396,16 @@
1.4 }
1.5
1.6 function java_lang_String_replaceLjava_lang_StringCC(arg0,arg1,arg2) {
1.7 - return arg0.toString().replace(arg1, arg2);
1.8 + if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);
1.9 + if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);
1.10 + var s = arg0.toString();
1.11 + for (;;) {
1.12 + var ret = s.replace(arg1, arg2);
1.13 + if (ret === s) {
1.14 + return ret;
1.15 + }
1.16 + s = ret;
1.17 + }
1.18 }
1.19 function java_lang_String_containsZLjava_lang_CharSequence(arg0,arg1) {
1.20 return arg0.toString().indexOf(arg1.toString()) >= 0;
2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sun Nov 18 14:39:55 2012 +0100
2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sun Nov 18 15:20:07 2012 +0100
2.3 @@ -56,6 +56,10 @@
2.4 return ("" + a + b +c).toString();
2.5 }
2.6
2.7 + public static String replace(String s, char a, char b) {
2.8 + return s.replace(a, b);
2.9 + }
2.10 +
2.11 public static String toStringTest(int howMuch) {
2.12 counter = 0;
2.13 StringSample ss = null;
3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sun Nov 18 14:39:55 2012 +0100
3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sun Nov 18 15:20:07 2012 +0100
3.3 @@ -94,6 +94,20 @@
3.4 true, 0, 5
3.5 );
3.6 }
3.7 + @Test public void replaceChars() throws Exception {
3.8 + assertExec(
3.9 + "Can replace slashes by underscores",
3.10 + "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
3.11 + "x_y_z", "x/y/z", '/', '_'
3.12 + );
3.13 + }
3.14 + @Test public void replaceIntChars() throws Exception {
3.15 + assertExec(
3.16 + "Can replace slashes by underscores",
3.17 + "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
3.18 + "x_y_z", "x/y/z", (int)'/', (int)'_'
3.19 + );
3.20 + }
3.21
3.22 private static CharSequence codeSeq;
3.23 private static Invocable code;