| // Copyright (c) 2018, 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. |
| library kernel.text_serializer_test; |
| |
| import 'package:kernel/ast.dart'; |
| import 'package:kernel/text/text_serializer.dart'; |
| |
| void main() { |
| test(); |
| } |
| |
| // Wrappers for testing. |
| BasicLiteral readBasicLiteral(String input) { |
| TextIterator stream = new TextIterator(input, 0); |
| stream.moveNext(); |
| BasicLiteral result = basicLiteralSerializer.readFrom(stream); |
| if (stream.moveNext()) { |
| throw StateError("extra cruft in basic literal"); |
| } |
| return result; |
| } |
| |
| String writeBasicLiteral(BasicLiteral literal) { |
| StringBuffer buffer = new StringBuffer(); |
| basicLiteralSerializer.writeTo(buffer, literal); |
| return buffer.toString(); |
| } |
| |
| void test() { |
| List<String> failures = []; |
| List<String> tests = [ |
| "(int 42)", |
| "(int 0)", |
| "(int -1001)", |
| "(double 3.14159)", |
| "(bool true)", |
| "(bool false)", |
| "(null)" |
| ]; |
| for (var test in tests) { |
| var literal = readBasicLiteral(test); |
| var output = writeBasicLiteral(literal); |
| if (output != test) { |
| failures.add('* input "${test}" gave output "${output}"'); |
| } |
| } |
| if (failures.isNotEmpty) { |
| print('Round trip failures:'); |
| failures.forEach(print); |
| throw StateError('Round trip failures'); |
| } |
| } |