| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 import "package:expect/expect.dart"; | |
| 6 | |
| 7 // Characters with Whitespace property (Unicode 6.3). | |
| 8 // 0009..000D ; White_Space # Cc <control-0009>..<control-000D> | |
| 9 // 0020 ; White_Space # Zs SPACE | |
| 10 // 0085 ; White_Space # Cc <control-0085> | |
| 11 // 00A0 ; White_Space # Zs NO-BREAK SPACE | |
| 12 // 1680 ; White_Space # Zs OGHAM SPACE MARK | |
| 13 // 2000..200A ; White_Space # Zs EN QUAD..HAIR SPACE | |
| 14 // 2028 ; White_Space # Zl LINE SEPARATOR | |
| 15 // 2029 ; White_Space # Zp PARAGRAPH SEPARATOR | |
| 16 // 202F ; White_Space # Zs NARROW NO-BREAK SPACE | |
| 17 // 205F ; White_Space # Zs MEDIUM MATHEMATICAL SPACE | |
| 18 // 3000 ; White_Space # Zs IDEOGRAPHIC SPACE | |
| 19 // And BOM: | |
| 20 // FEFF ; Byte order mark. | |
| 21 const WHITESPACE = const [ | |
| 22 0x09, | |
| 23 0x0A, | |
| 24 0x0B, | |
| 25 0x0C, | |
| 26 0x0D, | |
| 27 0x20, | |
| 28 0x85, | |
| 29 0xA0, | |
| 30 0x1680, | |
| 31 0x2000, | |
| 32 0x2001, | |
| 33 0x2002, | |
| 34 0x2003, | |
| 35 0x2004, | |
| 36 0x2005, | |
| 37 0x2006, | |
| 38 0x2007, | |
| 39 0x2008, | |
| 40 0x2009, | |
| 41 0x200A, | |
| 42 0x2028, | |
| 43 0x2029, | |
| 44 0x202F, | |
| 45 0x205F, | |
| 46 0x3000, | |
| 47 0xFEFF, | |
| 48 ]; | |
| 49 | |
| 50 main() { | |
| 51 // Test the whitespace in different positions. | |
| 52 test(ws) { | |
| 53 // trimLeft | |
| 54 Expect.equals("", ws.trimLeft(), "K1"); | |
| 55 Expect.equals("", (ws + ws).trimLeft(), "L2"); | |
| 56 Expect.equals("a" + ws, ("a" + ws).trimLeft(), "L3"); | |
| 57 Expect.equals("a", (ws + "a").trimLeft(), "L4"); | |
| 58 Expect.equals("a" + ws + ws, (ws + ws + "a" + ws + ws).trimLeft(), "L5"); | |
| 59 Expect.equals("a" + ws + "a", (ws + ws + "a" + ws + "a").trimLeft(), "L6"); | |
| 60 var untrimmable = "a" + ws + "a"; | |
| 61 Expect.identical(untrimmable, untrimmable.trimLeft(), "L7"); | |
| 62 // trimRight | |
| 63 Expect.equals("", ws.trimRight(), "R1"); | |
| 64 Expect.equals("", (ws + ws).trimRight(), "R2"); | |
| 65 Expect.equals("a", ("a" + ws).trimRight(), "R3"); | |
| 66 Expect.equals(ws + "a", (ws + "a").trimRight(), "R4"); | |
| 67 Expect.equals(ws + ws + "a", (ws + ws + "a" + ws + ws).trimRight(), "R5"); | |
| 68 Expect.equals("a" + ws + "a", ("a" + ws + "a" + ws + ws).trimRight(), "R6"); | |
| 69 Expect.identical(untrimmable, untrimmable.trimRight(), "R7"); | |
| 70 } | |
| 71 | |
| 72 // Test each whitespace at different locations. | |
| 73 for (var ws in WHITESPACE) { | |
| 74 var c = new String.fromCharCode(ws); | |
| 75 test(c); | |
| 76 } | |
| 77 // Test all whitespaces at once at different locations. | |
| 78 test(new String.fromCharCodes(WHITESPACE)); | |
| 79 | |
| 80 // Empty strings. | |
| 81 Expect.identical("", "".trimLeft()); | |
| 82 Expect.identical("", "".trimRight()); | |
| 83 | |
| 84 // Test all BMP chars and one surrogate pair. | |
| 85 for (int i = 0, j = 0; i <= 0x10000; i++) { | |
| 86 if (j < WHITESPACE.length && i == WHITESPACE[j]) { | |
| 87 j++; | |
| 88 continue; | |
| 89 } | |
| 90 // U+200b is currently being treated as whitespace by some JS engines. | |
| 91 // Should be fixed in tip-of-tree V8 per 2014-02-10. | |
| 92 // This line makes string_trimlr_test/none fail but /01 succeede where | |
| 93 // this bug is in the JS. Both succeede on the VM and where the bug is | |
| 94 // not. Remove this line and comment if all JS engines fix it. | |
| 95 if (i == 0x200b) continue; // //# 01: ok | |
| 96 | |
| 97 var s = new String.fromCharCode(i); | |
| 98 Expect.identical(s, s.trimLeft()); | |
| 99 Expect.identical(s, s.trimRight()); | |
| 100 } | |
| 101 } | |
| OLD | NEW |