| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library yaml.node_wrapper_test; |
| |
| import 'package:source_span/source_span.dart'; |
| import 'package:unittest/unittest.dart'; |
| import 'package:yaml/yaml.dart'; |
| |
| main() { |
| test("YamlMap() with no sourceUrl", () { |
| var map = new YamlMap(); |
| expect(map, isEmpty); |
| expect(map.nodes, isEmpty); |
| expect(map.span, isNullSpan(isNull)); |
| }); |
| |
| test("YamlMap() with a sourceUrl", () { |
| var map = new YamlMap(sourceUrl: "source"); |
| expect(map.span, isNullSpan(Uri.parse("source"))); |
| }); |
| |
| test("YamlList() with no sourceUrl", () { |
| var list = new YamlList(); |
| expect(list, isEmpty); |
| expect(list.nodes, isEmpty); |
| expect(list.span, isNullSpan(isNull)); |
| }); |
| |
| test("YamlList() with a sourceUrl", () { |
| var list = new YamlList(sourceUrl: "source"); |
| expect(list.span, isNullSpan(Uri.parse("source"))); |
| }); |
| |
| test("YamlMap.wrap() with no sourceUrl", () { |
| var map = new YamlMap.wrap({ |
| "list": [1, 2, 3], |
| "map": { |
| "foo": "bar", |
| "nested": [4, 5, 6] |
| }, |
| "scalar": "value" |
| }); |
| |
| expect(map, equals({ |
| "list": [1, 2, 3], |
| "map": { |
| "foo": "bar", |
| "nested": [4, 5, 6] |
| }, |
| "scalar": "value" |
| })); |
| |
| expect(map.span, isNullSpan(isNull)); |
| expect(map["list"], new isInstanceOf<YamlList>()); |
| expect(map["list"].nodes[0], new isInstanceOf<YamlScalar>()); |
| expect(map["list"].span, isNullSpan(isNull)); |
| expect(map["map"], new isInstanceOf<YamlMap>()); |
| expect(map["map"].nodes["foo"], new isInstanceOf<YamlScalar>()); |
| expect(map["map"]["nested"], new isInstanceOf<YamlList>()); |
| expect(map["map"].span, isNullSpan(isNull)); |
| expect(map.nodes["scalar"], new isInstanceOf<YamlScalar>()); |
| expect(map.nodes["scalar"].value, "value"); |
| expect(map.nodes["scalar"].span, isNullSpan(isNull)); |
| expect(map["scalar"], "value"); |
| expect(map.keys, unorderedEquals(["list", "map", "scalar"])); |
| expect(map.nodes.keys, everyElement(new isInstanceOf<YamlScalar>())); |
| expect(map.nodes[new YamlScalar.wrap("list")], equals([1, 2, 3])); |
| }); |
| |
| test("YamlMap.wrap() with a sourceUrl", () { |
| var map = new YamlMap.wrap({ |
| "list": [1, 2, 3], |
| "map": { |
| "foo": "bar", |
| "nested": [4, 5, 6] |
| }, |
| "scalar": "value" |
| }, sourceUrl: "source"); |
| |
| var source = Uri.parse("source"); |
| expect(map.span, isNullSpan(source)); |
| expect(map["list"].span, isNullSpan(source)); |
| expect(map["map"].span, isNullSpan(source)); |
| expect(map.nodes["scalar"].span, isNullSpan(source)); |
| }); |
| |
| test("YamlList.wrap() with no sourceUrl", () { |
| var list = new YamlList.wrap([ |
| [1, 2, 3], |
| { |
| "foo": "bar", |
| "nested": [4, 5, 6] |
| }, |
| "value" |
| ]); |
| |
| expect(list, equals([ |
| [1, 2, 3], |
| { |
| "foo": "bar", |
| "nested": [4, 5, 6] |
| }, |
| "value" |
| ])); |
| |
| expect(list.span, isNullSpan(isNull)); |
| expect(list[0], new isInstanceOf<YamlList>()); |
| expect(list[0].nodes[0], new isInstanceOf<YamlScalar>()); |
| expect(list[0].span, isNullSpan(isNull)); |
| expect(list[1], new isInstanceOf<YamlMap>()); |
| expect(list[1].nodes["foo"], new isInstanceOf<YamlScalar>()); |
| expect(list[1]["nested"], new isInstanceOf<YamlList>()); |
| expect(list[1].span, isNullSpan(isNull)); |
| expect(list.nodes[2], new isInstanceOf<YamlScalar>()); |
| expect(list.nodes[2].value, "value"); |
| expect(list.nodes[2].span, isNullSpan(isNull)); |
| expect(list[2], "value"); |
| }); |
| |
| test("YamlList.wrap() with a sourceUrl", () { |
| var list = new YamlList.wrap([ |
| [1, 2, 3], |
| { |
| "foo": "bar", |
| "nested": [4, 5, 6] |
| }, |
| "value" |
| ]); |
| |
| expect(list.span, isNullSpan(isNull)); |
| expect(list[0].span, isNullSpan(isNull)); |
| expect(list[1].span, isNullSpan(isNull)); |
| expect(list.nodes[2].span, isNullSpan(isNull)); |
| }); |
| |
| test("re-wrapped objects equal one another", () { |
| var list = new YamlList.wrap([ |
| [1, 2, 3], |
| {"foo": "bar"} |
| ]); |
| |
| expect(list[0] == list[0], isTrue); |
| expect(list[0].nodes == list[0].nodes, isTrue); |
| expect(list[0] == new YamlList.wrap([1, 2, 3]), isFalse); |
| expect(list[1] == list[1], isTrue); |
| expect(list[1].nodes == list[1].nodes, isTrue); |
| expect(list[1] == new YamlMap.wrap({"foo": "bar"}), isFalse); |
| }); |
| } |
| |
| Matcher isNullSpan(sourceUrl) => predicate((span) { |
| expect(span, new isInstanceOf<SourceSpan>()); |
| expect(span.length, equals(0)); |
| expect(span.text, isEmpty); |
| expect(span.start, equals(span.end)); |
| expect(span.start.offset, equals(0)); |
| expect(span.start.line, equals(0)); |
| expect(span.start.column, equals(0)); |
| expect(span.sourceUrl, sourceUrl); |
| return true; |
| }); |