| // Copyright (c) 2011, 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. |
| |
| package com.google.dart.compiler.parser; |
| |
| import com.google.dart.compiler.CompilerTestCase; |
| import com.google.dart.compiler.ast.DartToSourceVisitor; |
| import com.google.dart.compiler.ast.DartUnit; |
| |
| /** |
| * Tests, for each of the parser test examples, that {@link DartToSourceVisitor} produces |
| * something parseable. It's an imperfect test, as it doesn't account for semantic changes, |
| * but it catches a lot of common problems. |
| */ |
| public class ParserRoundTripTest extends CompilerTestCase { |
| |
| public void testClasses() { |
| roundTrip("ClassesInterfaces.dart"); |
| } |
| |
| public void testMethodSignatures() { |
| roundTrip("MethodSignatures.dart"); |
| } |
| |
| public void testFunctionTypes() { |
| roundTrip("FunctionTypes.dart"); |
| } |
| |
| public void testFormalParameters() { |
| roundTrip("FormalParameters.dart"); |
| } |
| |
| public void testSuperCalls() { |
| roundTrip("SuperCalls.dart"); |
| } |
| |
| public void testGenericTypes() { |
| roundTrip("GenericTypes.dart"); |
| } |
| |
| public void testShifting() { |
| roundTrip("Shifting.dart"); |
| } |
| |
| public void testFunctionInterfaces() { |
| roundTrip("FunctionInterfaces.dart"); |
| } |
| |
| public void testStringBuffer() { |
| roundTrip("StringBuffer.dart"); |
| } |
| |
| public void testListObjectLiterals() { |
| roundTrip("ListObjectLiterals.dart"); |
| } |
| |
| public void testCatchFinally() { |
| roundTrip("CatchFinally.dart"); |
| } |
| |
| public void testStrings() { |
| roundTrip("Strings.dart"); |
| } |
| |
| /** |
| * Ensures that a unit can be parsed, re-serialized, and re-parsed without error. |
| */ |
| private void roundTrip(String path) { |
| DartUnit unit = parseUnit(path); |
| String src = unit.toSource(); |
| parseUnit(path, src); |
| } |
| } |