15d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/* 25d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Copyright (C) 2007 The Android Open Source Project 35d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 45d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Licensed under the Apache License, Version 2.0 (the "License"); 55d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * you may not use this file except in compliance with the License. 65d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * You may obtain a copy of the License at 75d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 85d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * http://www.apache.org/licenses/LICENSE-2.0 95d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Unless required by applicable law or agreed to in writing, software 115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * distributed under the License is distributed on an "AS IS" BASIS, 125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * See the License for the specific language governing permissions and 145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * limitations under the License. 155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1739b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Haoimport java.nio.charset.Charset; 1839b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Haoimport java.io.UnsupportedEncodingException; 1939b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao 205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/** 215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Simple string test. 225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class Main { 245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void main(String args[]) { 255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao basicTest(); 265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao indexTest(); 2739b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao constructorTest(); 2825abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang copyTest(); 295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void basicTest() { 325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String baseStr = "*** This is a very nice string!!!"; 335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String testStr; 345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int i; 355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testStr = baseStr.substring(4, baseStr.length() - 3); 375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("testStr is '" + testStr + "'"); 385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* sloppy for loop */ 405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao for (i = 0; i < testStr.length(); i++) 415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.print(testStr.charAt(i)); 425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.print("\n"); 435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String testStr2 = "This is a very nice strinG"; 455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if (testStr.length() != testStr2.length()) 465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("WARNING: stringTest length mismatch"); 475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("Compare result is " + testStr.compareTo(testStr2)); 495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao // expected: -65302 515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String s1 = "\u0c6d\u0cb6\u0d00\u0000\u0080\u0080\u0080\u0000\u0002\u0002\u0002\u0000\u00e9\u00e9\u00e9"; 525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String s2 = "\u0c6d\u0cb6\u0d00\u0000\u0080\u0080\u0080\u0000\u0002\u0002\u0002\u0000\uffff\uffff\uffff\u00e9\u00e9\u00e9"; 535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("Compare unicode: " + s1.compareTo(s2)); 545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao try { 565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testStr.charAt(500); 575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("GLITCH: expected exception"); 585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } catch (StringIndexOutOfBoundsException sioobe) { 595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("Got expected exception"); 605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void indexTest() { 645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String baseStr = "The quick brown fox jumps over the lazy dog!"; 655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao String subStr; 665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr = baseStr.substring(5, baseStr.length() - 4); 685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("subStr is '" + subStr + "'"); 695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("Indexes are: " + 715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao baseStr.indexOf('T') + ":" + 725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('T') + ":" + 735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('u') + ":" + 745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao baseStr.indexOf('!') + ":" + 755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('y') + ":" + 765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('d') + ":" + 775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao baseStr.indexOf('x') + ":" + 785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('x', 0) + ":" + 795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('x', -1) + ":" + 805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('x', 200) + ":" + 815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao baseStr.indexOf('x', 17) + ":" + 825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao baseStr.indexOf('x', 18) + ":" + 835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao baseStr.indexOf('x', 19) + ":" + 845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('x', 13) + ":" + 855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('x', 14) + ":" + 865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao subStr.indexOf('&') + ":" + 875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao baseStr.indexOf(0x12341234)); 885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 8939b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao 9039b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao public static void constructorTest() { 9139b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao byte[] byteArray = "byteArray".getBytes(); 9239b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao char[] charArray = new char[] { 'c', 'h', 'a', 'r', 'A', 'r', 'r', 'a', 'y' }; 9339b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String charsetName = "US-ASCII"; 9439b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao Charset charset = Charset.forName("UTF-8"); 9539b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String string = "string"; 9639b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao StringBuffer stringBuffer = new StringBuffer("stringBuffer"); 9739b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao int [] codePoints = new int[] { 65, 66, 67, 68, 69 }; 9839b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao StringBuilder stringBuilder = new StringBuilder("stringBuilder"); 9939b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao 10039b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s1 = new String(); 10139b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s2 = new String(byteArray); 10239b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s3 = new String(byteArray, 1); 10339b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s4 = new String(byteArray, 0, 4); 10439b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s5 = new String(byteArray, 2, 4, 5); 10539b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao 10639b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao try { 10739b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s6 = new String(byteArray, 2, 4, charsetName); 10839b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s7 = new String(byteArray, charsetName); 10939b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao } catch (UnsupportedEncodingException e) { 11039b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao System.out.println("Got unexpected UnsupportedEncodingException"); 11139b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao } 11239b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s8 = new String(byteArray, 3, 3, charset); 11339b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s9 = new String(byteArray, charset); 11439b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s10 = new String(charArray); 11539b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s11 = new String(charArray, 0, 4); 11639b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s12 = new String(string); 11739b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s13 = new String(stringBuffer); 11839b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s14 = new String(codePoints, 1, 3); 11939b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao String s15 = new String(stringBuilder); 12039b6c24ce68cf05db0f82f454b4401cfb03d675fJeff Hao } 12125abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang 12225abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang public static void copyTest() { 12325abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang String src = new String("Hello Android"); 12425abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang char[] dst = new char[7]; 12525abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang char[] tmp = null; 12625abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang 12725abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang try { 12825abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang src.getChars(2, 9, tmp, 0); 12925abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("GLITCH: expected exception"); 13025abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } catch (NullPointerException npe) { 13125abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("Got expected exception"); 13225abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } 13325abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang 13425abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang try { 13525abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang src.getChars(-1, 9, dst, 0); 13625abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("GLITCH: expected exception"); 13725abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } catch (StringIndexOutOfBoundsException sioobe) { 13825abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("Got expected exception"); 13925abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } 14025abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang 14125abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang try { 14225abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang src.getChars(2, 19, dst, 0); 14325abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("GLITCH: expected exception"); 14425abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } catch (StringIndexOutOfBoundsException sioobe) { 14525abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("Got expected exception"); 14625abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } 14725abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang 14825abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang try { 14925abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang src.getChars(2, 1, dst, 0); 15025abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("GLITCH: expected exception"); 15125abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } catch (StringIndexOutOfBoundsException sioobe) { 15225abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("Got expected exception"); 15325abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } 15425abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang 15525abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang try { 15625abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang src.getChars(2, 10, dst, 0); 15725abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("GLITCH: expected exception"); 15825abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } catch (ArrayIndexOutOfBoundsException aioobe) { 15925abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println("Got expected exception"); 16025abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } 16125abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang 16225abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang src.getChars(2, 9, dst, 0); 16325abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang System.out.println(new String(dst)); 16425abd6c0c9f5a6abebcdeeb6f4373e85eedcfb6bTim Zhang } 1655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao} 166