Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: pkg/yaml/test/yaml_test.dart

Issue 302313007: Attach source range information to parsed YAML nodes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: fix tests Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/yaml/test/utils.dart ('k') | sdk/lib/_internal/pub/lib/src/barback.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 library yaml.test; 5 library yaml.test;
6 6
7 // TODO(rnystrom): rewrite tests so that they don't need "Expect". 7 // TODO(rnystrom): rewrite tests so that they don't need "Expect".
8 import 'package:unittest/unittest.dart'; 8 import 'package:unittest/unittest.dart';
9 import 'package:yaml/yaml.dart'; 9 import 'package:yaml/yaml.dart';
10 10
11 import 'utils.dart'; 11 import 'utils.dart';
12 12
13 main() { 13 main() {
14 var infinity = double.parse("Infinity"); 14 var infinity = double.parse("Infinity");
15 var nan = double.parse("NaN"); 15 var nan = double.parse("NaN");
16 16
17 group('YamlMap', () {
18 group('accepts as a key', () {
19 _expectKeyWorks(keyFn()) {
20 var map = yamlMap();
21 map[keyFn()] = 5;
22 expect(map.containsKey(keyFn()), isTrue);
23 expect(map[keyFn()], 5);
24 }
25
26 test('null', () => _expectKeyWorks(() => null));
27 test('true', () => _expectKeyWorks(() => true));
28 test('false', () => _expectKeyWorks(() => false));
29 test('a list', () => _expectKeyWorks(() => [1, 2, 3]));
30 test('a map', () => _expectKeyWorks(() => {'foo': 'bar'}));
31 test('a YAML map', () => _expectKeyWorks(() => yamlMap({'foo': 'bar'})));
32 });
33
34 test('works as a hash key', () {
35 var normalMap = new Map();
36 normalMap[yamlMap({'foo': 'bar'})] = 'baz';
37 expect(normalMap.containsKey(yamlMap({'foo': 'bar'})), isTrue);
38 expect(normalMap[yamlMap({'foo': 'bar'})], 'baz');
39 });
40
41 test('treats YamlMap keys the same as normal maps', () {
42 var map = yamlMap();
43 map[{'a': 'b'}] = 5;
44 expect(map[yamlMap({'a': 'b'})], 5);
45 });
46 });
47
48 group('has a friendly error message for', () { 17 group('has a friendly error message for', () {
49 var tabError = predicate((e) => 18 var tabError = predicate((e) =>
50 e.toString().contains('tab characters are not allowed as indentation')); 19 e.toString().contains('tab characters are not allowed as indentation'));
51 20
52 test('using a tab as indentation', () { 21 test('using a tab as indentation', () {
53 expect(() => loadYaml('foo:\n\tbar'), 22 expect(() => loadYaml('foo:\n\tbar'),
54 throwsA(tabError)); 23 throwsA(tabError));
55 }); 24 });
56 25
57 test('using a tab not as indentation', () { 26 test('using a tab not as indentation', () {
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 // hr: 183 // hr:
215 // - Mark McGwire 184 // - Mark McGwire
216 // # Following node labeled SS 185 // # Following node labeled SS
217 // - &SS Sammy Sosa 186 // - &SS Sammy Sosa
218 // rbi: 187 // rbi:
219 // - *SS # Subsequent occurrence 188 // - *SS # Subsequent occurrence
220 // - Ken Griffey"""); 189 // - Ken Griffey""");
221 // }); 190 // });
222 191
223 test('[Example 2.11]', () { 192 test('[Example 2.11]', () {
224 var doc = yamlMap(); 193 var doc = deepEqualsMap();
225 doc[["Detroit Tigers", "Chicago cubs"]] = ["2001-07-23"]; 194 doc[["Detroit Tigers", "Chicago cubs"]] = ["2001-07-23"];
226 doc[["New York Yankees", "Atlanta Braves"]] = 195 doc[["New York Yankees", "Atlanta Braves"]] =
227 ["2001-07-02", "2001-08-12", "2001-08-14"]; 196 ["2001-07-02", "2001-08-12", "2001-08-14"];
228 expectYamlLoads(doc, 197 expectYamlLoads(doc,
229 """ 198 """
230 ? - Detroit Tigers 199 ? - Detroit Tigers
231 - Chicago cubs 200 - Chicago cubs
232 : 201 :
233 - 2001-07-23 202 - 2001-07-23
234 203
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 }, 344 },
376 """ 345 """
377 canonical: 1.23015e+3 346 canonical: 1.23015e+3
378 exponential: 12.3015e+02 347 exponential: 12.3015e+02
379 fixed: 1230.15 348 fixed: 1230.15
380 negative infinity: -.inf 349 negative infinity: -.inf
381 not a number: .NaN"""); 350 not a number: .NaN""");
382 }); 351 });
383 352
384 test('[Example 2.21]', () { 353 test('[Example 2.21]', () {
385 var doc = yamlMap({ 354 var doc = deepEqualsMap({
386 "booleans": [true, false], 355 "booleans": [true, false],
387 "string": "012345" 356 "string": "012345"
388 }); 357 });
389 doc[null] = null; 358 doc[null] = null;
390 expectYamlLoads(doc, 359 expectYamlLoads(doc,
391 """ 360 """
392 null: 361 null:
393 booleans: [ true, false ] 362 booleans: [ true, false ]
394 string: '012345'"""); 363 string: '012345'""");
395 }); 364 });
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
893 862
894 group('6.7: Separation Lines', () { 863 group('6.7: Separation Lines', () {
895 test('may not be used within implicit keys', () { 864 test('may not be used within implicit keys', () {
896 expectYamlFails( 865 expectYamlFails(
897 """ 866 """
898 [1, 867 [1,
899 2]: 3"""); 868 2]: 3""");
900 }); 869 });
901 870
902 test('[Example 6.12]', () { 871 test('[Example 6.12]', () {
903 var doc = yamlMap(); 872 var doc = deepEqualsMap();
904 doc[{'first': 'Sammy', 'last': 'Sosa'}] = { 873 doc[{'first': 'Sammy', 'last': 'Sosa'}] = {
905 'hr': 65, 874 'hr': 65,
906 'avg': 0.278 875 'avg': 0.278
907 }; 876 };
908 expectYamlLoads(doc, 877 expectYamlLoads(doc,
909 """ 878 """
910 { first: Sammy, last: Sosa }: 879 { first: Sammy, last: Sosa }:
911 # Statistics: 880 # Statistics:
912 hr: # Home runs 881 hr: # Home runs
913 65 882 65
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 // "": "bar" 1054 // "": "bar"
1086 // }, 1055 // },
1087 // """ 1056 // """
1088 // { 1057 // {
1089 // foo : !!str, 1058 // foo : !!str,
1090 // !!str : bar, 1059 // !!str : bar,
1091 // }"""); 1060 // }""");
1092 // }); 1061 // });
1093 1062
1094 test('[Example 7.3]', () { 1063 test('[Example 7.3]', () {
1095 var doc = yamlMap({"foo": null}); 1064 var doc = deepEqualsMap({"foo": null});
1096 doc[null] = "bar"; 1065 doc[null] = "bar";
1097 expectYamlLoads(doc, 1066 expectYamlLoads(doc,
1098 """ 1067 """
1099 { 1068 {
1100 ? foo :, 1069 ? foo :,
1101 : bar, 1070 : bar,
1102 }"""); 1071 }""");
1103 }); 1072 });
1104 }); 1073 });
1105 1074
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1232 expectYamlLoads([ 1201 expectYamlLoads([
1233 {"one": "two", "three": "four"}, 1202 {"one": "two", "three": "four"},
1234 {"five": "six", "seven": "eight"}, 1203 {"five": "six", "seven": "eight"},
1235 ], 1204 ],
1236 """ 1205 """
1237 - { one : two , three: four , } 1206 - { one : two , three: four , }
1238 - {five: six,seven : eight}"""); 1207 - {five: six,seven : eight}""");
1239 }); 1208 });
1240 1209
1241 test('[Example 7.16]', () { 1210 test('[Example 7.16]', () {
1242 var doc = yamlMap({ 1211 var doc = deepEqualsMap({
1243 "explicit": "entry", 1212 "explicit": "entry",
1244 "implicit": "entry" 1213 "implicit": "entry"
1245 }); 1214 });
1246 doc[null] = null; 1215 doc[null] = null;
1247 expectYamlLoads(doc, 1216 expectYamlLoads(doc,
1248 """ 1217 """
1249 { 1218 {
1250 ? explicit: entry, 1219 ? explicit: entry,
1251 implicit: entry, 1220 implicit: entry,
1252 ? 1221 ?
1253 }"""); 1222 }""");
1254 }); 1223 });
1255 1224
1256 test('[Example 7.17]', () { 1225 test('[Example 7.17]', () {
1257 var doc = yamlMap({ 1226 var doc = deepEqualsMap({
1258 "unquoted": "separate", 1227 "unquoted": "separate",
1259 "http://foo.com": null, 1228 "http://foo.com": null,
1260 "omitted value": null 1229 "omitted value": null
1261 }); 1230 });
1262 doc[null] = "omitted key"; 1231 doc[null] = "omitted key";
1263 expectYamlLoads(doc, 1232 expectYamlLoads(doc,
1264 ''' 1233 '''
1265 { 1234 {
1266 unquoted : "separate", 1235 unquoted : "separate",
1267 http://foo.com, 1236 http://foo.com,
(...skipping 27 matching lines...) Expand all
1295 test('[Example 7.20]', () { 1264 test('[Example 7.20]', () {
1296 expectYamlLoads([{"foo bar": "baz"}], 1265 expectYamlLoads([{"foo bar": "baz"}],
1297 """ 1266 """
1298 [ 1267 [
1299 ? foo 1268 ? foo
1300 bar : baz 1269 bar : baz
1301 ]"""); 1270 ]""");
1302 }); 1271 });
1303 1272
1304 test('[Example 7.21]', () { 1273 test('[Example 7.21]', () {
1305 var el1 = yamlMap(); 1274 var el1 = deepEqualsMap();
1306 el1[null] = "empty key entry"; 1275 el1[null] = "empty key entry";
1307 1276
1308 var el2 = yamlMap(); 1277 var el2 = deepEqualsMap();
1309 el2[{"JSON": "like"}] = "adjacent"; 1278 el2[{"JSON": "like"}] = "adjacent";
1310 1279
1311 expectYamlLoads([[{"YAML": "separate"}], [el1], [el2]], 1280 expectYamlLoads([[{"YAML": "separate"}], [el1], [el2]],
1312 """ 1281 """
1313 - [ YAML : separate ] 1282 - [ YAML : separate ]
1314 - [ : empty key entry ] 1283 - [ : empty key entry ]
1315 - [ {JSON: like}:adjacent ]"""); 1284 - [ {JSON: like}:adjacent ]""");
1316 }); 1285 });
1317 1286
1318 test('[Example 7.22]', () { 1287 test('[Example 7.22]', () {
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
1570 }, 1539 },
1571 """ 1540 """
1572 ? explicit key # Empty value 1541 ? explicit key # Empty value
1573 ? | 1542 ? |
1574 block key 1543 block key
1575 : - one # Explicit compact 1544 : - one # Explicit compact
1576 - two # block value"""); 1545 - two # block value""");
1577 }); 1546 });
1578 1547
1579 test('[Example 8.18]', () { 1548 test('[Example 8.18]', () {
1580 var doc = yamlMap({ 1549 var doc = deepEqualsMap({
1581 'plain key': 'in-line value', 1550 'plain key': 'in-line value',
1582 "quoted key": ["entry"] 1551 "quoted key": ["entry"]
1583 }); 1552 });
1584 doc[null] = null; 1553 doc[null] = null;
1585 expectYamlLoads(doc, 1554 expectYamlLoads(doc,
1586 ''' 1555 '''
1587 plain key: in-line value 1556 plain key: in-line value
1588 : # Both empty 1557 : # Both empty
1589 "quoted key": 1558 "quoted key":
1590 - entry'''); 1559 - entry''');
1591 }); 1560 });
1592 1561
1593 test('[Example 8.19]', () { 1562 test('[Example 8.19]', () {
1594 var el = yamlMap(); 1563 var el = deepEqualsMap();
1595 el[{'earth': 'blue'}] = {'moon': 'white'}; 1564 el[{'earth': 'blue'}] = {'moon': 'white'};
1596 expectYamlLoads([{'sun': 'yellow'}, el], 1565 expectYamlLoads([{'sun': 'yellow'}, el],
1597 """ 1566 """
1598 - sun: yellow 1567 - sun: yellow
1599 - ? earth: blue 1568 - ? earth: blue
1600 : moon: white"""); 1569 : moon: white""");
1601 }); 1570 });
1602 1571
1603 // test('[Example 8.20]', () { 1572 // test('[Example 8.20]', () {
1604 // expectYamlLoads(["flow in block", "Block scalar\n", {"foo": "bar"}], 1573 // expectYamlLoads(["flow in block", "Block scalar\n", {"foo": "bar"}],
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1756 // ''' 1725 // '''
1757 // Block style: !!str |- 1726 // Block style: !!str |-
1758 // String: just a theory. 1727 // String: just a theory.
1759 1728
1760 // Flow style: !!str "String: just a theory."'''); 1729 // Flow style: !!str "String: just a theory."''');
1761 // }); 1730 // });
1762 }); 1731 });
1763 1732
1764 group('10.2: JSON Schema', () { 1733 group('10.2: JSON Schema', () {
1765 // test('[Example 10.4]', () { 1734 // test('[Example 10.4]', () {
1766 // var doc = yamlMap({"key with null value": null}); 1735 // var doc = deepEqualsMap({"key with null value": null});
1767 // doc[null] = "value for null key"; 1736 // doc[null] = "value for null key";
1768 // expectYamlStreamLoads(doc, 1737 // expectYamlStreamLoads(doc,
1769 // """ 1738 // """
1770 // !!null null: value for null key 1739 // !!null null: value for null key
1771 // key with null value: !!null null"""); 1740 // key with null value: !!null null""");
1772 // }); 1741 // });
1773 1742
1774 // test('[Example 10.5]', () { 1743 // test('[Example 10.5]', () {
1775 // expectYamlStreamLoads({ 1744 // expectYamlStreamLoads({
1776 // "YAML is a superset of JSON": true, 1745 // "YAML is a superset of JSON": true,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1843 A null: null 1812 A null: null
1844 Also a null: # Empty 1813 Also a null: # Empty
1845 Not a null: "" 1814 Not a null: ""
1846 Booleans: [ true, True, false, FALSE ] 1815 Booleans: [ true, True, false, FALSE ]
1847 Integers: [ 0, 0o7, 0x3A, -19 ] 1816 Integers: [ 0, 0o7, 0x3A, -19 ]
1848 Floats: [ 0., -0.0, .5, +12e03, -2E+05 ] 1817 Floats: [ 0., -0.0, .5, +12e03, -2E+05 ]
1849 Also floats: [ .inf, -.Inf, +.INF, .NAN ]'''); 1818 Also floats: [ .inf, -.Inf, +.INF, .NAN ]''');
1850 }); 1819 });
1851 }); 1820 });
1852 } 1821 }
OLDNEW
« no previous file with comments | « pkg/yaml/test/utils.dart ('k') | sdk/lib/_internal/pub/lib/src/barback.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698