| // 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:code_builder/code_builder.dart'; | |
| import 'package:test/test.dart'; | |
| void main() { | |
| test('describes mismatches', () { | |
| const actual = Code('final x=1;'); | |
| equalsDart('final y=2;').expectMismatch(actual, ''' | |
| Expected: final y=2; | |
| Actual: StaticCode:<final x=1;> | |
| Which: is different. | |
| Expected: final y=2; | |
| Actual: final x=1; | |
| ^ | |
| Differ at offset 6 | |
| '''); | |
| }); | |
| } | |
| extension on Matcher { | |
| void expectMismatch(dynamic actual, String mismatch) { | |
| expect( | |
| () => expect(actual, this), | |
| throwsA( | |
| isA<TestFailure>().having( | |
| (e) => e.message, | |
| 'message', | |
| equalsIgnoringWhitespace(mismatch), | |
| ), | |
| ), | |
| ); | |
| } | |
| } |