new String(char[]).toString() works strings
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 28 Sep 2012 14:06:57 +0200
branchstrings
changeset 45bc9a4c28d1a3
parent 44 b384fe44e6fa
child 47 0ca238168537
new String(char[]).toString() works
vm/src/main/resources/org/apidesign/vm4brwsr/emulation/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/vm/src/main/resources/org/apidesign/vm4brwsr/emulation/java_lang_String.js	Fri Sep 28 13:15:45 2012 +0200
     1.2 +++ b/vm/src/main/resources/org/apidesign/vm4brwsr/emulation/java_lang_String.js	Fri Sep 28 14:06:57 2012 +0200
     1.3 @@ -70,28 +70,11 @@
     1.4      case 60: return; // 177
     1.5    }
     1.6  }
     1.7 +*/
     1.8  function java_lang_String_consVAC(arg0,arg1) {
     1.9 -  var arg2;
    1.10 -;
    1.11 -  var stack = new Array(2);
    1.12 -  var gt = 0;
    1.13 -  for(;;) switch(gt) {
    1.14 -    case 0: stack.push(arg0); // 42
    1.15 -    case 1: { java_lang_Object_consV(stack.pop()); } // 183 1 130
    1.16 -    case 4: stack.push(arg0); // 42
    1.17 -    case 5: stack.push(0); // 3
    1.18 -    case 6: { var v = stack.pop(); stack.pop().offset = v; } // 181 1 99
    1.19 -    case 9: stack.push(arg0); // 42
    1.20 -    case 10: stack.push(arg1); // 43
    1.21 -    case 11: stack.push(stack.pop().length); // 190
    1.22 -    case 12: { var v = stack.pop(); stack.pop().count = v; } // 181 1 97
    1.23 -    case 15: stack.push(arg0); // 42
    1.24 -    case 16: stack.push(arg1); // 43
    1.25 -    case 17: { var v0 = stack.pop(); stack.push(java_lang_StringValue_fromACAC(v0)); } // 184 1 170
    1.26 -    case 20: { var v = stack.pop(); stack.pop().value = v; } // 181 1 100
    1.27 -    case 23: return; // 177
    1.28 -  }
    1.29 +    arg0.r = arg1.join("");
    1.30  }
    1.31 +/*
    1.32  function java_lang_String_consVACII(arg0,arg1,arg2,arg3) {
    1.33    var arg4;
    1.34  ;
    1.35 @@ -664,16 +647,14 @@
    1.36  }
    1.37  */
    1.38  
    1.39 -String.prototype._toJS = function (self) { return self; };
    1.40 -
    1.41  function java_lang_String_charAtCI(arg0,arg1) {
    1.42 -    return arg0._toJS(arg0).charAt(arg1);
    1.43 +    return arg0.toString().charAt(arg1);
    1.44  }
    1.45  function java_lang_String_lengthI(arg0) {
    1.46 -    return arg0._toJS(arg0).length;
    1.47 +    return arg0.toString().length;
    1.48  }
    1.49  function java_lang_String_isEmptyZ(arg0) {
    1.50 -    return arg0._toJS(arg0).length === 0;
    1.51 +    return arg0.toString().length === 0;
    1.52  }
    1.53  
    1.54  /*
    1.55 @@ -813,7 +794,7 @@
    1.56  
    1.57  // public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
    1.58  function java_lang_String_getCharsVIIACAI(arg0,arg1,arg2,arg3,arg4) {
    1.59 -    var s = arg0._toJS(arg0);
    1.60 +    var s = arg0.toString();
    1.61      while (arg1 < arg2) {
    1.62          arg3[arg4++] = s[arg1++];
    1.63      }
    1.64 @@ -3001,16 +2982,11 @@
    1.65      case 86: return stack.pop(); // 176
    1.66    }
    1.67  }
    1.68 +*/
    1.69  function java_lang_String_toStringLjava_lang_String(arg0) {
    1.70 -  var arg1;
    1.71 -;
    1.72 -  var stack = new Array(1);
    1.73 -  var gt = 0;
    1.74 -  for(;;) switch(gt) {
    1.75 -    case 0: stack.push(arg0); // 42
    1.76 -    case 1: return stack.pop(); // 176
    1.77 -  }
    1.78 +    return arg0.toString();
    1.79  }
    1.80 +/*
    1.81  function java_lang_String_toCharArrayAC(arg0) {
    1.82    var arg1;
    1.83    var arg2;
    1.84 @@ -3233,25 +3209,33 @@
    1.85  var java_lang_String_serialPersistentFields = 0;
    1.86  var java_lang_String_CASE_INSENSITIVE_ORDER = 0;
    1.87  function java_lang_String() {
    1.88 -  /** the real value of this string that we delegate to */
    1.89 +  /** the real value of this 'string' we delegate to */
    1.90    this.r = '';
    1.91 +  
    1.92 +  var self = this;
    1.93      /*
    1.94 -  this.consV = java_lang_String_consV;
    1.95 -  this.consVLjava_lang_String = java_lang_String_consVLjava_lang_String;
    1.96 -  this.consVAC = java_lang_String_consVAC;
    1.97 -  this.consVACII = java_lang_String_consVACII;
    1.98 -  this.consVAIII = java_lang_String_consVAIII;
    1.99 -  this.consVABIII = java_lang_String_consVABIII;
   1.100 -  this.consVABI = java_lang_String_consVABI;
   1.101 -  this.consVABIILjava_lang_String = java_lang_String_consVABIILjava_lang_String;
   1.102 -  this.consVABIILjava_nio_charset_Charset = java_lang_String_consVABIILjava_nio_charset_Charset;
   1.103 -  this.consVABLjava_lang_String = java_lang_String_consVABLjava_lang_String;
   1.104 -  this.consVABLjava_nio_charset_Charset = java_lang_String_consVABLjava_nio_charset_Charset;
   1.105 -  this.consVABII = java_lang_String_consVABII;
   1.106 -  this.consVAB = java_lang_String_consVAB;
   1.107 -  this.consVLjava_lang_StringBuffer = java_lang_String_consVLjava_lang_StringBuffer;
   1.108 -  this.consVLjava_lang_StringBuilder = java_lang_String_consVLjava_lang_StringBuilder;
   1.109 -  this.consVIIAC = java_lang_String_consVIIAC;
   1.110 +  this.value = 0;
   1.111 +  this.offset = 0;
   1.112 +  this.count = 0;
   1.113 +  this.hash = 0;
   1.114 +  */
   1.115 +  this.toString = function() { return self.r; };
   1.116 +}
   1.117 +java_lang_String.prototype = new String;
   1.118 +//java_lang_String_classV();
   1.119 +
   1.120 +/* new method for JavaScript String */
   1.121 +String.prototype.charAtCI = java_lang_String_charAtCI;
   1.122 +String.prototype.lengthI = java_lang_String_lengthI;
   1.123 +String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
   1.124 +String.prototype.getCharsVIIACAI = java_lang_String_getCharsVIIACAI;
   1.125 +String.prototype.toStringLjava_lang_String = java_lang_String_toStringLjava_lang_String;
   1.126 +String.prototype.$instOf_java_lang_String = true;
   1.127 +String.prototype.$instOf_java_io_Serializable = true;
   1.128 +String.prototype.$instOf_java_lang_Comparable = true;
   1.129 +String.prototype.$instOf_java_lang_CharSequence = true;
   1.130 +
   1.131 +/*
   1.132    this.lengthI = java_lang_String_lengthI;
   1.133    this.isEmptyZ = java_lang_String_isEmptyZ;
   1.134    this.charAtCI = java_lang_String_charAtCI;
   1.135 @@ -3306,25 +3290,7 @@
   1.136    this.toCharArrayAC = java_lang_String_toCharArrayAC;
   1.137    this.internLjava_lang_String = java_lang_String_internLjava_lang_String;
   1.138    this.compareToILjava_lang_Object = java_lang_String_compareToILjava_lang_Object;
   1.139 -  this.value = 0;
   1.140 -  this.offset = 0;
   1.141 -  this.count = 0;
   1.142 -  this.hash = 0;
   1.143 -  this.$instOf_java_lang_String = true;
   1.144 -  this.$instOf_java_io_Serializable = true;
   1.145 -  this.$instOf_java_lang_Comparable = true;
   1.146 -  this.$instOf_java_lang_CharSequence = true;
   1.147 -  */
   1.148 -}
   1.149 -java_lang_String.prototype = new String;
   1.150 -java_lang_String.prototype = function _toJS() { return r; };
   1.151 -//java_lang_String_classV();
   1.152 + */
   1.153  
   1.154 -/* new method for JavaScript String */
   1.155 -String.prototype.charAtCI = java_lang_String_charAtCI;
   1.156 -String.prototype.lengthI = java_lang_String_lengthI;
   1.157 -String.prototype.isEmptyZ = java_lang_String_isEmptyZ;
   1.158 -String.prototype.getCharsVIIACAI = java_lang_String_getCharsVIIACAI;
   1.159  
   1.160  
   1.161 -
     2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Fri Sep 28 13:15:45 2012 +0200
     2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Fri Sep 28 14:06:57 2012 +0200
     2.3 @@ -18,6 +18,11 @@
     2.4          return HELLO.charAt(indx);
     2.5      }
     2.6      
     2.7 +    public static String fromChars(char a, char b, char c) {
     2.8 +        char[] arr = { a, b, c };
     2.9 +        return new String(arr).toString();
    2.10 +    }
    2.11 +    
    2.12      public static String toStringTest(int howMuch) {
    2.13          StringSample ss = null;
    2.14          for (int i = 0; i < howMuch; i++) {
     3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Fri Sep 28 13:15:45 2012 +0200
     3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Fri Sep 28 14:06:57 2012 +0200
     3.3 @@ -18,6 +18,14 @@
     3.4          );
     3.5      }
     3.6  
     3.7 +    @Test public void fromChars() throws Exception {
     3.8 +        assertExec(
     3.9 +            "First char in Hello is ABC",
    3.10 +            "org_apidesign_vm4brwsr_StringSample_fromCharsLjava_lang_StringCCC",
    3.11 +            "ABC", 'A', 'B', 'C'
    3.12 +        );
    3.13 +    }
    3.14 +
    3.15      @Test public void toStringConcatenation() throws Exception {
    3.16          assertExec(
    3.17              "Five executions should generate 5Hello World!",