| // 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/src/utils.dart'; |
| import 'package:yaml_edit/yaml_edit.dart'; |
| |
| import 'test_utils.dart'; |
| |
| void main() { |
| group('windows line ending detection', () { |
| test('empty string gives not windows', () { |
| final doc = YamlEditor(''); |
| expect(getLineEnding(doc.toString()), equals('\n')); |
| }); |
| |
| test('accurately detects windows documents', () { |
| final doc = YamlEditor('\r\n'); |
| expect(getLineEnding(doc.toString()), equals('\r\n')); |
| }); |
| |
| test('accurately detects windows documents (2)', () { |
| final doc = YamlEditor(''' |
| a:\r |
| b:\r |
| - 1\r |
| - 2\r |
| c: 3\r |
| '''); |
| expect(getLineEnding(doc.toString()), equals('\r\n')); |
| }); |
| }); |
| |
| group('modification with windows line endings', () { |
| test('append element to simple block list ', () { |
| final doc = YamlEditor(''' |
| - 0\r |
| - 1\r |
| - 2\r |
| - 3\r |
| '''); |
| doc.appendToList([], [4, 5, 6]); |
| expect(doc.toString(), equals(''' |
| - 0\r |
| - 1\r |
| - 2\r |
| - 3\r |
| - - 4\r |
| - 5\r |
| - 6\r |
| ''')); |
| expectYamlBuilderValue(doc, [ |
| 0, |
| 1, |
| 2, |
| 3, |
| [4, 5, 6] |
| ]); |
| }); |
| |
| test('update nested scalar -> flow list', () { |
| final doc = YamlEditor(''' |
| a: 1\r |
| b: \r |
| d: 4\r |
| e: 5\r |
| c: 3\r |
| '''); |
| doc.update(['b', 'e'], [1, 2, 3]); |
| |
| expect(doc.toString(), equals(''' |
| a: 1\r |
| b: \r |
| d: 4\r |
| e: \r |
| - 1\r |
| - 2\r |
| - 3\r |
| c: 3\r |
| ''')); |
| expectYamlBuilderValue(doc, { |
| 'a': 1, |
| 'b': { |
| 'd': 4, |
| 'e': [1, 2, 3] |
| }, |
| 'c': 3 |
| }); |
| }); |
| |
| test('update in nested list flow map -> scalar', () { |
| final doc = YamlEditor(''' |
| - 0\r |
| - {a: 1, b: 2}\r |
| - 2\r |
| - 3\r |
| '''); |
| doc.update([1], 4); |
| expect(doc.toString(), equals(''' |
| - 0\r |
| - 4\r |
| - 2\r |
| - 3\r |
| ''')); |
| expectYamlBuilderValue(doc, [0, 4, 2, 3]); |
| }); |
| |
| test('insert into a list with comments', () { |
| final doc = YamlEditor(''' |
| - 0 # comment a\r |
| - 2 # comment b\r |
| '''); |
| doc.insertIntoList([], 1, 1); |
| expect(doc.toString(), equals(''' |
| - 0 # comment a\r |
| - 1\r |
| - 2 # comment b\r |
| ''')); |
| expectYamlBuilderValue(doc, [0, 1, 2]); |
| }); |
| |
| test('prepend into a list', () { |
| final doc = YamlEditor(''' |
| - 1\r |
| - 2\r |
| '''); |
| doc.prependToList([], [4, 5, 6]); |
| expect(doc.toString(), equals(''' |
| - - 4\r |
| - 5\r |
| - 6\r |
| - 1\r |
| - 2\r |
| ''')); |
| expectYamlBuilderValue(doc, [ |
| [4, 5, 6], |
| 1, |
| 2 |
| ]); |
| }); |
| |
| test('remove from block list ', () { |
| final doc = YamlEditor(''' |
| - 0\r |
| - 1\r |
| - 2\r |
| - 3\r |
| '''); |
| doc.remove([1]); |
| expect(doc.toString(), equals(''' |
| - 0\r |
| - 2\r |
| - 3\r |
| ''')); |
| expectYamlBuilderValue(doc, [0, 2, 3]); |
| }); |
| |
| test('remove from block list (2)', () { |
| final doc = YamlEditor(''' |
| - 0\r |
| '''); |
| doc.remove([0]); |
| expect(doc.toString(), equals(''' |
| []\r |
| ''')); |
| expectYamlBuilderValue(doc, []); |
| }); |
| |
| test('remove from block map', () { |
| final doc = YamlEditor(''' |
| a: 1\r |
| b: 2\r |
| c: 3\r |
| '''); |
| doc.remove(['b']); |
| expect(doc.toString(), equals(''' |
| a: 1\r |
| c: 3\r |
| ''')); |
| }); |
| |
| test('remove from block map (2)', () { |
| final doc = YamlEditor(''' |
| a: 1\r |
| '''); |
| doc.remove(['a']); |
| expect(doc.toString(), equals(''' |
| {}\r |
| ''')); |
| expectYamlBuilderValue(doc, {}); |
| }); |
| |
| test('splice block list', () { |
| final doc = YamlEditor(''' |
| - 0\r |
| - 0\r |
| '''); |
| final nodes = doc.spliceList([], 0, 2, [0, 1, 2]); |
| expect(doc.toString(), equals(''' |
| - 0\r |
| - 1\r |
| - 2\r |
| ''')); |
| |
| expectDeepEquals(nodes.toList(), [0, 0]); |
| }); |
| }); |
| } |