1 /* 2 * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test @summary Basic subSequence functionality. 26 * @bug 7197183 27 */ 28 public class SubSequence { 29 30 private final static String[] TESTS = {"", "0", "0123456789"}; 31 32 public static void test(String testString) { 33 // empty subsequences 34 CharSequence subSequence = testString.subSequence(0, 0); 35 if (subSequence.length() != 0) { 36 throw new RuntimeException("not empty"); 37 } 38 if (0 != subSequence.hashCode()) { 39 throw new RuntimeException("bad hashCode"); 40 } 41 42 // single char sub-sequences 43 for (int each = 0; each < testString.length(); each++) { 44 subSequence = testString.subSequence(each, each + 1); 45 String subString = testString.substring(each, each + 1); 46 47 if (subSequence.length() != subString.length()) { 48 throw new RuntimeException("wrong length"); 49 } 50 51 if (subSequence.charAt(0) != testString.charAt(each)) { 52 throw new RuntimeException("wrong char" + subSequence.charAt(0) + "!=" + testString.charAt(each)); 53 } 54 55 if (subString.hashCode() != subSequence.hashCode()) { 56 throw new RuntimeException("bad hashCode " + subString.hashCode() + " != " + subSequence.hashCode()); 57 } 58 if (!subSequence.equals(subString)) { 59 throw new RuntimeException("not equal"); 60 } 61 if (!subString.equals(subSequence)) { 62 throw new RuntimeException("not equal"); 63 } 64 if (!subString.equals(subSequence.toString())) { 65 throw new RuntimeException("not equal"); 66 } 67 } 68 69 subSequence = testString.subSequence(testString.length(), testString.length()); 70 if (subSequence.length() != 0) { 71 throw new RuntimeException("not empty"); 72 } 73 if (0 != subSequence.hashCode()) { 74 throw new RuntimeException("bad hashCode"); 75 } 76 77 // full length sub-sequence 78 subSequence = testString.subSequence(0, testString.length()); 79 if (testString.length() != subSequence.length()) { 80 throw new RuntimeException("wrong length"); 81 } 82 if (testString.hashCode() != subSequence.hashCode()) { 83 throw new RuntimeException("bad hashCode"); 84 } 85 if (!subSequence.equals(testString)) { 86 throw new RuntimeException("not equal"); 87 } 88 if (!testString.equals(subSequence)) { 89 throw new RuntimeException("not equal"); 90 } 91 if (!testString.equals(subSequence.toString())) { 92 throw new RuntimeException("not equal"); 93 } 94 } 95 96 public static void main(String[] args) { 97 for (String each : TESTS) { 98 try { 99 System.out.println("Test : \"" + each + "\""); 100 test(each); 101 } catch (Throwable all) { 102 throw new AssertionError("Failed testing : \"" + each + "\"", all); 103 } 104 } 105 } 106 }