| // 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'; | |
| void main() { | |
| group('SourceEdit', () { | |
| group('fromJson', () { | |
| test('converts from jsonEncode', () { | |
| final sourceEditMap = { | |
| 'offset': 1, | |
| 'length': 2, | |
| 'replacement': 'replacement string' | |
| }; | |
| final sourceEdit = SourceEdit.fromJson(sourceEditMap); | |
| expect(sourceEdit.offset, 1); | |
| expect(sourceEdit.length, 2); | |
| expect(sourceEdit.replacement, 'replacement string'); | |
| }); | |
| test('throws formatException if offset is non-int', () { | |
| final sourceEditJson = { | |
| 'offset': '1', | |
| 'length': 2, | |
| 'replacement': 'replacement string' | |
| }; | |
| expect( | |
| () => SourceEdit.fromJson(sourceEditJson), throwsFormatException); | |
| }); | |
| test('throws formatException if length is non-int', () { | |
| final sourceEditJson = { | |
| 'offset': 1, | |
| 'length': '2', | |
| 'replacement': 'replacement string' | |
| }; | |
| expect( | |
| () => SourceEdit.fromJson(sourceEditJson), throwsFormatException); | |
| }); | |
| test('throws formatException if replacement is non-string', () { | |
| final sourceEditJson = {'offset': 1, 'length': 2, 'replacement': 3}; | |
| expect( | |
| () => SourceEdit.fromJson(sourceEditJson), throwsFormatException); | |
| }); | |
| test('throws formatException if a field is not present', () { | |
| final sourceEditJson = {'offset': 1, 'length': 2}; | |
| expect( | |
| () => SourceEdit.fromJson(sourceEditJson), throwsFormatException); | |
| }); | |
| }); | |
| test('toString returns a nice string representation', () { | |
| final sourceEdit = SourceEdit(1, 2, 'replacement string'); | |
| expect(sourceEdit.toString(), | |
| equals('SourceEdit(1, 2, "replacement string")')); | |
| }); | |
| group('hashCode', () { | |
| test('returns same value for equal SourceEdits', () { | |
| final sourceEdit1 = SourceEdit(1, 2, 'replacement string'); | |
| final sourceEdit2 = SourceEdit(1, 2, 'replacement string'); | |
| expect(sourceEdit1.hashCode, equals(sourceEdit2.hashCode)); | |
| }); | |
| test('returns different value for equal SourceEdits', () { | |
| final sourceEdit1 = SourceEdit(1, 2, 'replacement string'); | |
| final sourceEdit2 = SourceEdit(1, 3, 'replacement string'); | |
| expect(sourceEdit1.hashCode == sourceEdit2.hashCode, equals(false)); | |
| }); | |
| }); | |
| group('toJson', () { | |
| test('behaves as expected', () { | |
| final sourceEdit = SourceEdit(1, 2, 'replacement string'); | |
| final sourceEditJson = sourceEdit.toJson(); | |
| expect( | |
| sourceEditJson, | |
| equals({ | |
| 'offset': 1, | |
| 'length': 2, | |
| 'replacement': 'replacement string' | |
| })); | |
| }); | |
| test('is compatible with fromJson', () { | |
| final sourceEdit = SourceEdit(1, 2, 'replacement string'); | |
| final sourceEditJson = sourceEdit.toJson(); | |
| final newSourceEdit = SourceEdit.fromJson(sourceEditJson); | |
| expect(newSourceEdit.offset, 1); | |
| expect(newSourceEdit.length, 2); | |
| expect(newSourceEdit.replacement, 'replacement string'); | |
| }); | |
| }); | |
| group('applyAll', () { | |
| test('returns original string when empty list is passed in', () { | |
| const original = 'YAML: YAML'; | |
| final result = SourceEdit.applyAll(original, []); | |
| expect(result, original); | |
| }); | |
| test('works with list of one SourceEdit', () { | |
| const original = 'YAML: YAML'; | |
| final sourceEdits = [SourceEdit(6, 4, 'YAML Ain\'t Markup Language')]; | |
| final result = SourceEdit.applyAll(original, sourceEdits); | |
| expect(result, "YAML: YAML Ain't Markup Language"); | |
| }); | |
| test('works with list of multiple SourceEdits', () { | |
| const original = 'YAML: YAML'; | |
| final sourceEdits = [ | |
| SourceEdit(6, 4, "YAML Ain't Markup Language"), | |
| SourceEdit(6, 4, "YAML Ain't Markup Language"), | |
| SourceEdit(0, 4, "YAML Ain't Markup Language") | |
| ]; | |
| final result = SourceEdit.applyAll(original, sourceEdits); | |
| expect( | |
| result, | |
| "YAML Ain't Markup Language: YAML Ain't Markup Language Ain't Markup " | |
| 'Language', | |
| ); | |
| }); | |
| }); | |
| }); | |
| } |