blob: 8c0e3b2157842779d81cc196a8ebd38762f98828 [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() {
group('throws PathError', () {
test('if it is a map', () {
final doc = YamlEditor('a:1');
expect(() => doc.insertIntoList([], 0, 4), throwsPathError);
});
test('if it is a scalar', () {
final doc = YamlEditor('1');
expect(() => doc.insertIntoList([], 0, 4), throwsPathError);
});
});
test('throws RangeError if index is out of range', () {
final doc = YamlEditor('[1, 2]');
expect(() => doc.insertIntoList([], -1, 0), throwsRangeError);
expect(() => doc.insertIntoList([], 3, 0), throwsRangeError);
});
group('block list', () {
test('(1)', () {
final doc = YamlEditor('''
- 1
- 2''');
doc.insertIntoList([], 0, 0);
expect(doc.toString(), equals('''
- 0
- 1
- 2'''));
expectYamlBuilderValue(doc, [0, 1, 2]);
});
test('(2)', () {
final doc = YamlEditor('''
- 1
- 2''');
doc.insertIntoList([], 1, 3);
expect(doc.toString(), equals('''
- 1
- 3
- 2'''));
expectYamlBuilderValue(doc, [1, 3, 2]);
});
test('(3)', () {
final doc = YamlEditor('''
- 1
- 2
''');
doc.insertIntoList([], 2, 3);
expect(doc.toString(), equals('''
- 1
- 2
- 3
'''));
expectYamlBuilderValue(doc, [1, 2, 3]);
});
test('(4)', () {
final doc = YamlEditor('''
- 1
- 3
''');
doc.insertIntoList([], 1, [4, 5, 6]);
expect(doc.toString(), equals('''
- 1
- - 4
- 5
- 6
- 3
'''));
expectYamlBuilderValue(doc, [
1,
[4, 5, 6],
3
]);
});
test(' with comments', () {
final doc = YamlEditor('''
- 0 # comment a
- 2 # comment b
''');
doc.insertIntoList([], 1, 1);
expect(doc.toString(), equals('''
- 0 # comment a
- 1
- 2 # comment b
'''));
expectYamlBuilderValue(doc, [0, 1, 2]);
});
for (var i = 0; i < 3; i++) {
test('block insert(1) at $i', () {
final yamlEditor = YamlEditor('''
# comment
- z:
x: 1
y: 2
- z:
x: 3
y: 4
''');
expect(
() => yamlEditor.insertIntoList(
[],
i,
{
'z': {'x': 5, 'y': 6}
}),
returnsNormally);
});
}
for (var i = 0; i < 3; i++) {
test('block insert(2) at $i', () {
final yamlEditor = YamlEditor('''
a:
- z:
x: 1
y: 2
- z:
x: 3
y: 4
b:
- w:
m: 2
n: 4
''');
expect(
() => yamlEditor.insertIntoList(
['a'],
i,
{
'z': {'x': 5, 'y': 6}
}),
returnsNormally);
});
}
for (var i = 0; i < 2; i++) {
test('block insert nested and with comments at $i', () {
final yamlEditor = YamlEditor('''
a:
b:
- c:
d: 1
- c:
d: 2
# comment
e:
- g:
e: 1
f: 2
# comment
''');
expect(
() => yamlEditor.insertIntoList(
['a', 'b'],
i,
{
'g': {'e': 3, 'f': 4}
}),
returnsNormally);
});
}
});
group('flow list', () {
test('(1)', () {
final doc = YamlEditor('[1, 2]');
doc.insertIntoList([], 0, 0);
expect(doc.toString(), equals('[0, 1, 2]'));
expectYamlBuilderValue(doc, [0, 1, 2]);
});
test('(2)', () {
final doc = YamlEditor('[1, 2]');
doc.insertIntoList([], 1, 3);
expect(doc.toString(), equals('[1, 3, 2]'));
expectYamlBuilderValue(doc, [1, 3, 2]);
});
test('(3)', () {
final doc = YamlEditor('[1, 2]');
doc.insertIntoList([], 2, 3);
expect(doc.toString(), equals('[1, 2, 3]'));
expectYamlBuilderValue(doc, [1, 2, 3]);
});
test('(4)', () {
final doc = YamlEditor('["[],", "[],"]');
doc.insertIntoList([], 1, 'test');
expect(doc.toString(), equals('["[],", test, "[],"]'));
expectYamlBuilderValue(doc, ['[],', 'test', '[],']);
});
});
}