Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
| 6 | 6 |
| 7 // TODO(ngeoffray): test String methods with null arguments. | 7 // TODO(ngeoffray): test String methods with null arguments. |
| 8 class StringTest { | 8 class StringTest { |
| 9 | 9 |
| 10 static testMain() { | 10 static testMain() { |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 } | 33 } |
| 34 | 34 |
| 35 static void testOutOfRange() { | 35 static void testOutOfRange() { |
| 36 String a = "Hello"; | 36 String a = "Hello"; |
| 37 bool exception_caught = false; | 37 bool exception_caught = false; |
| 38 try { | 38 try { |
| 39 var c = a[20]; // Throw exception. | 39 var c = a[20]; // Throw exception. |
| 40 } on RangeError catch (e) { | 40 } on RangeError catch (e) { |
| 41 exception_caught = true; | 41 exception_caught = true; |
| 42 } | 42 } |
| 43 Expect.equals(true, exception_caught); | 43 Expect.isTrue(exception_caught); |
| 44 } | 44 } |
| 45 | 45 |
| 46 static testIllegalArgument() { | 46 static testIllegalArgument() { |
| 47 String a = "Hello"; | 47 String a = "Hello"; |
| 48 bool exception_caught = false; | 48 bool exception_caught = false; |
| 49 try { | 49 try { |
| 50 var c = a[2.2]; // Throw exception. | 50 var c = a[2.2]; // Throw exception. |
| 51 Expect.equals(true, false); | 51 Expect.fail("Accepting doulbe as index"); |
|
floitsch
2013/06/13 11:54:58
double
Lasse Reichstein Nielsen
2013/06/13 12:37:49
Done.
| |
| 52 } on ArgumentError catch (e) { | 52 } on ArgumentError catch (e) { |
| 53 exception_caught = true; | 53 exception_caught = true; |
| 54 } on TypeError catch (e) { // Thrown in checked mode only. | 54 } on TypeError catch (e) { // Thrown in checked mode only. |
| 55 exception_caught = true; | 55 exception_caught = true; |
| 56 } | 56 } |
| 57 Expect.equals(true, exception_caught); | 57 Expect.isTrue(exception_caught); |
| 58 } | 58 } |
| 59 | 59 |
| 60 static testIndex() { | 60 static testIndex() { |
| 61 String str = "string"; | 61 String str = "string"; |
| 62 for (int i = 0; i < str.length; i++) { | 62 for (int i = 0; i < str.length; i++) { |
| 63 Expect.equals(true, str[i] is String); | 63 Expect.isTrue(str[i] is String); |
| 64 testStringLength(1, str[i]); | 64 testStringLength(1, str[i]); |
| 65 } | 65 } |
| 66 } | 66 } |
| 67 | 67 |
| 68 static testCodeUnitAt() { | 68 static testCodeUnitAt() { |
| 69 String str = "string"; | 69 String str = "string"; |
| 70 for (int i = 0; i < str.length; i++) { | 70 for (int i = 0; i < str.length; i++) { |
| 71 Expect.equals(true, str.codeUnitAt(i) is int); | 71 Expect.isTrue(str.codeUnitAt(i) is int); |
| 72 } | 72 } |
| 73 } | 73 } |
| 74 | 74 |
| 75 static testConcat() { | 75 static testConcat() { |
| 76 var a = "One"; | 76 var a = "One"; |
| 77 var b = "Four"; | 77 var b = "Four"; |
| 78 var c = a + b; | 78 var c = a + b; |
| 79 testStringLength(7, c); | 79 testStringLength(7, c); |
| 80 Expect.equals("OneFour", c); | 80 Expect.equals("OneFour", c); |
| 81 } | 81 } |
| 82 | 82 |
| 83 static testEquals() { | 83 static testEquals() { |
| 84 Expect.equals("str", "str"); | 84 Expect.equals("str", "str"); |
| 85 | 85 |
| 86 Expect.equals("str", "s" + "t" + "r"); | 86 Expect.equals("str", "s" + "t" + "r"); |
| 87 Expect.equals("s" + "t" + "r", "str"); | 87 Expect.equals("s" + "t" + "r", "str"); |
| 88 | 88 |
| 89 Expect.equals(false, "str" == "s"); | 89 Expect.isFalse("str" == "s"); |
| 90 Expect.equals(false, "str" == "r"); | 90 Expect.isFalse("str" == "r"); |
| 91 Expect.equals(false, "str" == "st"); | 91 Expect.isFalse("str" == "st"); |
| 92 Expect.equals(false, "str" == "tr"); | 92 Expect.isFalse("str" == "tr"); |
| 93 | 93 |
| 94 Expect.equals(false, "s" == "str"); | 94 Expect.isFalse("s" == "str"); |
| 95 Expect.equals(false, "r" == "str"); | 95 Expect.isFalse("r" == "str"); |
| 96 Expect.equals(false, "st" == "str"); | 96 Expect.isFalse("st" == "str"); |
| 97 Expect.equals(false, "tr" == "str"); | 97 Expect.isFalse("tr" == "str"); |
| 98 | 98 |
| 99 Expect.equals(false, "" == "s"); | 99 Expect.isFalse("" == "s"); |
| 100 Expect.equals("", ""); | 100 Expect.equals("", ""); |
| 101 } | 101 } |
| 102 | 102 |
| 103 static testEndsWith() { | 103 static testEndsWith() { |
| 104 Expect.equals(true, "str".endsWith("r")); | 104 Expect.isTrue("str".endsWith("r")); |
| 105 Expect.equals(true, "str".endsWith("tr")); | 105 Expect.isTrue("str".endsWith("tr")); |
| 106 Expect.equals(true, "str".endsWith("str")); | 106 Expect.isTrue("str".endsWith("str")); |
| 107 | 107 |
| 108 Expect.equals(false, "str".endsWith("stri")); | 108 Expect.isFalse("str".endsWith("stri")); |
| 109 Expect.equals(false, "str".endsWith("t")); | 109 Expect.isFalse("str".endsWith("t")); |
| 110 Expect.equals(false, "str".endsWith("st")); | 110 Expect.isFalse("str".endsWith("st")); |
| 111 Expect.equals(false, "str".endsWith("s")); | 111 Expect.isFalse("str".endsWith("s")); |
| 112 | 112 |
| 113 Expect.equals(true, "".endsWith("")); | 113 Expect.isTrue("".endsWith("")); |
| 114 Expect.equals(false, "".endsWith("s")); | 114 Expect.isFalse("".endsWith("s")); |
| 115 } | 115 } |
| 116 | 116 |
| 117 static testStartsWith() { | 117 static testStartsWith() { |
| 118 Expect.equals(true, "str".startsWith("s")); | 118 Expect.isTrue("str".startsWith("s")); |
| 119 Expect.equals(true, "str".startsWith("st")); | 119 Expect.isTrue("str".startsWith("st")); |
| 120 Expect.equals(true, "str".startsWith("str")); | 120 Expect.isTrue("str".startsWith("str")); |
| 121 | 121 |
| 122 Expect.equals(false, "str".startsWith("stri")); | 122 Expect.isFalse("str".startsWith("stri")); |
| 123 Expect.equals(false, "str".startsWith("r")); | 123 Expect.isFalse("str".startsWith("r")); |
| 124 Expect.equals(false, "str".startsWith("tr")); | 124 Expect.isFalse("str".startsWith("tr")); |
| 125 Expect.equals(false, "str".startsWith("t")); | 125 Expect.isFalse("str".startsWith("t")); |
| 126 | 126 |
| 127 Expect.equals(true, "".startsWith("")); | 127 Expect.isTrue("".startsWith("")); |
| 128 Expect.equals(false, "".startsWith("s")); | 128 Expect.isFalse("".startsWith("s")); |
| 129 | |
| 130 var regexp = new RegExp("s(?:tr?)?"); | |
| 131 Expect.isTrue("s".startsWith(regexp)); | |
| 132 Expect.isTrue("st".startsWith(regexp)); | |
| 133 Expect.isTrue("str".startsWith(regexp)); | |
| 134 Expect.isTrue("sX".startsWith(regexp)); | |
| 135 Expect.isTrue("stX".startsWith(regexp)); | |
| 136 Expect.isTrue("strX".startsWith(regexp)); | |
| 137 | |
| 138 Expect.isFalse("".startsWith(regexp)); | |
| 139 Expect.isFalse("astr".startsWith(regexp)); | |
| 140 | |
| 141 Expect.isTrue("".startsWith(new RegExp(""))); | |
| 142 Expect.isTrue("".startsWith(new RegExp("a?"))); | |
| 129 } | 143 } |
| 130 | 144 |
| 131 static testIndexOf() { | 145 static testIndexOf() { |
| 132 Expect.equals(0, "str".indexOf("", 0)); | 146 Expect.equals(0, "str".indexOf("", 0)); |
| 133 Expect.equals(0, "".indexOf("", 0)); | 147 Expect.equals(0, "".indexOf("", 0)); |
| 134 Expect.equals(-1, "".indexOf("a", 0)); | 148 Expect.equals(-1, "".indexOf("a", 0)); |
| 135 | 149 |
| 136 Expect.equals(1, "str".indexOf("t", 0)); | 150 Expect.equals(1, "str".indexOf("t", 0)); |
| 137 Expect.equals(1, "str".indexOf("tr", 0)); | 151 Expect.equals(1, "str".indexOf("tr", 0)); |
| 138 Expect.equals(0, "str".indexOf("str", 0)); | 152 Expect.equals(0, "str".indexOf("str", 0)); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 155 Expect.equals(3, "strstr".indexOf("str", 2)); | 169 Expect.equals(3, "strstr".indexOf("str", 2)); |
| 156 Expect.equals(3, "strstr".indexOf("str", 3)); | 170 Expect.equals(3, "strstr".indexOf("str", 3)); |
| 157 Expect.equals(3, "strstr".indexOf("st", 1)); | 171 Expect.equals(3, "strstr".indexOf("st", 1)); |
| 158 Expect.equals(3, "strstr".indexOf("s", 3)); | 172 Expect.equals(3, "strstr".indexOf("s", 3)); |
| 159 Expect.equals(5, "strstr".indexOf("r", 3)); | 173 Expect.equals(5, "strstr".indexOf("r", 3)); |
| 160 Expect.equals(5, "strstr".indexOf("r", 4)); | 174 Expect.equals(5, "strstr".indexOf("r", 4)); |
| 161 Expect.equals(5, "strstr".indexOf("r", 5)); | 175 Expect.equals(5, "strstr".indexOf("r", 5)); |
| 162 | 176 |
| 163 String str = "hello"; | 177 String str = "hello"; |
| 164 for (int i = 0; i < 10; i++) { | 178 for (int i = 0; i < 10; i++) { |
| 165 int result = str.indexOf("", i); | |
| 166 if (i > str.length) { | 179 if (i > str.length) { |
| 167 Expect.equals(str.length, result); | 180 Expect.throws(() => str.indexOf("", i)); |
| 168 } else { | 181 } else { |
| 182 int result = str.indexOf("", i); | |
| 169 Expect.equals(i, result); | 183 Expect.equals(i, result); |
| 170 } | 184 } |
| 171 } | 185 } |
| 186 | |
| 187 var re = new RegExp("an?"); | |
| 188 Expect.equals(1, "banana".indexOf(re)); | |
| 189 Expect.equals(1, "banana".indexOf(re, 0)); | |
| 190 Expect.equals(1, "banana".indexOf(re, 1)); | |
| 191 Expect.equals(3, "banana".indexOf(re, 2)); | |
| 192 Expect.equals(3, "banana".indexOf(re, 3)); | |
| 193 Expect.equals(5, "banana".indexOf(re, 4)); | |
| 194 Expect.equals(5, "banana".indexOf(re, 5)); | |
| 195 Expect.equals(-1, "banana".indexOf(re, 6)); | |
| 196 Expect.throws(() => "banana".indexOf(re, -1)); | |
| 197 Expect.throws(() => "banana".indexOf(re, 7)); | |
| 198 re = new RegExp("x?"); | |
| 199 for (int i = 0; i <= str.length; i++) { | |
| 200 Expect.equals(i, str.indexOf(re, i)); | |
| 201 } | |
| 172 } | 202 } |
| 173 | 203 |
| 174 static testLastIndexOf() { | 204 static testLastIndexOf() { |
| 175 Expect.equals(2, "str".lastIndexOf("", 2)); | 205 Expect.equals(2, "str".lastIndexOf("", 2)); |
| 176 Expect.equals(0, "".lastIndexOf("", 0)); | 206 Expect.equals(0, "".lastIndexOf("", 0)); |
| 177 Expect.equals(-1, "".lastIndexOf("a", 0)); | 207 Expect.equals(-1, "".lastIndexOf("a", 0)); |
| 178 | 208 |
| 179 Expect.equals(1, "str".lastIndexOf("t", 2)); | 209 Expect.equals(1, "str".lastIndexOf("t", 2)); |
| 180 Expect.equals(1, "str".lastIndexOf("tr", 2)); | 210 Expect.equals(1, "str".lastIndexOf("tr", 2)); |
| 181 Expect.equals(0, "str".lastIndexOf("str", 2)); | 211 Expect.equals(0, "str".lastIndexOf("str", 2)); |
| 182 Expect.equals(0, "str".lastIndexOf("st", 2)); | 212 Expect.equals(0, "str".lastIndexOf("st", 2)); |
| 183 Expect.equals(0, "str".lastIndexOf("s", 2)); | 213 Expect.equals(0, "str".lastIndexOf("s", 2)); |
| 184 Expect.equals(2, "str".lastIndexOf("r", 2)); | 214 Expect.equals(2, "str".lastIndexOf("r", 2)); |
| 185 Expect.equals(-1, "str".lastIndexOf("string", 2)); | 215 Expect.equals(-1, "str".lastIndexOf("string", 2)); |
| 186 | 216 |
| 187 Expect.equals(4, "strstr".lastIndexOf("t", 5)); | 217 Expect.equals(4, "strstr".lastIndexOf("t", 5)); |
| 188 Expect.equals(4, "strstr".lastIndexOf("tr", 5)); | 218 Expect.equals(4, "strstr".lastIndexOf("tr", 5)); |
| 189 Expect.equals(3, "strstr".lastIndexOf("str", 5)); | 219 Expect.equals(3, "strstr".lastIndexOf("str", 5)); |
| 190 Expect.equals(3, "strstr".lastIndexOf("st", 5)); | 220 Expect.equals(3, "strstr".lastIndexOf("st", 5)); |
| 191 Expect.equals(3, "strstr".lastIndexOf("s", 5)); | 221 Expect.equals(3, "strstr".lastIndexOf("s", 5)); |
| 192 Expect.equals(5, "strstr".lastIndexOf("r", 5)); | 222 Expect.equals(5, "strstr".lastIndexOf("r", 5)); |
| 193 Expect.equals(-1, "str".lastIndexOf("string", 5)); | 223 Expect.throws(() { |
| 194 | 224 "str".lastIndexOf("string", 5); |
| 225 }); | |
| 195 Expect.equals(4, "strstr".lastIndexOf("t", 5)); | 226 Expect.equals(4, "strstr".lastIndexOf("t", 5)); |
| 196 Expect.equals(4, "strstr".lastIndexOf("tr", 5)); | 227 Expect.equals(4, "strstr".lastIndexOf("tr", 5)); |
| 197 Expect.equals(3, "strstr".lastIndexOf("str", 5)); | 228 Expect.equals(3, "strstr".lastIndexOf("str", 5)); |
| 198 Expect.equals(3, "strstr".lastIndexOf("str", 5)); | 229 Expect.equals(3, "strstr".lastIndexOf("str", 5)); |
| 199 Expect.equals(3, "strstr".lastIndexOf("str", 5)); | 230 Expect.equals(3, "strstr".lastIndexOf("str", 5)); |
| 200 Expect.equals(3, "strstr".lastIndexOf("st", 5)); | 231 Expect.equals(3, "strstr".lastIndexOf("st", 5)); |
| 201 Expect.equals(3, "strstr".lastIndexOf("s", 5)); | 232 Expect.equals(3, "strstr".lastIndexOf("s", 5)); |
| 202 Expect.equals(5, "strstr".lastIndexOf("r", 5)); | 233 Expect.equals(5, "strstr".lastIndexOf("r", 5)); |
| 203 Expect.equals(2, "strstr".lastIndexOf("r", 4)); | 234 Expect.equals(2, "strstr".lastIndexOf("r", 4)); |
| 204 Expect.equals(2, "strstr".lastIndexOf("r", 3)); | 235 Expect.equals(2, "strstr".lastIndexOf("r", 3)); |
| 205 Expect.equals(5, "strstr".lastIndexOf("r")); | 236 Expect.equals(5, "strstr".lastIndexOf("r")); |
| 206 Expect.equals(5, "strstr".lastIndexOf("r"), null); | 237 Expect.equals(5, "strstr".lastIndexOf("r", null)); |
| 207 | 238 |
| 208 String str = "hello"; | 239 String str = "hello"; |
| 209 for (int i = 0; i < 10; i++) { | 240 for (int i = 0; i < 10; i++) { |
| 210 int result = str.lastIndexOf("", i); | |
| 211 if (i > str.length) { | 241 if (i > str.length) { |
| 212 Expect.equals(str.length, result); | 242 Expect.throws(() => str.indexOf("", i)); |
| 213 } else { | 243 } else { |
| 244 int result = str.lastIndexOf("", i); | |
| 214 Expect.equals(i, result); | 245 Expect.equals(i, result); |
| 215 } | 246 } |
| 216 } | 247 } |
| 248 | |
| 249 var re = new RegExp("an?"); | |
| 250 Expect.equals(5, "banana".lastIndexOf(re)); | |
| 251 Expect.equals(5, "banana".lastIndexOf(re, 6)); | |
| 252 Expect.equals(5, "banana".lastIndexOf(re, 5)); | |
| 253 Expect.equals(3, "banana".lastIndexOf(re, 4)); | |
| 254 Expect.equals(3, "banana".lastIndexOf(re, 3)); | |
| 255 Expect.equals(1, "banana".lastIndexOf(re, 2)); | |
| 256 Expect.equals(1, "banana".lastIndexOf(re, 1)); | |
| 257 Expect.equals(-1, "banana".lastIndexOf(re, 0)); | |
| 258 Expect.throws(() => "banana".lastIndexOf(re, -1)); | |
| 259 Expect.throws(() => "banana".lastIndexOf(re, 7)); | |
| 260 re = new RegExp("x?"); | |
| 261 for (int i = 0; i <= str.length; i++) { | |
| 262 Expect.equals(i, str.indexOf(re, i)); | |
| 263 } | |
| 217 } | 264 } |
| 218 | 265 |
| 219 static testContains() { | 266 static testContains() { |
| 220 Expect.equals(true, "str".contains("s", 0)); | 267 Expect.isTrue("str".contains("s", 0)); |
| 221 Expect.equals(true, "str".contains("st", 0)); | 268 Expect.isTrue("str".contains("st", 0)); |
| 222 Expect.equals(true, "str".contains("str", 0)); | 269 Expect.isTrue("str".contains("str", 0)); |
| 223 Expect.equals(true, "str".contains("t", 0)); | 270 Expect.isTrue("str".contains("t", 0)); |
| 224 Expect.equals(true, "str".contains("r", 0)); | 271 Expect.isTrue("str".contains("r", 0)); |
| 225 Expect.equals(true, "str".contains("tr", 0)); | 272 Expect.isTrue("str".contains("tr", 0)); |
| 226 | 273 |
| 227 Expect.equals(false, "str".contains("sr", 0)); | 274 Expect.isFalse("str".contains("sr", 0)); |
| 228 Expect.equals(false, "str".contains("string", 0)); | 275 Expect.isFalse("str".contains("string", 0)); |
| 229 | 276 |
| 230 Expect.equals(true, "str".contains("", 0)); | 277 Expect.isTrue("str".contains("", 0)); |
| 231 Expect.equals(true, "".contains("", 0)); | 278 Expect.isTrue("".contains("", 0)); |
| 232 Expect.equals(false, "".contains("s", 0)); | 279 Expect.isFalse("".contains("s", 0)); |
| 233 } | 280 } |
| 234 | 281 |
| 235 static testReplaceAll() { | 282 static testReplaceAll() { |
| 236 Expect.equals( | 283 Expect.equals( |
| 237 "AtoBtoCDtoE", "AfromBfromCDfromE".replaceAll("from", "to")); | 284 "AtoBtoCDtoE", "AfromBfromCDfromE".replaceAll("from", "to")); |
| 238 | 285 |
| 239 // Test with the replaced string at the begining. | 286 // Test with the replaced string at the begining. |
| 240 Expect.equals( | 287 Expect.equals( |
| 241 "toABtoCDtoE", "fromABfromCDfromE".replaceAll("from", "to")); | 288 "toABtoCDtoE", "fromABfromCDfromE".replaceAll("from", "to")); |
| 242 | 289 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 296 | 343 |
| 297 void testStringLength(int length, String str) { | 344 void testStringLength(int length, String str) { |
| 298 Expect.equals(length, str.length); | 345 Expect.equals(length, str.length); |
| 299 (length == 0 ? Expect.isTrue : Expect.isFalse)(str.isEmpty); | 346 (length == 0 ? Expect.isTrue : Expect.isFalse)(str.isEmpty); |
| 300 (length != 0 ? Expect.isTrue : Expect.isFalse)(str.isNotEmpty); | 347 (length != 0 ? Expect.isTrue : Expect.isFalse)(str.isNotEmpty); |
| 301 } | 348 } |
| 302 | 349 |
| 303 main() { | 350 main() { |
| 304 StringTest.testMain(); | 351 StringTest.testMain(); |
| 305 } | 352 } |
| OLD | NEW |