rt/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 09 Oct 2013 16:53:45 +0200
changeset 1354 43f89d9f7238
parent 937 d9e692ece653
child 1787 ea12a3bb4b33
permissions -rw-r--r--
Unicode has some special new line characters that need to be encoded too
     1 /**
     2  * Back 2 Browser Bytecode Translator
     3  * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, version 2 of the License.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License
    15  * along with this program. Look for COPYING file in the top folder.
    16  * If not, see http://opensource.org/licenses/GPL-2.0.
    17  */
    18 package org.apidesign.vm4brwsr;
    19 
    20 import java.io.UnsupportedEncodingException;
    21 import org.apidesign.bck2brwsr.core.JavaScriptBody;
    22 
    23 /**
    24  *
    25  * @author Jaroslav Tulach <jtulach@netbeans.org>
    26  */
    27 public class StringSample {
    28     public static final String HELLO = "Hello World!";
    29     private static int counter;
    30     
    31     private final int cnt;
    32     public StringSample() {
    33         cnt = ++counter;
    34     }
    35     
    36     
    37     public static char sayHello(int indx) {
    38         return HELLO.charAt(indx);
    39     }
    40     
    41     public static boolean equalToHello(int from, int to) {
    42         return "Hello".equals(HELLO.substring(from, to));
    43     }
    44     
    45     public static String fromChars(char a, char b, char c) {
    46         char[] arr = { a, b, c };
    47         return new String(arr).toString();
    48     }
    49     
    50     public static String charsFromNumbers() {
    51         return chars((char)65, (char)66, (char)67);
    52     }
    53 
    54     public static String charsFromChars() {
    55         return chars('A', 'B', 'C');
    56     }
    57 
    58     public static String chars(char a, char b, char c) {
    59         return ("" + a + b +c).toString();
    60     }
    61     
    62     public static String replace(String s, char a, char b) {
    63         return s.replace(a, b);
    64     }
    65     
    66     public static int hashCode(String h) {
    67         return h.hashCode();
    68     }
    69     
    70     public static boolean isStringInstance() {
    71         return chars('a', (char)30, 'b') instanceof String;
    72     }
    73     
    74     public static String getBytes(String s) throws UnsupportedEncodingException {
    75         byte[] arr = s.getBytes("UTF-8");
    76         StringBuilder sb = new StringBuilder();
    77         for (int i = 0; i < arr.length; i++) {
    78             sb.append(arr[i]).append(" ");
    79         }
    80         return sb.toString().toString();
    81     }
    82     
    83     public static String unicode() {
    84         return "\r\n\u2028\u2029]";
    85     }
    86     
    87     public static String insertBuffer() {
    88         StringBuilder sb = new StringBuilder();
    89         sb.append("Jardo!");
    90         sb.insert(0, "Ahoj ");
    91         sb.delete(4, 8);
    92         return sb.toString().toString();
    93     }
    94     
    95     public static int countAB(String txt) {
    96         int cnt = 0;
    97         for (int i = 0; i < txt.length(); i++) {
    98             switch (txt.charAt(i)) {
    99                 case 'A': cnt++; break;
   100                 case 'B': cnt += 2; break;
   101             }
   102         }
   103         return cnt;
   104     }
   105 
   106     public static int stringSwitch(String txt) {
   107         switch (txt) {
   108             case "jedna": return 1;
   109             case "dve": return 2;
   110             case "tri": return 3;
   111             case "ctyri": return 4;
   112         }
   113         return -1;
   114     }
   115     
   116     public static String toStringTest(int howMuch) {
   117         counter = 0;
   118         StringSample ss = null;
   119         for (int i = 0; i < howMuch; i++) {
   120             ss = new StringSample();
   121         }
   122         return ss.toString().toString();
   123     }
   124     
   125     public static String concatStrings() {
   126         return (toStringTest(1) + "\\\n\r\t").toString();
   127     }
   128     
   129     public static int compare(String a, String b) {
   130         return a.compareTo(b);
   131     }
   132 
   133     @Override
   134     public String toString() {
   135         return HELLO + cnt;
   136     }
   137     
   138     @JavaScriptBody(args = {}, body = "return [1, 2];")
   139     private static native Object crtarr();
   140     @JavaScriptBody(args = { "o" }, body = "return o.toString();")
   141     private static native String toStrng(Object o);
   142     
   143     public static String toStringArray(boolean fakeArr, boolean toString) {
   144         final Object arr = fakeArr ? crtarr() : new Object[2];
   145         final String whole = toString ? arr.toString() : toStrng(arr);
   146         int zav = whole.indexOf('@');
   147         if (zav <= 0) {
   148             zav = whole.length();
   149         }
   150         return whole.substring(0, zav).toString().toString();
   151     }
   152     
   153 }