blob: 1fbaa1142ae38fcc73d833032adb73aab6b706ad [file] [log] [blame]
// 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.
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../../generated/parser_test.dart';
import 'body_builder_test_helper.dart';
main() {
return CompilerTestContext.runWithTestOptions((_) {
defineReflectiveSuite(() {
defineReflectiveTests(ResolutionTest);
});
});
}
/**
* Tests of the fasta parser based on [ExpressionParserTestMixin].
*/
@reflectiveTest
class ResolutionTest extends FastaBodyBuilderTestCase {
ResolutionTest() : super(true);
test_booleanLiteral_false() {
Expression result = parseExpression('false');
expect(result, new isInstanceOf<BooleanLiteral>());
expect((result as BooleanLiteral).staticType, typeProvider.boolType);
}
test_booleanLiteral_true() {
Expression result = parseExpression('true');
expect(result, new isInstanceOf<BooleanLiteral>());
expect((result as BooleanLiteral).staticType, typeProvider.boolType);
}
test_doubleLiteral() {
Expression result = parseExpression('4.2');
expect(result, new isInstanceOf<DoubleLiteral>());
expect((result as DoubleLiteral).staticType, typeProvider.doubleType);
}
test_integerLiteral() {
Expression result = parseExpression('3');
expect(result, new isInstanceOf<IntegerLiteral>());
expect((result as IntegerLiteral).staticType, typeProvider.intType);
}
@failingTest
test_listLiteral_explicitType() {
Expression result = parseExpression('<int>[]');
expect(result, new isInstanceOf<ListLiteral>());
InterfaceType listType = typeProvider.listType;
expect((result as ListLiteral).staticType,
listType.instantiate([typeProvider.intType]));
}
@failingTest
test_listLiteral_noType() {
Expression result = parseExpression('[]');
expect(result, new isInstanceOf<ListLiteral>());
InterfaceType listType = typeProvider.listType;
expect((result as ListLiteral).staticType,
listType.instantiate([typeProvider.dynamicType]));
}
@failingTest
test_mapLiteral_explicitType() {
Expression result = parseExpression('<String, int>{}');
expect(result, new isInstanceOf<MapLiteral>());
InterfaceType mapType = typeProvider.mapType;
expect((result as MapLiteral).staticType,
mapType.instantiate([typeProvider.stringType, typeProvider.intType]));
}
@failingTest
test_mapLiteral_noType() {
Expression result = parseExpression('{}');
expect(result, new isInstanceOf<MapLiteral>());
InterfaceType mapType = typeProvider.mapType;
expect(
(result as MapLiteral).staticType,
mapType
.instantiate([typeProvider.dynamicType, typeProvider.dynamicType]));
}
test_nullLiteral() {
Expression result = parseExpression('null');
expect(result, new isInstanceOf<NullLiteral>());
expect((result as NullLiteral).staticType, typeProvider.nullType);
}
test_simpleStringLiteral() {
Expression result = parseExpression('"abc"');
expect(result, new isInstanceOf<SimpleStringLiteral>());
expect((result as SimpleStringLiteral).staticType, typeProvider.stringType);
}
}