Converting chars to real chars before concatenating them into a string javap
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 18 Nov 2012 08:28:28 +0100
branchjavap
changeset 1766f9f52ad75f5
parent 175 d954a0212b95
child 177 0bda47eab728
Converting chars to real chars before concatenating them into a string
emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js
vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java
vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java
     1.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js	Sat Nov 17 19:03:17 2012 +0100
     1.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js	Sun Nov 18 08:28:28 2012 +0100
     1.3 @@ -1,12 +1,19 @@
     1.4  /* */
     1.5  
     1.6  
     1.7 -function java_lang_String_consVAC(arg0,arg1) {
     1.8 -    arg0.r = arg1.join("");
     1.9 +function java_lang_String_consVAC(self,charArr) {
    1.10 +    for (var i = 0; i < charArr.length; i++) {
    1.11 +        if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);
    1.12 +    }
    1.13 +    self.r = charArr.join("");
    1.14  }
    1.15  
    1.16  function java_lang_String_consVACII(self, charArr, off, cnt) {
    1.17 -    self.r = charArr.slice(off, off + cnt).join("");
    1.18 +    var up = off + cnt;
    1.19 +    for (var i = off; i < up; i++) {
    1.20 +        if (typeof charArr[i] === 'number') charArr[i] = String.fromCharCode(charArr[i]);
    1.21 +    }
    1.22 +    self.r = charArr.slice(off, up).join("");
    1.23  }
    1.24  
    1.25  function java_lang_String_charAtCI(arg0,arg1) {
     2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Sat Nov 17 19:03:17 2012 +0100
     2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Sun Nov 18 08:28:28 2012 +0100
     2.3 @@ -43,6 +43,14 @@
     2.4          char[] arr = { a, b, c };
     2.5          return new String(arr).toString();
     2.6      }
     2.7 +    
     2.8 +    public static String charsFromNumbers() {
     2.9 +        return chars((char)65, (char)66, (char)67);
    2.10 +    }
    2.11 +
    2.12 +    public static String charsFromChars() {
    2.13 +        return chars('A', 'B', 'C');
    2.14 +    }
    2.15  
    2.16      public static String chars(char a, char b, char c) {
    2.17          return ("" + a + b +c).toString();
     3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Sat Nov 17 19:03:17 2012 +0100
     3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Sun Nov 18 08:28:28 2012 +0100
     3.3 @@ -52,6 +52,22 @@
     3.4          );
     3.5      }
     3.6  
     3.7 +    @Test public void concatCharsFromInts() throws Exception {
     3.8 +        assertExec(
     3.9 +            "Composing yields ABC",
    3.10 +            "org_apidesign_vm4brwsr_StringSample_charsFromNumbersLjava_lang_String",
    3.11 +            "ABC"
    3.12 +        );
    3.13 +    }
    3.14 +
    3.15 +    @Test public void concatCharsFromChars() throws Exception {
    3.16 +        assertExec(
    3.17 +            "Composing yields ABC",
    3.18 +            "org_apidesign_vm4brwsr_StringSample_charsFromCharsLjava_lang_String",
    3.19 +            "ABC"
    3.20 +        );
    3.21 +    }
    3.22 +
    3.23      @Test(timeOut=10000) public void toStringConcatenation() throws Exception {
    3.24          assertExec(
    3.25              "Five executions should generate 5Hello World!",