test/script/basic/JDK-8019987.js

Tue, 15 Jan 2019 10:36:25 +0000

author
aefimov
date
Tue, 15 Jan 2019 10:36:25 +0000
changeset 2462
e9169a96a3d1
parent 0
b1a7da25b547
permissions
-rw-r--r--

Added tag jdk8u202-ga for changeset 7aeae6eb6236

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 */
aoqi@0 23
aoqi@0 24 /**
aoqi@0 25 * JDK-8019987: String trimRight and trimLeft could be defined.
aoqi@0 26 *
aoqi@0 27 * @test
aoqi@0 28 * @run
aoqi@0 29 */
aoqi@0 30
aoqi@0 31 var TESTSTRING = "abcde";
aoqi@0 32
aoqi@0 33 var SPACES = " ";
aoqi@0 34 var TESTSTRING_LEFT_SPACES = SPACES + TESTSTRING;
aoqi@0 35 var TESTSTRING_RIGHT_SPACES = TESTSTRING + SPACES;
aoqi@0 36 var TESTSTRING_BOTH_SPACES = SPACES + TESTSTRING + SPACES;
aoqi@0 37 var TESTSTRING_MIDDLE_SPACES = TESTSTRING + SPACES + TESTSTRING;
aoqi@0 38
aoqi@0 39 var WHITESPACE =
aoqi@0 40 " \t" + // space and tab
aoqi@0 41 "\n\r" + // newline and return
aoqi@0 42 "\u2028" + // line separator
aoqi@0 43 "\u2029" + // paragraph separator
aoqi@0 44 "\u000b" + // tabulation line
aoqi@0 45 "\u000c" + // ff (ctrl-l)
aoqi@0 46 "\u00a0" + // Latin-1 space
aoqi@0 47 "\u1680" + // Ogham space mark
aoqi@0 48 "\u180e" + // separator, Mongolian vowel
aoqi@0 49 "\u2000" + // en quad
aoqi@0 50 "\u2001" + // em quad
aoqi@0 51 "\u2002" + // en space
aoqi@0 52 "\u2003" + // em space
aoqi@0 53 "\u2004" + // three-per-em space
aoqi@0 54 "\u2005" + // four-per-em space
aoqi@0 55 "\u2006" + // six-per-em space
aoqi@0 56 "\u2007" + // figure space
aoqi@0 57 "\u2008" + // punctuation space
aoqi@0 58 "\u2009" + // thin space
aoqi@0 59 "\u200a" + // hair space
aoqi@0 60 "\u202f" + // narrow no-break space
aoqi@0 61 "\u205f" + // medium mathematical space
aoqi@0 62 "\u3000" + // ideographic space
aoqi@0 63 "\ufeff"; // byte order mark
aoqi@0 64 var TESTSTRING_LEFT_WHITESPACE = WHITESPACE + TESTSTRING;
aoqi@0 65 var TESTSTRING_RIGHT_WHITESPACE = TESTSTRING + WHITESPACE;
aoqi@0 66 var TESTSTRING_BOTH_WHITESPACE = WHITESPACE + TESTSTRING + WHITESPACE;
aoqi@0 67 var TESTSTRING_MIDDLE_WHITESPACE = TESTSTRING + WHITESPACE + TESTSTRING;
aoqi@0 68
aoqi@0 69 function escape(string) {
aoqi@0 70 var sb = new java.lang.StringBuilder();
aoqi@0 71 sb.append("\"");
aoqi@0 72
aoqi@0 73 for (var i = 0; i < string.length; i++) {
aoqi@0 74 var ch = string.charAt(i);
aoqi@0 75
aoqi@0 76 switch (ch) {
aoqi@0 77 case '\\':
aoqi@0 78 sb.append("\\\\");
aoqi@0 79 break;
aoqi@0 80 case '"':
aoqi@0 81 sb.append("\\\"");
aoqi@0 82 break;
aoqi@0 83 case '\'':
aoqi@0 84 sb.append("\\\'");
aoqi@0 85 break;
aoqi@0 86 case '\b':
aoqi@0 87 sb.append("\\b");
aoqi@0 88 break;
aoqi@0 89 case '\f':
aoqi@0 90 sb.append("\\f");
aoqi@0 91 break;
aoqi@0 92 case '\n':
aoqi@0 93 sb.append("\\n");
aoqi@0 94 break;
aoqi@0 95 case '\r':
aoqi@0 96 sb.append("\\r");
aoqi@0 97 break;
aoqi@0 98 case '\t':
aoqi@0 99 sb.append("\\t");
aoqi@0 100 break;
aoqi@0 101 default:
aoqi@0 102 var code = string.charCodeAt(i);
aoqi@0 103
aoqi@0 104 if (code < 0x20 || code >= 0xFF) {
aoqi@0 105 sb.append("\\u");
aoqi@0 106
aoqi@0 107 var hex = java.lang.Integer.toHexString(code);
aoqi@0 108 for (var i = hex.length; i < 4; i++) {
aoqi@0 109 sb.append('0');
aoqi@0 110 }
aoqi@0 111 sb.append(hex);
aoqi@0 112 } else {
aoqi@0 113 sb.append(ch);
aoqi@0 114 }
aoqi@0 115
aoqi@0 116 break;
aoqi@0 117 }
aoqi@0 118 }
aoqi@0 119
aoqi@0 120 sb.append("\"");
aoqi@0 121
aoqi@0 122 return sb.toString();
aoqi@0 123 }
aoqi@0 124
aoqi@0 125 var count = 0;
aoqi@0 126 function test(expected, trimmed) {
aoqi@0 127 count++;
aoqi@0 128 if (trimmed != expected) {
aoqi@0 129 print(count + ": Expected: " + escape(expected) + ", found: " + escape(trimmed));
aoqi@0 130 }
aoqi@0 131 }
aoqi@0 132
aoqi@0 133 test("", SPACES.trim());
aoqi@0 134 test("", SPACES.trimLeft());
aoqi@0 135 test("", SPACES.trimRight());
aoqi@0 136
aoqi@0 137 test(TESTSTRING, TESTSTRING_LEFT_SPACES.trim());
aoqi@0 138 test(TESTSTRING, TESTSTRING_LEFT_SPACES.trimLeft());
aoqi@0 139 test(TESTSTRING_LEFT_SPACES, TESTSTRING_LEFT_SPACES.trimRight());
aoqi@0 140
aoqi@0 141 test(TESTSTRING, TESTSTRING_RIGHT_SPACES.trim());
aoqi@0 142 test(TESTSTRING_RIGHT_SPACES, TESTSTRING_RIGHT_SPACES.trimLeft());
aoqi@0 143 test(TESTSTRING, TESTSTRING_RIGHT_SPACES.trimRight());
aoqi@0 144
aoqi@0 145 test(TESTSTRING, TESTSTRING_BOTH_SPACES.trim());
aoqi@0 146 test(TESTSTRING_RIGHT_SPACES, TESTSTRING_BOTH_SPACES.trimLeft());
aoqi@0 147 test(TESTSTRING_LEFT_SPACES, TESTSTRING_BOTH_SPACES.trimRight());
aoqi@0 148
aoqi@0 149 test(TESTSTRING_MIDDLE_SPACES, TESTSTRING_MIDDLE_SPACES.trim());
aoqi@0 150 test(TESTSTRING_MIDDLE_SPACES, TESTSTRING_MIDDLE_SPACES.trimLeft());
aoqi@0 151 test(TESTSTRING_MIDDLE_SPACES, TESTSTRING_MIDDLE_SPACES.trimRight());
aoqi@0 152
aoqi@0 153 test("", WHITESPACE.trim());
aoqi@0 154 test("", WHITESPACE.trimLeft());
aoqi@0 155 test("", WHITESPACE.trimRight());
aoqi@0 156
aoqi@0 157 test(TESTSTRING, TESTSTRING_LEFT_WHITESPACE.trim());
aoqi@0 158 test(TESTSTRING, TESTSTRING_LEFT_WHITESPACE.trimLeft());
aoqi@0 159 test(TESTSTRING_LEFT_WHITESPACE, TESTSTRING_LEFT_WHITESPACE.trimRight());
aoqi@0 160
aoqi@0 161 test(TESTSTRING, TESTSTRING_RIGHT_WHITESPACE.trim());
aoqi@0 162 test(TESTSTRING_RIGHT_WHITESPACE, TESTSTRING_RIGHT_WHITESPACE.trimLeft());
aoqi@0 163 test(TESTSTRING, TESTSTRING_RIGHT_WHITESPACE.trimRight());
aoqi@0 164
aoqi@0 165 test(TESTSTRING, TESTSTRING_BOTH_WHITESPACE.trim());
aoqi@0 166 test(TESTSTRING_RIGHT_WHITESPACE, TESTSTRING_BOTH_WHITESPACE.trimLeft());
aoqi@0 167 test(TESTSTRING_LEFT_WHITESPACE, TESTSTRING_BOTH_WHITESPACE.trimRight());
aoqi@0 168
aoqi@0 169 test(TESTSTRING_MIDDLE_WHITESPACE, TESTSTRING_MIDDLE_WHITESPACE.trim());
aoqi@0 170 test(TESTSTRING_MIDDLE_WHITESPACE, TESTSTRING_MIDDLE_WHITESPACE.trimLeft());
aoqi@0 171 test(TESTSTRING_MIDDLE_WHITESPACE, TESTSTRING_MIDDLE_WHITESPACE.trimRight());

mercurial