# HG changeset patch # User Jaroslav Tulach # Date 1353223708 -3600 # Node ID 6f9f52ad75f517f77d7942b1e010a4129ae48e2d # Parent d954a0212b95bc62468f1ffd8cd4f2b49156d75e Converting chars to real chars before concatenating them into a string diff -r d954a0212b95 -r 6f9f52ad75f5 emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Sat Nov 17 19:03:17 2012 +0100 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js Sun Nov 18 08:28:28 2012 +0100 @@ -1,12 +1,19 @@ /* */ -function java_lang_String_consVAC(arg0,arg1) { - arg0.r = arg1.join(""); +function java_lang_String_consVAC(self,charArr) { + for (var i = 0; i < charArr.length; i++) { + if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]); + } + self.r = charArr.join(""); } function java_lang_String_consVACII(self, charArr, off, cnt) { - self.r = charArr.slice(off, off + cnt).join(""); + var up = off + cnt; + for (var i = off; i < up; i++) { + if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]); + } + self.r = charArr.slice(off, up).join(""); } function java_lang_String_charAtCI(arg0,arg1) { diff -r d954a0212b95 -r 6f9f52ad75f5 vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sat Nov 17 19:03:17 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sun Nov 18 08:28:28 2012 +0100 @@ -43,6 +43,14 @@ char[] arr = { a, b, c }; return new String(arr).toString(); } + + public static String charsFromNumbers() { + return chars((char)65, (char)66, (char)67); + } + + public static String charsFromChars() { + return chars('A', 'B', 'C'); + } public static String chars(char a, char b, char c) { return ("" + a + b +c).toString(); diff -r d954a0212b95 -r 6f9f52ad75f5 vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sat Nov 17 19:03:17 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sun Nov 18 08:28:28 2012 +0100 @@ -52,6 +52,22 @@ ); } + @Test public void concatCharsFromInts() throws Exception { + assertExec( + "Composing yields ABC", + "org_apidesign_vm4brwsr_StringSample_charsFromNumbersLjava_lang_String", + "ABC" + ); + } + + @Test public void concatCharsFromChars() throws Exception { + assertExec( + "Composing yields ABC", + "org_apidesign_vm4brwsr_StringSample_charsFromCharsLjava_lang_String", + "ABC" + ); + } + @Test(timeOut=10000) public void toStringConcatenation() throws Exception { assertExec( "Five executions should generate 5Hello World!",