blob: 88d1ba0b2e5d86835e1c6ac79c00a42368ebc56e [file] [log] [blame]
// 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);
}
}