test/script/basic/JDK-8019987.js

Wed, 18 Jun 2014 12:35:42 -0700

author
katleman
date
Wed, 18 Jun 2014 12:35:42 -0700
changeset 863
6e9c4e34bc61
parent 0
b1a7da25b547
permissions
-rw-r--r--

Added tag jdk8u20-b19 for changeset b047df215de4

     1 /*
     2  * Copyright (c) 2010, 2013, 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  */
    24 /**
    25  * JDK-8019987: String trimRight and trimLeft could be defined.
    26  *
    27  * @test
    28  * @run
    29  */
    31 var TESTSTRING = "abcde";
    33 var SPACES                       = "     ";
    34 var TESTSTRING_LEFT_SPACES       = SPACES + TESTSTRING;
    35 var TESTSTRING_RIGHT_SPACES      = TESTSTRING + SPACES;
    36 var TESTSTRING_BOTH_SPACES       = SPACES + TESTSTRING + SPACES;
    37 var TESTSTRING_MIDDLE_SPACES     = TESTSTRING + SPACES + TESTSTRING;
    39 var WHITESPACE =
    40         " \t"    + // space and tab
    41         "\n\r"   + // newline and return
    42         "\u2028" + // line separator
    43         "\u2029" + // paragraph separator
    44         "\u000b" + // tabulation line
    45         "\u000c" + // ff (ctrl-l)
    46         "\u00a0" + // Latin-1 space
    47         "\u1680" + // Ogham space mark
    48         "\u180e" + // separator, Mongolian vowel
    49         "\u2000" + // en quad
    50         "\u2001" + // em quad
    51         "\u2002" + // en space
    52         "\u2003" + // em space
    53         "\u2004" + // three-per-em space
    54         "\u2005" + // four-per-em space
    55         "\u2006" + // six-per-em space
    56         "\u2007" + // figure space
    57         "\u2008" + // punctuation space
    58         "\u2009" + // thin space
    59         "\u200a" + // hair space
    60         "\u202f" + // narrow no-break space
    61         "\u205f" + // medium mathematical space
    62         "\u3000" + // ideographic space
    63         "\ufeff";  // byte order mark
    64 var TESTSTRING_LEFT_WHITESPACE   = WHITESPACE + TESTSTRING;
    65 var TESTSTRING_RIGHT_WHITESPACE  = TESTSTRING + WHITESPACE;
    66 var TESTSTRING_BOTH_WHITESPACE   = WHITESPACE + TESTSTRING + WHITESPACE;
    67 var TESTSTRING_MIDDLE_WHITESPACE = TESTSTRING + WHITESPACE + TESTSTRING;
    69 function escape(string) {
    70     var sb = new java.lang.StringBuilder();
    71     sb.append("\"");
    73     for (var i = 0; i < string.length; i++) {
    74         var ch = string.charAt(i);
    76         switch (ch) {
    77         case '\\':
    78             sb.append("\\\\");
    79             break;
    80         case '"':
    81             sb.append("\\\"");
    82             break;
    83         case '\'':
    84             sb.append("\\\'");
    85             break;
    86         case '\b':
    87             sb.append("\\b");
    88             break;
    89         case '\f':
    90             sb.append("\\f");
    91             break;
    92         case '\n':
    93             sb.append("\\n");
    94             break;
    95         case '\r':
    96             sb.append("\\r");
    97             break;
    98         case '\t':
    99             sb.append("\\t");
   100             break;
   101         default:
   102             var code = string.charCodeAt(i);
   104             if (code < 0x20 || code >= 0xFF) {
   105                 sb.append("\\u");
   107                 var hex = java.lang.Integer.toHexString(code);
   108                 for (var i = hex.length; i < 4; i++) {
   109                     sb.append('0');
   110                 }
   111                 sb.append(hex);
   112             } else {
   113                 sb.append(ch);
   114             }
   116             break;
   117         }
   118     }
   120     sb.append("\"");
   122     return sb.toString();
   123 }
   125 var count = 0;
   126 function test(expected, trimmed) {
   127     count++;
   128     if (trimmed != expected) {
   129         print(count + ": Expected: " + escape(expected) + ", found: " + escape(trimmed));
   130     }
   131 }
   133 test("",                           SPACES.trim());
   134 test("",                           SPACES.trimLeft());
   135 test("",                           SPACES.trimRight());
   137 test(TESTSTRING,                   TESTSTRING_LEFT_SPACES.trim());
   138 test(TESTSTRING,                   TESTSTRING_LEFT_SPACES.trimLeft());
   139 test(TESTSTRING_LEFT_SPACES,       TESTSTRING_LEFT_SPACES.trimRight());
   141 test(TESTSTRING,                   TESTSTRING_RIGHT_SPACES.trim());
   142 test(TESTSTRING_RIGHT_SPACES,      TESTSTRING_RIGHT_SPACES.trimLeft());
   143 test(TESTSTRING,                   TESTSTRING_RIGHT_SPACES.trimRight());
   145 test(TESTSTRING,                   TESTSTRING_BOTH_SPACES.trim());
   146 test(TESTSTRING_RIGHT_SPACES,      TESTSTRING_BOTH_SPACES.trimLeft());
   147 test(TESTSTRING_LEFT_SPACES,       TESTSTRING_BOTH_SPACES.trimRight());
   149 test(TESTSTRING_MIDDLE_SPACES,     TESTSTRING_MIDDLE_SPACES.trim());
   150 test(TESTSTRING_MIDDLE_SPACES,     TESTSTRING_MIDDLE_SPACES.trimLeft());
   151 test(TESTSTRING_MIDDLE_SPACES,     TESTSTRING_MIDDLE_SPACES.trimRight());
   153 test("",                           WHITESPACE.trim());
   154 test("",                           WHITESPACE.trimLeft());
   155 test("",                           WHITESPACE.trimRight());
   157 test(TESTSTRING,                   TESTSTRING_LEFT_WHITESPACE.trim());
   158 test(TESTSTRING,                   TESTSTRING_LEFT_WHITESPACE.trimLeft());
   159 test(TESTSTRING_LEFT_WHITESPACE,   TESTSTRING_LEFT_WHITESPACE.trimRight());
   161 test(TESTSTRING,                   TESTSTRING_RIGHT_WHITESPACE.trim());
   162 test(TESTSTRING_RIGHT_WHITESPACE,  TESTSTRING_RIGHT_WHITESPACE.trimLeft());
   163 test(TESTSTRING,                   TESTSTRING_RIGHT_WHITESPACE.trimRight());
   165 test(TESTSTRING,                   TESTSTRING_BOTH_WHITESPACE.trim());
   166 test(TESTSTRING_RIGHT_WHITESPACE,  TESTSTRING_BOTH_WHITESPACE.trimLeft());
   167 test(TESTSTRING_LEFT_WHITESPACE,   TESTSTRING_BOTH_WHITESPACE.trimRight());
   169 test(TESTSTRING_MIDDLE_WHITESPACE, TESTSTRING_MIDDLE_WHITESPACE.trim());
   170 test(TESTSTRING_MIDDLE_WHITESPACE, TESTSTRING_MIDDLE_WHITESPACE.trimLeft());
   171 test(TESTSTRING_MIDDLE_WHITESPACE, TESTSTRING_MIDDLE_WHITESPACE.trimRight());

mercurial