blob: 3efeea1cc6326589bb4ad4e1ef3003cd407fa6fa [file] [log] [blame]
// 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(
'throws RangeError if invalid index + deleteCount combination is '
'passed in', () {
final doc = YamlEditor('[0, 0]');
expect(() => doc.spliceList([], 1, 5, [1, 2]), throwsRangeError);
});
group('block list', () {
test('(1)', () {
final doc = YamlEditor('''
- 0
- 0
''');
final nodes = doc.spliceList([], 1, 1, [1, 2]);
expect(doc.toString(), equals('''
- 0
- 1
- 2
'''));
expectDeepEquals(nodes.toList(), [0]);
});
test('(2)', () {
final doc = YamlEditor('''
- 0
- 0
''');
final nodes = doc.spliceList([], 0, 2, [0, 1, 2]);
expect(doc.toString(), equals('''
- 0
- 1
- 2
'''));
expectDeepEquals(nodes.toList(), [0, 0]);
});
test('(3)', () {
final doc = YamlEditor('''
- Jan
- March
- April
- June
''');
final nodes = doc.spliceList([], 1, 0, ['Feb']);
expect(doc.toString(), equals('''
- Jan
- Feb
- March
- April
- June
'''));
expectDeepEquals(nodes.toList(), []);
final nodes2 = doc.spliceList([], 4, 1, ['May']);
expect(doc.toString(), equals('''
- Jan
- Feb
- March
- April
- May
'''));
expectDeepEquals(nodes2.toList(), ['June']);
});
test('nested block list (inline)', () {
final doc = YamlEditor('''
- - Jan
- Tuesday
- April
''');
final nodes = doc.spliceList([0], 1, 1, ['Feb', 'March']);
expectDeepEquals(nodes.toList(), ['Tuesday']);
expect(doc.toString(), equals('''
- - Jan
- Feb
- March
- April
'''));
});
test('nested block list (inline with multiple new lines)', () {
final doc = YamlEditor('''
-
- Jan
- Tuesday
- April
''');
final nodes = doc.spliceList([0], 1, 1, ['Feb', 'March']);
expectDeepEquals(nodes.toList(), ['Tuesday']);
expect(doc.toString(), equals('''
-
- Jan
- Feb
- March
- April
'''));
});
test('update before nested list', () {
final doc = YamlEditor('''
key:
- value
- another
- - nested
- continued
''');
final nodes = doc.spliceList(['key'], 2, 0, ['spliced']);
expectDeepEquals(nodes.toList(), []);
expect(doc.toString(), equals('''
key:
- value
- another
- spliced
- - nested
- continued
'''));
});
test('replace nested block', () {
final doc = YamlEditor('''
key:
- value
- another
- - nested
- continued
''');
final nodes = doc.spliceList(['key'], 2, 1, ['spliced']);
expectDeepEquals(nodes.toList(), [
['nested', 'continued'],
]);
expect(doc.toString(), equals('''
key:
- value
- another
- spliced
'''));
});
});
group('flow list', () {
test('(1)', () {
final doc = YamlEditor('[0, 0]');
final nodes = doc.spliceList([], 1, 1, [1, 2]);
expect(doc.toString(), equals('[0, 1, 2]'));
expectDeepEquals(nodes.toList(), [0]);
});
test('(2)', () {
final doc = YamlEditor('[0, 0]');
final nodes = doc.spliceList([], 0, 2, [0, 1, 2]);
expect(doc.toString(), equals('[0, 1, 2]'));
expectDeepEquals(nodes.toList(), [0, 0]);
});
});
}