| // Copyright (c) 2020, 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. |
| |
| import 'package:test/test.dart'; |
| import 'package:yaml_edit/yaml_edit.dart'; |
| |
| import 'test_utils.dart'; |
| |
| void main() { |
| test('test if "No" is recognized as false', () { |
| final doc = YamlEditor(''' |
| ~: null |
| false: false |
| No: No |
| true: true |
| '''); |
| doc.update([null], 'tilde'); |
| doc.update([false], false); |
| doc.update(['No'], 'no'); |
| doc.update([true], 'true'); |
| |
| expect(doc.toString(), equals(''' |
| ~: tilde |
| false: false |
| No: no |
| true: "true" |
| ''')); |
| |
| expectYamlBuilderValue( |
| doc, {null: 'tilde', false: false, 'No': 'no', true: 'true'}); |
| }); |
| |
| test('array keys are recognized', () { |
| final doc = YamlEditor('{[1,2,3]: a}'); |
| doc.update([ |
| [1, 2, 3] |
| ], 'sums to 6'); |
| |
| expect(doc.toString(), equals('{[1,2,3]: sums to 6}')); |
| expectYamlBuilderValue(doc, { |
| [1, 2, 3]: 'sums to 6' |
| }); |
| }); |
| |
| test('map keys are recognized', () { |
| final doc = YamlEditor('{{a: 1}: a}'); |
| doc.update([ |
| {'a': 1} |
| ], 'sums to 6'); |
| |
| expect(doc.toString(), equals('{{a: 1}: sums to 6}')); |
| expectYamlBuilderValue(doc, { |
| {'a': 1}: 'sums to 6' |
| }); |
| }); |
| |
| test('documents can have directives', () { |
| final doc = YamlEditor('''%YAML 1.2 |
| --- text'''); |
| doc.update([], 'test'); |
| |
| expect(doc.toString(), equals('%YAML 1.2\n--- test')); |
| expectYamlBuilderValue(doc, 'test'); |
| }); |
| |
| test('tags should be removed if value is changed', () { |
| final doc = YamlEditor(''' |
| - !!str a |
| - b |
| - !!int 42 |
| - d |
| '''); |
| doc.update([2], 'test'); |
| |
| expect(doc.toString(), equals(''' |
| - !!str a |
| - b |
| - test |
| - d |
| ''')); |
| expectYamlBuilderValue(doc, ['a', 'b', 'test', 'd']); |
| }); |
| |
| test('tags should be removed if key is changed', () { |
| final doc = YamlEditor(''' |
| !!str a: b |
| c: !!int 42 |
| e: !!str f |
| g: h |
| !!str 23: !!bool false |
| '''); |
| doc.remove(['23']); |
| |
| expect(doc.toString(), equals(''' |
| !!str a: b |
| c: !!int 42 |
| e: !!str f |
| g: h |
| ''')); |
| expectYamlBuilderValue(doc, {'a': 'b', 'c': 42, 'e': 'f', 'g': 'h'}); |
| }); |
| |
| test('detect invalid extra closing bracket', () { |
| final doc = YamlEditor('''[ a, b ]'''); |
| doc.appendToList([], 'c ]'); |
| |
| expect(doc.toString(), equals('''[ a, b , "c ]"]''')); |
| expectYamlBuilderValue(doc, ['a', 'b', 'c ]']); |
| }); |
| } |