jaroslav@296: /** jaroslav@296: * Back 2 Browser Bytecode Translator jaroslav@296: * Copyright (C) 2012 Jaroslav Tulach jaroslav@296: * jaroslav@296: * This program is free software: you can redistribute it and/or modify jaroslav@296: * it under the terms of the GNU General Public License as published by jaroslav@296: * the Free Software Foundation, version 2 of the License. jaroslav@296: * jaroslav@296: * This program is distributed in the hope that it will be useful, jaroslav@296: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@296: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@296: * GNU General Public License for more details. jaroslav@296: * jaroslav@296: * You should have received a copy of the GNU General Public License jaroslav@296: * along with this program. Look for COPYING file in the top folder. jaroslav@296: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@296: */ jaroslav@346: package org.apidesign.bck2brwsr.tck; jaroslav@296: jaroslav@608: import java.io.UnsupportedEncodingException; jaroslav@339: import java.net.MalformedURLException; jaroslav@339: import java.net.URL; jaroslav@1317: import java.util.Locale; jaroslav@346: import org.apidesign.bck2brwsr.vmtest.Compare; jaroslav@346: import org.apidesign.bck2brwsr.vmtest.VMTest; jaroslav@296: import org.testng.annotations.Factory; jaroslav@296: jaroslav@296: /** jaroslav@296: * jaroslav@296: * @author Jaroslav Tulach jaroslav@296: */ jaroslav@296: public class CompareStringsTest { jaroslav@430: @Compare public String firstChar() { jaroslav@430: return "" + ("Hello".toCharArray()[0]); jaroslav@430: } jaroslav@430: jaroslav@434: @Compare public String classCast() { jaroslav@434: Object o = firstChar(); jaroslav@434: return String.class.cast(o); jaroslav@434: } jaroslav@434: jaroslav@434: @Compare public String classCastThrown() { jaroslav@434: Object o = null; jaroslav@434: return String.class.cast(o); jaroslav@434: } jaroslav@434: jaroslav@501: @Compare public boolean equalToNull() { jaroslav@501: return "Ahoj".equals(null); jaroslav@501: } jaroslav@501: jaroslav@670: @Compare public int highByteLenght() { jaroslav@670: byte[] arr= { 77,97,110,105,102,101,115,116,45,86,101,114,115,105,111,110 }; jaroslav@670: return new String(arr, 0).length(); jaroslav@670: } jaroslav@670: jaroslav@670: @Compare public String highByte() { jaroslav@670: byte[] arr= { 77,97,110,105,102,101,115,116,45,86,101,114,115,105,111,110 }; jaroslav@670: StringBuilder sb = new StringBuilder(); jaroslav@670: sb.append("pref:"); jaroslav@670: sb.append(new String(arr, 0)); jaroslav@670: return sb.toString(); jaroslav@670: } jaroslav@670: jaroslav@339: @Compare public static Object compareURLs() throws MalformedURLException { jaroslav@339: return new URL("http://apidesign.org:8080/wiki/").toExternalForm().toString(); jaroslav@339: } jaroslav@339: jaroslav@296: @Compare public String deleteLastTwoCharacters() { jaroslav@296: StringBuilder sb = new StringBuilder(); jaroslav@296: sb.append("453.0"); jaroslav@296: if (sb.toString().endsWith(".0")) { jaroslav@296: final int l = sb.length(); jaroslav@296: sb.delete(l - 2, l); jaroslav@296: } jaroslav@296: return sb.toString().toString(); jaroslav@296: } jaroslav@296: jaroslav@321: @Compare public String nameOfStringClass() throws Exception { jaroslav@321: return Class.forName("java.lang.String").getName(); jaroslav@321: } jaroslav@322: @Compare public String nameOfArrayClass() throws Exception { jaroslav@346: return Class.forName("org.apidesign.bck2brwsr.tck.CompareHashTest").getName(); jaroslav@322: } jaroslav@326: jaroslav@326: @Compare public String lowerHello() { jaroslav@326: return "HeLlO".toLowerCase(); jaroslav@326: } jaroslav@326: jaroslav@326: @Compare public String lowerA() { jaroslav@326: return String.valueOf(Character.toLowerCase('A')).toString(); jaroslav@326: } jaroslav@326: @Compare public String upperHello() { jaroslav@326: return "hello".toUpperCase(); jaroslav@326: } jaroslav@326: jaroslav@326: @Compare public String upperA() { jaroslav@326: return String.valueOf(Character.toUpperCase('a')).toString(); jaroslav@326: } jaroslav@326: jaroslav@326: @Compare public boolean matchRegExp() throws Exception { jaroslav@326: return "58038503".matches("\\d*"); jaroslav@326: } jaroslav@326: jaroslav@326: @Compare public boolean doesNotMatchRegExp() throws Exception { jaroslav@326: return "58038503GH".matches("\\d*"); jaroslav@326: } jaroslav@326: jaroslav@326: @Compare public boolean doesNotMatchRegExpFully() throws Exception { jaroslav@326: return "Hello".matches("Hell"); jaroslav@326: } jaroslav@326: jaroslav@447: @Compare public String emptyCharArray() { jaroslav@447: char[] arr = new char[10]; jaroslav@447: return new String(arr); jaroslav@447: } jaroslav@447: jaroslav@326: @Compare public String variousCharacterTests() throws Exception { jaroslav@326: StringBuilder sb = new StringBuilder(); jaroslav@326: jaroslav@326: sb.append(Character.isUpperCase('a')); jaroslav@326: sb.append(Character.isUpperCase('A')); jaroslav@326: sb.append(Character.isLowerCase('a')); jaroslav@326: sb.append(Character.isLowerCase('A')); jaroslav@326: jaroslav@326: sb.append(Character.isLetter('A')); jaroslav@326: sb.append(Character.isLetterOrDigit('9')); jaroslav@326: sb.append(Character.isLetterOrDigit('A')); jaroslav@326: sb.append(Character.isLetter('0')); jaroslav@326: jaroslav@326: return sb.toString().toString(); jaroslav@326: } jaroslav@322: jaroslav@328: @Compare jaroslav@328: public String nullFieldInitialized() { jaroslav@328: NullField nf = new NullField(); jaroslav@328: return ("" + nf.name).toString(); jaroslav@328: } jaroslav@608: @Compare jaroslav@608: public String toUTFString() throws UnsupportedEncodingException { jaroslav@608: byte[] arr = { jaroslav@608: (byte) -59, (byte) -67, (byte) 108, (byte) 117, (byte) -59, (byte) -91, jaroslav@608: (byte) 111, (byte) 117, (byte) -60, (byte) -115, (byte) 107, (byte) -61, jaroslav@608: (byte) -67, (byte) 32, (byte) 107, (byte) -59, (byte) -81, (byte) -59, jaroslav@608: (byte) -120 jaroslav@608: }; jaroslav@608: return new String(arr, "utf-8"); jaroslav@608: } jaroslav@608: jaroslav@608: @Compare jaroslav@608: public int stringToBytesLenght() throws UnsupportedEncodingException { jaroslav@693: return "\u017dlu\u0165ou\u010dk\u00fd k\u016f\u0148".getBytes("utf8").length; jaroslav@608: } jaroslav@926: jaroslav@926: @Compare public String replaceSeq() { jaroslav@926: return "Hello World.".replace(".", "!"); jaroslav@926: } jaroslav@926: @Compare public String replaceSeqAll() { jaroslav@926: return "Hello World! Hello World.".replace("World", "Jarda"); jaroslav@926: } jaroslav@926: @Compare public String replaceSeqAA() { jaroslav@926: String res = "aaa".replace("aa", "b"); jaroslav@926: assert res.equals("ba") : "Expecting ba: " + res; jaroslav@926: return res; jaroslav@926: } jaroslav@1317: jaroslav@1317: @Compare public String localeUS() { jaroslav@1317: return Locale.US.toString(); jaroslav@1317: } jaroslav@1317: jaroslav@1317: @Compare public String localeFrench() { jaroslav@1317: return Locale.FRENCH.toString(); jaroslav@1317: } jaroslav@1317: jaroslav@1317: jaroslav@1317: @Compare public String formatSimple() { jaroslav@1317: return String.format((Locale)null, "Hello %s!", "World"); jaroslav@1317: } jaroslav@328: jaroslav@296: @Factory jaroslav@296: public static Object[] create() { jaroslav@346: return VMTest.create(CompareStringsTest.class); jaroslav@296: } jaroslav@328: jaroslav@328: private static final class NullField { jaroslav@328: jaroslav@328: String name; jaroslav@328: } jaroslav@296: }