OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 /** | 5 /** |
6 * Tests the DateFormat library in dart. This file contains core tests that | 6 * Tests the DateFormat library in dart. This file contains core tests that |
7 * are run regardless of where the locale data is found, so it doesn't expect to | 7 * are run regardless of where the locale data is found, so it doesn't expect to |
8 * be run on its own, but rather to be imported and run from another test file. | 8 * be run on its own, but rather to be imported and run from another test file. |
9 */ | 9 */ |
10 | 10 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 DateFormat.ABBR_QUARTER, | 151 DateFormat.ABBR_QUARTER, |
152 DateFormat.YEAR, | 152 DateFormat.YEAR, |
153 DateFormat.YEAR_NUM_MONTH, | 153 DateFormat.YEAR_NUM_MONTH, |
154 DateFormat.YEAR_ABBR_MONTH, | 154 DateFormat.YEAR_ABBR_MONTH, |
155 DateFormat.YEAR_MONTH, | 155 DateFormat.YEAR_MONTH, |
156 DateFormat.MONTH_WEEKDAY_DAY, | 156 DateFormat.MONTH_WEEKDAY_DAY, |
157 DateFormat.NUM_MONTH_WEEKDAY_DAY, | 157 DateFormat.NUM_MONTH_WEEKDAY_DAY, |
158 DateFormat.ABBR_MONTH_WEEKDAY_DAY]; | 158 DateFormat.ABBR_MONTH_WEEKDAY_DAY]; |
159 for(int i = 0; i < formatsToTest.length; i++) { | 159 for(int i = 0; i < formatsToTest.length; i++) { |
160 var skeleton = formatsToTest[i]; | 160 var skeleton = formatsToTest[i]; |
161 if (!badSkeletons.some((x) => x == skeleton)) { | 161 if (!badSkeletons.any((x) => x == skeleton)) { |
162 var format = new DateFormat(skeleton, localeName); | 162 var format = new DateFormat(skeleton, localeName); |
163 var actualResult = format.format(date); | 163 var actualResult = format.format(date); |
164 var parsed = format.parse(actualResult); | 164 var parsed = format.parse(actualResult); |
165 var thenPrintAgain = format.format(parsed); | 165 var thenPrintAgain = format.format(parsed); |
166 expect(thenPrintAgain, equals(actualResult)); | 166 expect(thenPrintAgain, equals(actualResult)); |
167 } | 167 } |
168 } | 168 } |
169 } | 169 } |
170 | 170 |
171 /** A shortcut for returning all the locales we have available.*/ | 171 /** A shortcut for returning all the locales we have available.*/ |
172 List<String> allLocales() => DateFormat.allLocalesWithSymbols(); | 172 List<String> allLocales() => DateFormat.allLocalesWithSymbols(); |
173 | 173 |
174 /** | 174 /** |
175 * Return only the odd-numbered locales. A simple way to divide the list into | 175 * Return only the odd-numbered locales. A simple way to divide the list into |
176 * two roughly equal parts. | 176 * two roughly equal parts. |
177 */ | 177 */ |
178 List oddLocales() { | 178 List oddLocales() { |
179 int i = 1; | 179 int i = 1; |
180 return allLocales().filter((x) => (i++).isOdd); | 180 return allLocales().where((x) => (i++).isOdd).toList(); |
181 } | 181 } |
182 | 182 |
183 /** | 183 /** |
184 * Return a set of a few locales to run just the tests on a small sample. | 184 * Return a set of a few locales to run just the tests on a small sample. |
185 */ | 185 */ |
186 List smallSetOfLocales() { | 186 List smallSetOfLocales() { |
187 return allLocales().getRange(0,10); | 187 return allLocales().getRange(0,10); |
188 } | 188 } |
189 | 189 |
190 /** | 190 /** |
191 * Return only the even-numbered locales. A simple way to divide the list into | 191 * Return only the even-numbered locales. A simple way to divide the list into |
192 * two roughly equal parts. | 192 * two roughly equal parts. |
193 */ | 193 */ |
194 List evenLocales() { | 194 List evenLocales() { |
195 int i = 1; | 195 int i = 1; |
196 return allLocales().filter((x) => !((i++).isOdd)); | 196 return allLocales().where((x) => !((i++).isOdd)).toList(); |
197 } | 197 } |
198 | 198 |
199 // TODO(alanknight): Run specific tests for the en_ISO locale which isn't | 199 // TODO(alanknight): Run specific tests for the en_ISO locale which isn't |
200 // included in CLDR, and check that our patterns for it are correct (they | 200 // included in CLDR, and check that our patterns for it are correct (they |
201 // very likely aren't). | 201 // very likely aren't). |
202 runDateTests([List<String> subset]) { | 202 runDateTests([List<String> subset]) { |
203 test('Multiple patterns', () { | 203 test('Multiple patterns', () { |
204 var date = new Date.now(); | 204 var date = new Date.now(); |
205 var multiple1 = new DateFormat.yMd().add_jms(); | 205 var multiple1 = new DateFormat.yMd().add_jms(); |
206 var multiple2 = new DateFormat("yMd").add_jms(); | 206 var multiple2 = new DateFormat("yMd").add_jms(); |
207 var separate1 = new DateFormat.yMd(); | 207 var separate1 = new DateFormat.yMd(); |
208 var separate2 = new DateFormat.jms(); | 208 var separate2 = new DateFormat.jms(); |
209 var separateFormat = "${separate1.format(date)} ${separate2.format(date)}"; | 209 var separateFormat = "${separate1.format(date)} ${separate2.format(date)}"; |
210 expect(multiple1.format(date), equals(multiple2.format(date))); | 210 expect(multiple1.format(date), equals(multiple2.format(date))); |
211 expect(multiple1.format(date), equals(separateFormat)); | 211 expect(multiple1.format(date), equals(separateFormat)); |
212 var customPunctuation = new DateFormat("yMd").addPattern("jms",":::"); | 212 var customPunctuation = new DateFormat("yMd").addPattern("jms",":::"); |
213 var custom = "${separate1.format(date)}:::${separate2.format(date)}"; | 213 var custom = "${separate1.format(date)}:::${separate2.format(date)}"; |
214 expect(customPunctuation.format(date), equals(custom)); | 214 expect(customPunctuation.format(date), equals(custom)); |
215 }); | 215 }); |
216 | 216 |
217 test('Basic date format parsing', () { | 217 test('Basic date format parsing', () { |
218 var date_format = new DateFormat("d"); | 218 var date_format = new DateFormat("d"); |
219 expect( | 219 expect( |
220 date_format.parsePattern("hh:mm:ss").map((x) => x.pattern), | 220 date_format.parsePattern("hh:mm:ss") |
| 221 .mappedBy((x) => x.pattern) |
| 222 .toList(), |
221 orderedEquals(["hh",":", "mm",":","ss"])); | 223 orderedEquals(["hh",":", "mm",":","ss"])); |
222 expect( | 224 expect( |
223 date_format.parsePattern("hh:mm:ss").map((x) => x.pattern), | 225 date_format.parsePattern("hh:mm:ss") |
| 226 .mappedBy((x) => x.pattern) |
| 227 .toList(), |
224 orderedEquals(["hh",":", "mm",":","ss"])); | 228 orderedEquals(["hh",":", "mm",":","ss"])); |
225 }); | 229 }); |
226 | 230 |
227 test('Test ALL the supported formats on representative locales', () { | 231 test('Test ALL the supported formats on representative locales', () { |
228 var aDate = new Date(2012, 1, 27, 20, 58, 59, 0); | 232 var aDate = new Date(2012, 1, 27, 20, 58, 59, 0); |
229 testLocale("en_US", English, aDate); | 233 testLocale("en_US", English, aDate); |
230 if (subset.length > 1) { | 234 if (subset.length > 1) { |
231 // Don't run if we have just one locale, so some of these won't be there. | 235 // Don't run if we have just one locale, so some of these won't be there. |
232 testLocale("de_DE", German, aDate); | 236 testLocale("de_DE", German, aDate); |
233 testLocale("fr_FR", French, aDate); | 237 testLocale("fr_FR", French, aDate); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 | 355 |
352 test('Test default format', () { | 356 test('Test default format', () { |
353 var someDate = new Date(2012, 1, 27, 20, 58, 59, 1); | 357 var someDate = new Date(2012, 1, 27, 20, 58, 59, 1); |
354 var emptyFormat = new DateFormat(null, "en_US"); | 358 var emptyFormat = new DateFormat(null, "en_US"); |
355 var knownDefault = new DateFormat.yMMMMd("en_US").add_jms(); | 359 var knownDefault = new DateFormat.yMMMMd("en_US").add_jms(); |
356 var result = emptyFormat.format(someDate); | 360 var result = emptyFormat.format(someDate); |
357 var knownResult = knownDefault.format(someDate); | 361 var knownResult = knownDefault.format(someDate); |
358 expect(result, knownResult); | 362 expect(result, knownResult); |
359 }); | 363 }); |
360 } | 364 } |
OLD | NEW |