| // 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() { |
| group('throws PathError', () { |
| test('if it is a map', () { |
| final doc = YamlEditor('a:1'); |
| expect(() => doc.appendToList([], 4), throwsPathError); |
| }); |
| |
| test('if it is a scalar', () { |
| final doc = YamlEditor('1'); |
| expect(() => doc.appendToList([], 4), throwsPathError); |
| }); |
| }); |
| |
| group('block list', () { |
| test('(1)', () { |
| final doc = YamlEditor(''' |
| - 0 |
| - 1 |
| - 2 |
| - 3 |
| '''); |
| doc.appendToList([], 4); |
| expect(doc.toString(), equals(''' |
| - 0 |
| - 1 |
| - 2 |
| - 3 |
| - 4 |
| ''')); |
| expectYamlBuilderValue(doc, [0, 1, 2, 3, 4]); |
| }); |
| |
| test('null path', () { |
| final doc = YamlEditor(''' |
| ~: |
| - 0 |
| - 1 |
| - 2 |
| - 3 |
| '''); |
| doc.appendToList([null], 4); |
| expect(doc.toString(), equals(''' |
| ~: |
| - 0 |
| - 1 |
| - 2 |
| - 3 |
| - 4 |
| ''')); |
| expectYamlBuilderValue(doc, { |
| null: [0, 1, 2, 3, 4] |
| }); |
| }); |
| |
| test('element to simple block list ', () { |
| final doc = YamlEditor(''' |
| - 0 |
| - 1 |
| - 2 |
| - 3 |
| '''); |
| doc.appendToList([], [4, 5, 6]); |
| expect(doc.toString(), equals(''' |
| - 0 |
| - 1 |
| - 2 |
| - 3 |
| - - 4 |
| - 5 |
| - 6 |
| ''')); |
| expectYamlBuilderValue(doc, [ |
| 0, |
| 1, |
| 2, |
| 3, |
| [4, 5, 6] |
| ]); |
| }); |
| |
| test('nested', () { |
| final doc = YamlEditor(''' |
| - 0 |
| - - 1 |
| - 2 |
| '''); |
| doc.appendToList([1], 3); |
| expect(doc.toString(), equals(''' |
| - 0 |
| - - 1 |
| - 2 |
| - 3 |
| ''')); |
| expectYamlBuilderValue(doc, [ |
| 0, |
| [1, 2, 3] |
| ]); |
| }); |
| |
| test('block list element to nested block list ', () { |
| final doc = YamlEditor(''' |
| - 0 |
| - - 1 |
| - 2 |
| '''); |
| doc.appendToList([1], [3, 4, 5]); |
| |
| expect(doc.toString(), equals(''' |
| - 0 |
| - - 1 |
| - 2 |
| - - 3 |
| - 4 |
| - 5 |
| ''')); |
| expectYamlBuilderValue(doc, [ |
| 0, |
| [ |
| 1, |
| 2, |
| [3, 4, 5] |
| ] |
| ]); |
| }); |
| |
| test('nested', () { |
| final yamlEditor = YamlEditor(''' |
| a: |
| 1: |
| - null |
| 2: null |
| '''); |
| yamlEditor.appendToList(['a', 1], false); |
| |
| expect(yamlEditor.toString(), equals(''' |
| a: |
| 1: |
| - null |
| - false |
| 2: null |
| ''')); |
| }); |
| |
| test('block append (1)', () { |
| final yamlEditor = YamlEditor(''' |
| # comment |
| - z: |
| x: 1 |
| y: 2 |
| - z: |
| x: 3 |
| y: 4 |
| '''); |
| yamlEditor.appendToList([], { |
| 'z': {'x': 5, 'y': 6} |
| }); |
| |
| expect(yamlEditor.toString(), equals(''' |
| # comment |
| - z: |
| x: 1 |
| y: 2 |
| - z: |
| x: 3 |
| y: 4 |
| - z: |
| x: 5 |
| y: 6 |
| ''')); |
| }); |
| |
| test('block append (2)', () { |
| final yamlEditor = YamlEditor(''' |
| # comment |
| a: |
| - z: |
| x: 1 |
| y: 2 |
| - z: |
| x: 3 |
| y: 4 |
| b: |
| - w: |
| m: 2 |
| n: 4 |
| '''); |
| yamlEditor.appendToList([ |
| 'a' |
| ], { |
| 'z': {'x': 5, 'y': 6} |
| }); |
| |
| expect(yamlEditor.toString(), equals(''' |
| # comment |
| a: |
| - z: |
| x: 1 |
| y: 2 |
| - z: |
| x: 3 |
| y: 4 |
| - z: |
| x: 5 |
| y: 6 |
| b: |
| - w: |
| m: 2 |
| n: 4 |
| ''')); |
| }); |
| |
| test('block append nested and with comments', () { |
| final yamlEditor = YamlEditor(''' |
| a: |
| b: |
| - c: |
| d: 1 |
| - c: |
| d: 2 |
| # comment |
| e: |
| - g: |
| e: 1 |
| f: 2 |
| # comment |
| '''); |
| expect( |
| () => yamlEditor.appendToList([ |
| 'a', |
| 'e' |
| ], { |
| 'g': {'e': 3, 'f': 4} |
| }), |
| returnsNormally); |
| }); |
| }); |
| |
| group('flow list', () { |
| test('(1)', () { |
| final doc = YamlEditor('[0, 1, 2]'); |
| doc.appendToList([], 3); |
| expect(doc.toString(), equals('[0, 1, 2, 3]')); |
| expectYamlBuilderValue(doc, [0, 1, 2, 3]); |
| }); |
| |
| test('null value', () { |
| final doc = YamlEditor('[0, 1, 2]'); |
| doc.appendToList([], null); |
| expect(doc.toString(), equals('[0, 1, 2, null]')); |
| expectYamlBuilderValue(doc, [0, 1, 2, null]); |
| }); |
| |
| test('empty ', () { |
| final doc = YamlEditor('[]'); |
| doc.appendToList([], 0); |
| expect(doc.toString(), equals('[0]')); |
| expectYamlBuilderValue(doc, [0]); |
| }); |
| }); |
| } |