Index: pkg/analyzer-experimental/test/generated/element_test.dart |
=================================================================== |
--- pkg/analyzer-experimental/test/generated/element_test.dart (revision 0) |
+++ pkg/analyzer-experimental/test/generated/element_test.dart (revision 0) |
@@ -0,0 +1,1840 @@ |
+// This code was auto-generated, is not intended to be edited, and is subject to |
+// significant change. Please see the README file for more information. |
+ |
+library engine.element_test; |
+ |
+import 'dart:collection'; |
+import 'package:analyzer-experimental/src/generated/java_core.dart'; |
+import 'package:analyzer-experimental/src/generated/java_engine.dart'; |
+import 'package:analyzer-experimental/src/generated/java_junit.dart'; |
+import 'package:analyzer-experimental/src/generated/source.dart'; |
+import 'package:analyzer-experimental/src/generated/error.dart'; |
+import 'package:analyzer-experimental/src/generated/scanner.dart'; |
+import 'package:analyzer-experimental/src/generated/ast.dart' hide Annotation; |
+import 'package:analyzer-experimental/src/generated/element.dart' hide Annotation; |
+import 'package:analyzer-experimental/src/generated/engine.dart' show AnalysisContext, AnalysisContextImpl; |
+import 'package:unittest/unittest.dart' as _ut; |
+import 'test_support.dart'; |
+import 'scanner_test.dart' show TokenFactory; |
+import 'ast_test.dart' show ASTFactory; |
+ |
+class ElementLocationImplTest extends EngineTestCase { |
+ void test_create_encoding() { |
+ String encoding = "a;b;c"; |
+ ElementLocationImpl location = new ElementLocationImpl.con2(encoding); |
+ JUnitTestCase.assertEquals(encoding, location.encoding); |
+ } |
+ void test_equals_equal() { |
+ String encoding = "a;b;c"; |
+ ElementLocationImpl first = new ElementLocationImpl.con2(encoding); |
+ ElementLocationImpl second = new ElementLocationImpl.con2(encoding); |
+ JUnitTestCase.assertTrue(first == second); |
+ } |
+ void test_equals_notEqual_differentLengths() { |
+ ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c"); |
+ ElementLocationImpl second = new ElementLocationImpl.con2("a;b;c;d"); |
+ JUnitTestCase.assertFalse(first == second); |
+ } |
+ void test_equals_notEqual_notLocation() { |
+ ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c"); |
+ JUnitTestCase.assertFalse(first == "a;b;d"); |
+ } |
+ void test_equals_notEqual_sameLengths() { |
+ ElementLocationImpl first = new ElementLocationImpl.con2("a;b;c"); |
+ ElementLocationImpl second = new ElementLocationImpl.con2("a;b;d"); |
+ JUnitTestCase.assertFalse(first == second); |
+ } |
+ void test_getComponents() { |
+ String encoding = "a;b;c"; |
+ ElementLocationImpl location = new ElementLocationImpl.con2(encoding); |
+ List<String> components2 = location.components; |
+ EngineTestCase.assertLength(3, components2); |
+ JUnitTestCase.assertEquals("a", components2[0]); |
+ JUnitTestCase.assertEquals("b", components2[1]); |
+ JUnitTestCase.assertEquals("c", components2[2]); |
+ } |
+ void test_getEncoding() { |
+ String encoding = "a;b;c;;d"; |
+ ElementLocationImpl location = new ElementLocationImpl.con2(encoding); |
+ JUnitTestCase.assertEquals(encoding, location.encoding); |
+ } |
+ static dartSuite() { |
+ _ut.group('ElementLocationImplTest', () { |
+ _ut.test('test_create_encoding', () { |
+ final __test = new ElementLocationImplTest(); |
+ runJUnitTest(__test, __test.test_create_encoding); |
+ }); |
+ _ut.test('test_equals_equal', () { |
+ final __test = new ElementLocationImplTest(); |
+ runJUnitTest(__test, __test.test_equals_equal); |
+ }); |
+ _ut.test('test_equals_notEqual_differentLengths', () { |
+ final __test = new ElementLocationImplTest(); |
+ runJUnitTest(__test, __test.test_equals_notEqual_differentLengths); |
+ }); |
+ _ut.test('test_equals_notEqual_notLocation', () { |
+ final __test = new ElementLocationImplTest(); |
+ runJUnitTest(__test, __test.test_equals_notEqual_notLocation); |
+ }); |
+ _ut.test('test_equals_notEqual_sameLengths', () { |
+ final __test = new ElementLocationImplTest(); |
+ runJUnitTest(__test, __test.test_equals_notEqual_sameLengths); |
+ }); |
+ _ut.test('test_getComponents', () { |
+ final __test = new ElementLocationImplTest(); |
+ runJUnitTest(__test, __test.test_getComponents); |
+ }); |
+ _ut.test('test_getEncoding', () { |
+ final __test = new ElementLocationImplTest(); |
+ runJUnitTest(__test, __test.test_getEncoding); |
+ }); |
+ }); |
+ } |
+} |
+class FunctionTypeImplTest extends EngineTestCase { |
+ void test_creation() { |
+ JUnitTestCase.assertNotNull(new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f")))); |
+ } |
+ void test_getElement() { |
+ FunctionElementImpl typeElement = new FunctionElementImpl.con1(ASTFactory.identifier2("f")); |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(typeElement); |
+ JUnitTestCase.assertEquals(typeElement, type.element); |
+ } |
+ void test_getNamedParameterTypes() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ Map<String, Type2> types = type.namedParameterTypes; |
+ EngineTestCase.assertSize2(0, types); |
+ } |
+ void test_getNormalParameterTypes() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ List<Type2> types = type.normalParameterTypes; |
+ EngineTestCase.assertLength(0, types); |
+ } |
+ void test_getReturnType() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ Type2 returnType5 = type.returnType; |
+ JUnitTestCase.assertEquals(VoidTypeImpl.instance, returnType5); |
+ } |
+ void test_getTypeArguments() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ List<Type2> types = type.typeArguments; |
+ EngineTestCase.assertLength(0, types); |
+ } |
+ void test_hashCode_element() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ type.hashCode; |
+ } |
+ void test_hashCode_noElement() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1((null as ExecutableElement)); |
+ type.hashCode; |
+ } |
+ void test_isSubtypeOf_baseCase_notFunctionType() { |
+ FunctionType f = ElementFactory.functionElement("f").type; |
+ InterfaceType t = ElementFactory.classElement2("C", []).type; |
+ JUnitTestCase.assertFalse(f.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_baseCase_null() { |
+ FunctionType f = ElementFactory.functionElement("f").type; |
+ JUnitTestCase.assertFalse(f.isSubtypeOf(null)); |
+ } |
+ void test_isSubtypeOf_baseCase_self() { |
+ FunctionType f = ElementFactory.functionElement("f").type; |
+ JUnitTestCase.assertTrue(f.isSubtypeOf(f)); |
+ } |
+ void test_isSubtypeOf_namedParameters_isAssignable() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name"], <ClassElement> [b]).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertTrue(s.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_namedParameters_isNotAssignable() { |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [ElementFactory.classElement2("A", [])]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name"], <ClassElement> [ElementFactory.classElement2("B", [])]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_namedParameters_namesDifferent() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["diff"], <ClassElement> [b]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertFalse(s.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_namedParameters_orderOfParams() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["A", "B"], <ClassElement> [a, b]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["B", "A"], <ClassElement> [b, a]).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_namedParameters_orderOfParams2() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["B"], <ClassElement> [b]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["B", "A"], <ClassElement> [b, a]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_namedParameters_orderOfParams3() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["A", "B"], <ClassElement> [a, b]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["B"], <ClassElement> [b]).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_namedParameters_sHasMoreParams() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name"], <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name", "name2"], <ClassElement> [b, b]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_namedParameters_tHasMoreParams() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement4("t", null, null, <String> ["name", "name2"], <ClassElement> [a, a]).type; |
+ FunctionType s = ElementFactory.functionElement4("s", null, null, <String> ["name"], <ClassElement> [b]).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_normalParameters_isAssignable() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b]).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertTrue(s.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_normalParameters_isNotAssignable() { |
+ FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [ElementFactory.classElement2("A", [])]).type; |
+ FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [ElementFactory.classElement2("B", [])]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_normalParameters_sHasMoreParams() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b, b]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_normalParameters_tHasMoreParams() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a, a]).type; |
+ FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_optionalParameters_isAssignable() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [b]).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertTrue(s.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_optionalParameters_isNotAssignable() { |
+ FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [ElementFactory.classElement2("A", [])]).type; |
+ FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [ElementFactory.classElement2("B", [])]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_optionalParameters_sHasMoreParams() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [b, b]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_optionalParameters_tHasMoreParams() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a, a]).type; |
+ FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [b]).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_returnType_sIsVoid() { |
+ FunctionType t = ElementFactory.functionElement2("t", ElementFactory.classElement2("A", [])).type; |
+ FunctionType s = ElementFactory.functionElement("s").type; |
+ JUnitTestCase.assertTrue(VoidTypeImpl.instance == s.returnType); |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_returnType_tAssignableToS() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ ClassElement b = ElementFactory.classElement("B", a.type, []); |
+ FunctionType t = ElementFactory.functionElement2("t", a).type; |
+ FunctionType s = ElementFactory.functionElement2("s", b).type; |
+ JUnitTestCase.assertTrue(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertTrue(s.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_returnType_tNotAssignableToS() { |
+ FunctionType t = ElementFactory.functionElement2("t", ElementFactory.classElement2("A", [])).type; |
+ FunctionType s = ElementFactory.functionElement2("s", ElementFactory.classElement2("B", [])).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ } |
+ void test_isSubtypeOf_wrongFunctionType_normal_named() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name"], <ClassElement> [a]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertFalse(s.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_wrongFunctionType_normal_optional() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ FunctionType t = ElementFactory.functionElement5("t", <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement6("s", null, <ClassElement> [a]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertFalse(s.isSubtypeOf(t)); |
+ } |
+ void test_isSubtypeOf_wrongFunctionType_optional_named() { |
+ ClassElement a = ElementFactory.classElement2("A", []); |
+ FunctionType t = ElementFactory.functionElement6("t", null, <ClassElement> [a]).type; |
+ FunctionType s = ElementFactory.functionElement7("s", null, <String> ["name"], <ClassElement> [a]).type; |
+ JUnitTestCase.assertFalse(t.isSubtypeOf(s)); |
+ JUnitTestCase.assertFalse(s.isSubtypeOf(t)); |
+ } |
+ void test_setNamedParameterTypes() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ LinkedHashMap<String, Type2> expectedTypes = new LinkedHashMap<String, Type2>(); |
+ expectedTypes["a"] = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("C"))); |
+ type.namedParameterTypes = expectedTypes; |
+ Map<String, Type2> types = type.namedParameterTypes; |
+ JUnitTestCase.assertEquals(expectedTypes, types); |
+ } |
+ void test_setNormalParameterTypes() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ List<Type2> expectedTypes = <Type2> [new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("C")))]; |
+ type.normalParameterTypes = expectedTypes; |
+ List<Type2> types = type.normalParameterTypes; |
+ JUnitTestCase.assertEquals(expectedTypes, types); |
+ } |
+ void test_setReturnType() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ Type2 expectedType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("C"))); |
+ type.returnType = expectedType; |
+ Type2 returnType6 = type.returnType; |
+ JUnitTestCase.assertEquals(expectedType, returnType6); |
+ } |
+ void test_setTypeArguments() { |
+ FunctionTypeImpl type = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ Type2 expectedType = new TypeVariableTypeImpl(new TypeVariableElementImpl(ASTFactory.identifier2("C"))); |
+ type.typeArguments = <Type2> [expectedType]; |
+ List<Type2> arguments = type.typeArguments; |
+ EngineTestCase.assertLength(1, arguments); |
+ JUnitTestCase.assertEquals(expectedType, arguments[0]); |
+ } |
+ void test_substitute2_equal() { |
+ FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariableElementImpl(ASTFactory.identifier2("E"))); |
+ functionType.returnType = parameterType; |
+ functionType.normalParameterTypes = <Type2> [parameterType]; |
+ functionType.optionalParameterTypes = <Type2> [parameterType]; |
+ LinkedHashMap<String, Type2> namedParameterTypes = new LinkedHashMap<String, Type2>(); |
+ String namedParameterName = "c"; |
+ namedParameterTypes[namedParameterName] = parameterType; |
+ functionType.namedParameterTypes = namedParameterTypes; |
+ InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("D"))); |
+ FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type2> [parameterType]); |
+ JUnitTestCase.assertEquals(argumentType, result.returnType); |
+ List<Type2> normalParameters = result.normalParameterTypes; |
+ EngineTestCase.assertLength(1, normalParameters); |
+ JUnitTestCase.assertEquals(argumentType, normalParameters[0]); |
+ List<Type2> optionalParameters = result.optionalParameterTypes; |
+ EngineTestCase.assertLength(1, optionalParameters); |
+ JUnitTestCase.assertEquals(argumentType, optionalParameters[0]); |
+ Map<String, Type2> namedParameters = result.namedParameterTypes; |
+ EngineTestCase.assertSize2(1, namedParameters); |
+ JUnitTestCase.assertEquals(argumentType, namedParameters[namedParameterName]); |
+ } |
+ void test_substitute2_notEqual() { |
+ FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ Type2 returnType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("R"))); |
+ Type2 normalParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("A"))); |
+ Type2 optionalParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("B"))); |
+ Type2 namedParameterType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("C"))); |
+ functionType.returnType = returnType; |
+ functionType.normalParameterTypes = <Type2> [normalParameterType]; |
+ functionType.optionalParameterTypes = <Type2> [optionalParameterType]; |
+ LinkedHashMap<String, Type2> namedParameterTypes = new LinkedHashMap<String, Type2>(); |
+ String namedParameterName = "c"; |
+ namedParameterTypes[namedParameterName] = namedParameterType; |
+ functionType.namedParameterTypes = namedParameterTypes; |
+ InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("D"))); |
+ TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariableElementImpl(ASTFactory.identifier2("E"))); |
+ FunctionType result = functionType.substitute2(<Type2> [argumentType], <Type2> [parameterType]); |
+ JUnitTestCase.assertEquals(returnType, result.returnType); |
+ List<Type2> normalParameters = result.normalParameterTypes; |
+ EngineTestCase.assertLength(1, normalParameters); |
+ JUnitTestCase.assertEquals(normalParameterType, normalParameters[0]); |
+ List<Type2> optionalParameters = result.optionalParameterTypes; |
+ EngineTestCase.assertLength(1, optionalParameters); |
+ JUnitTestCase.assertEquals(optionalParameterType, optionalParameters[0]); |
+ Map<String, Type2> namedParameters = result.namedParameterTypes; |
+ EngineTestCase.assertSize2(1, namedParameters); |
+ JUnitTestCase.assertEquals(namedParameterType, namedParameters[namedParameterName]); |
+ } |
+ static dartSuite() { |
+ _ut.group('FunctionTypeImplTest', () { |
+ _ut.test('test_creation', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_creation); |
+ }); |
+ _ut.test('test_getElement', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getElement); |
+ }); |
+ _ut.test('test_getNamedParameterTypes', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getNamedParameterTypes); |
+ }); |
+ _ut.test('test_getNormalParameterTypes', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getNormalParameterTypes); |
+ }); |
+ _ut.test('test_getReturnType', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getReturnType); |
+ }); |
+ _ut.test('test_getTypeArguments', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getTypeArguments); |
+ }); |
+ _ut.test('test_hashCode_element', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_hashCode_element); |
+ }); |
+ _ut.test('test_hashCode_noElement', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_hashCode_noElement); |
+ }); |
+ _ut.test('test_isSubtypeOf_baseCase_notFunctionType', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_notFunctionType); |
+ }); |
+ _ut.test('test_isSubtypeOf_baseCase_null', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_null); |
+ }); |
+ _ut.test('test_isSubtypeOf_baseCase_self', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_self); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_isAssignable', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_isAssignable); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_isNotAssignable', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_isNotAssignable); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_namesDifferent', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_namesDifferent); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_orderOfParams', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_orderOfParams); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_orderOfParams2', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_orderOfParams2); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_orderOfParams3', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_orderOfParams3); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_sHasMoreParams', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_sHasMoreParams); |
+ }); |
+ _ut.test('test_isSubtypeOf_namedParameters_tHasMoreParams', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_namedParameters_tHasMoreParams); |
+ }); |
+ _ut.test('test_isSubtypeOf_normalParameters_isAssignable', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_isAssignable); |
+ }); |
+ _ut.test('test_isSubtypeOf_normalParameters_isNotAssignable', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_isNotAssignable); |
+ }); |
+ _ut.test('test_isSubtypeOf_normalParameters_sHasMoreParams', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_sHasMoreParams); |
+ }); |
+ _ut.test('test_isSubtypeOf_normalParameters_tHasMoreParams', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_normalParameters_tHasMoreParams); |
+ }); |
+ _ut.test('test_isSubtypeOf_optionalParameters_isAssignable', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_optionalParameters_isAssignable); |
+ }); |
+ _ut.test('test_isSubtypeOf_optionalParameters_isNotAssignable', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_optionalParameters_isNotAssignable); |
+ }); |
+ _ut.test('test_isSubtypeOf_optionalParameters_sHasMoreParams', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_optionalParameters_sHasMoreParams); |
+ }); |
+ _ut.test('test_isSubtypeOf_optionalParameters_tHasMoreParams', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_optionalParameters_tHasMoreParams); |
+ }); |
+ _ut.test('test_isSubtypeOf_returnType_sIsVoid', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_returnType_sIsVoid); |
+ }); |
+ _ut.test('test_isSubtypeOf_returnType_tAssignableToS', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_returnType_tAssignableToS); |
+ }); |
+ _ut.test('test_isSubtypeOf_returnType_tNotAssignableToS', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_returnType_tNotAssignableToS); |
+ }); |
+ _ut.test('test_isSubtypeOf_wrongFunctionType_normal_named', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_wrongFunctionType_normal_named); |
+ }); |
+ _ut.test('test_isSubtypeOf_wrongFunctionType_normal_optional', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_wrongFunctionType_normal_optional); |
+ }); |
+ _ut.test('test_isSubtypeOf_wrongFunctionType_optional_named', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_wrongFunctionType_optional_named); |
+ }); |
+ _ut.test('test_setNamedParameterTypes', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_setNamedParameterTypes); |
+ }); |
+ _ut.test('test_setNormalParameterTypes', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_setNormalParameterTypes); |
+ }); |
+ _ut.test('test_setReturnType', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_setReturnType); |
+ }); |
+ _ut.test('test_setTypeArguments', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_setTypeArguments); |
+ }); |
+ _ut.test('test_substitute2_equal', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_substitute2_equal); |
+ }); |
+ _ut.test('test_substitute2_notEqual', () { |
+ final __test = new FunctionTypeImplTest(); |
+ runJUnitTest(__test, __test.test_substitute2_notEqual); |
+ }); |
+ }); |
+ } |
+} |
+class LibraryElementImplTest extends EngineTestCase { |
+ void test_creation() { |
+ JUnitTestCase.assertNotNull(new LibraryElementImpl(new AnalysisContextImpl(), ASTFactory.libraryIdentifier2(["l"]))); |
+ } |
+ void test_getImportedLibraries() { |
+ AnalysisContext context = new AnalysisContextImpl(); |
+ LibraryElementImpl library1 = ElementFactory.library(context, "l1"); |
+ LibraryElementImpl library2 = ElementFactory.library(context, "l2"); |
+ LibraryElementImpl library3 = ElementFactory.library(context, "l3"); |
+ LibraryElementImpl library4 = ElementFactory.library(context, "l4"); |
+ PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier2("a")); |
+ PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier2("b")); |
+ List<ImportElementImpl> imports = [ElementFactory.importFor(library2, null, []), ElementFactory.importFor(library2, prefixB, []), ElementFactory.importFor(library3, null, []), ElementFactory.importFor(library3, prefixA, []), ElementFactory.importFor(library3, prefixB, []), ElementFactory.importFor(library4, prefixA, [])]; |
+ library1.imports = imports; |
+ List<LibraryElement> libraries = library1.importedLibraries; |
+ EngineTestCase.assertEqualsIgnoreOrder(<LibraryElement> [library2, library3, library4], libraries); |
+ } |
+ void test_getPrefixes() { |
+ AnalysisContext context = new AnalysisContextImpl(); |
+ LibraryElementImpl library17 = ElementFactory.library(context, "l1"); |
+ PrefixElement prefixA = new PrefixElementImpl(ASTFactory.identifier2("a")); |
+ PrefixElement prefixB = new PrefixElementImpl(ASTFactory.identifier2("b")); |
+ List<ImportElementImpl> imports = [ElementFactory.importFor(ElementFactory.library(context, "l2"), null, []), ElementFactory.importFor(ElementFactory.library(context, "l3"), null, []), ElementFactory.importFor(ElementFactory.library(context, "l4"), prefixA, []), ElementFactory.importFor(ElementFactory.library(context, "l5"), prefixA, []), ElementFactory.importFor(ElementFactory.library(context, "l6"), prefixB, [])]; |
+ library17.imports = imports; |
+ List<PrefixElement> prefixes2 = library17.prefixes; |
+ EngineTestCase.assertLength(2, prefixes2); |
+ if (identical(prefixA, prefixes2[0])) { |
+ JUnitTestCase.assertEquals(prefixB, prefixes2[1]); |
+ } else { |
+ JUnitTestCase.assertEquals(prefixB, prefixes2[0]); |
+ JUnitTestCase.assertEquals(prefixA, prefixes2[1]); |
+ } |
+ } |
+ void test_setImports() { |
+ AnalysisContext context = new AnalysisContextImpl(); |
+ LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libraryIdentifier2(["l1"])); |
+ List<ImportElementImpl> expectedImports = [ElementFactory.importFor(ElementFactory.library(context, "l2"), null, []), ElementFactory.importFor(ElementFactory.library(context, "l3"), null, [])]; |
+ library.imports = expectedImports; |
+ List<ImportElement> actualImports = library.imports; |
+ EngineTestCase.assertLength(expectedImports.length, actualImports); |
+ for (int i = 0; i < actualImports.length; i++) { |
+ JUnitTestCase.assertEquals(expectedImports[i], actualImports[i]); |
+ } |
+ } |
+ static dartSuite() { |
+ _ut.group('LibraryElementImplTest', () { |
+ _ut.test('test_creation', () { |
+ final __test = new LibraryElementImplTest(); |
+ runJUnitTest(__test, __test.test_creation); |
+ }); |
+ _ut.test('test_getImportedLibraries', () { |
+ final __test = new LibraryElementImplTest(); |
+ runJUnitTest(__test, __test.test_getImportedLibraries); |
+ }); |
+ _ut.test('test_getPrefixes', () { |
+ final __test = new LibraryElementImplTest(); |
+ runJUnitTest(__test, __test.test_getPrefixes); |
+ }); |
+ _ut.test('test_setImports', () { |
+ final __test = new LibraryElementImplTest(); |
+ runJUnitTest(__test, __test.test_setImports); |
+ }); |
+ }); |
+ } |
+} |
+/** |
+ * The class {@code ElementFactory} defines utility methods used to create elements for testing |
+ * purposes. |
+ */ |
+class ElementFactory { |
+ /** |
+ * The element representing the class 'Object'. |
+ */ |
+ static ClassElement _objectElement; |
+ static ClassElement classElement(String typeName, InterfaceType superclassType, List<String> parameterNames) { |
+ ClassElementImpl element = new ClassElementImpl(ASTFactory.identifier2(typeName)); |
+ element.supertype = superclassType; |
+ InterfaceTypeImpl type = new InterfaceTypeImpl.con1(element); |
+ element.type = type; |
+ int count = parameterNames.length; |
+ if (count > 0) { |
+ List<TypeVariableElementImpl> typeVariables = new List<TypeVariableElementImpl>.fixedLength(count); |
+ List<TypeVariableTypeImpl> typeArguments = new List<TypeVariableTypeImpl>.fixedLength(count); |
+ for (int i = 0; i < count; i++) { |
+ TypeVariableElementImpl variable = new TypeVariableElementImpl(ASTFactory.identifier2(parameterNames[i])); |
+ typeVariables[i] = variable; |
+ typeArguments[i] = new TypeVariableTypeImpl(variable); |
+ variable.type = typeArguments[i]; |
+ } |
+ element.typeVariables = typeVariables; |
+ type.typeArguments = typeArguments; |
+ } |
+ return element; |
+ } |
+ static ClassElement classElement2(String typeName, List<String> parameterNames) => classElement(typeName, object.type, parameterNames); |
+ static ConstructorElement constructorElement(String name) => new ConstructorElementImpl(name == null ? null : ASTFactory.identifier2(name)); |
+ static FieldElement fieldElement(String name, bool isStatic, bool isFinal, bool isConst, Type2 type27) { |
+ FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier2(name)); |
+ field.const2 = isConst; |
+ field.final2 = isFinal; |
+ field.static = isStatic; |
+ field.type = type27; |
+ PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con1(field); |
+ getter.getter = true; |
+ getter.synthetic = true; |
+ field.getter = getter; |
+ FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); |
+ getterType.returnType = type27; |
+ getter.type = getterType; |
+ if (!isConst && !isFinal) { |
+ PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con1(field); |
+ setter.setter = true; |
+ setter.synthetic = true; |
+ field.setter = setter; |
+ FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter); |
+ setterType.normalParameterTypes = <Type2> [type27]; |
+ setterType.returnType = VoidTypeImpl.instance; |
+ setter.type = setterType; |
+ } |
+ return field; |
+ } |
+ static FunctionElement functionElement(String functionName) => functionElement4(functionName, null, null, null, null); |
+ static FunctionElement functionElement2(String functionName, ClassElement returnElement) => functionElement3(functionName, returnElement, null, null); |
+ static FunctionElement functionElement3(String functionName, ClassElement returnElement, List<ClassElement> normalParameters, List<ClassElement> optionalParameters) { |
+ FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactory.identifier2(functionName)); |
+ FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); |
+ functionElement.type = functionType; |
+ if (returnElement != null) { |
+ functionType.returnType = returnElement.type; |
+ } |
+ int count = normalParameters == null ? 0 : normalParameters.length; |
+ if (count > 0) { |
+ List<InterfaceType> normalParameterTypes = new List<InterfaceType>.fixedLength(count); |
+ for (int i = 0; i < count; i++) { |
+ normalParameterTypes[i] = normalParameters[i].type; |
+ } |
+ functionType.normalParameterTypes = normalParameterTypes; |
+ } |
+ count = optionalParameters == null ? 0 : optionalParameters.length; |
+ if (count > 0) { |
+ List<InterfaceType> optionalParameterTypes = new List<InterfaceType>.fixedLength(count); |
+ for (int i = 0; i < count; i++) { |
+ optionalParameterTypes[i] = optionalParameters[i].type; |
+ } |
+ functionType.optionalParameterTypes = optionalParameterTypes; |
+ } |
+ return functionElement; |
+ } |
+ static FunctionElement functionElement4(String functionName, ClassElement returnElement, List<ClassElement> normalParameters, List<String> names, List<ClassElement> namedParameters) { |
+ FunctionElementImpl functionElement = new FunctionElementImpl.con1(ASTFactory.identifier2(functionName)); |
+ FunctionTypeImpl functionType = new FunctionTypeImpl.con1(functionElement); |
+ functionElement.type = functionType; |
+ if (returnElement != null) { |
+ functionType.returnType = returnElement.type; |
+ } |
+ int count = normalParameters == null ? 0 : normalParameters.length; |
+ if (count > 0) { |
+ List<InterfaceType> normalParameterTypes = new List<InterfaceType>.fixedLength(count); |
+ for (int i = 0; i < count; i++) { |
+ normalParameterTypes[i] = normalParameters[i].type; |
+ } |
+ functionType.normalParameterTypes = normalParameterTypes; |
+ } |
+ if (names != null && names.length > 0 && names.length == namedParameters.length) { |
+ LinkedHashMap<String, Type2> map = new LinkedHashMap<String, Type2>(); |
+ for (int i = 0; i < names.length; i++) { |
+ map[names[i]] = namedParameters[i].type; |
+ } |
+ functionType.namedParameterTypes = map; |
+ } else if (names != null) { |
+ throw new IllegalStateException("The passed String[] and ClassElement[] arrays had different lengths."); |
+ } |
+ return functionElement; |
+ } |
+ static FunctionElement functionElement5(String functionName, List<ClassElement> normalParameters) => functionElement3(functionName, null, normalParameters, null); |
+ static FunctionElement functionElement6(String functionName, List<ClassElement> normalParameters, List<ClassElement> optionalParameters) => functionElement3(functionName, null, normalParameters, optionalParameters); |
+ static FunctionElement functionElement7(String functionName, List<ClassElement> normalParameters, List<String> names, List<ClassElement> namedParameters) => functionElement4(functionName, null, normalParameters, names, namedParameters); |
+ static ClassElement get object { |
+ if (_objectElement == null) { |
+ _objectElement = classElement("Object", (null as InterfaceType), []); |
+ } |
+ return _objectElement; |
+ } |
+ static PropertyAccessorElement getterElement(String name, bool isStatic, Type2 type28) { |
+ FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier2(name)); |
+ field.static = isStatic; |
+ field.synthetic = true; |
+ field.type = type28; |
+ PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con1(field); |
+ getter.getter = true; |
+ field.getter = getter; |
+ FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); |
+ getterType.returnType = type28; |
+ getter.type = getterType; |
+ return getter; |
+ } |
+ static ImportElementImpl importFor(LibraryElement importedLibrary4, PrefixElement prefix12, List<NamespaceCombinator> combinators4) { |
+ ImportElementImpl spec = new ImportElementImpl(); |
+ spec.importedLibrary = importedLibrary4; |
+ spec.prefix = prefix12; |
+ spec.combinators = combinators4; |
+ return spec; |
+ } |
+ static LibraryElementImpl library(AnalysisContext context, String libraryName) { |
+ String fileName = "${libraryName}.dart"; |
+ FileBasedSource source = new FileBasedSource.con1(null, createFile(fileName)); |
+ CompilationUnitElementImpl unit = new CompilationUnitElementImpl(fileName); |
+ unit.source = source; |
+ LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libraryIdentifier2([libraryName])); |
+ library.definingCompilationUnit = unit; |
+ return library; |
+ } |
+ static MethodElement methodElement(String methodName, Type2 returnType9, List<Type2> argumentTypes) { |
+ MethodElementImpl method = new MethodElementImpl.con1(ASTFactory.identifier2(methodName)); |
+ int count = argumentTypes.length; |
+ List<ParameterElement> parameters = new List<ParameterElement>.fixedLength(count); |
+ for (int i = 0; i < count; i++) { |
+ ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identifier2("a${i}")); |
+ parameter.type = argumentTypes[i]; |
+ parameters[i] = parameter; |
+ } |
+ method.parameters = parameters; |
+ FunctionTypeImpl methodType = new FunctionTypeImpl.con1(method); |
+ methodType.normalParameterTypes = argumentTypes; |
+ methodType.returnType = returnType9; |
+ method.type = methodType; |
+ return method; |
+ } |
+ static PropertyAccessorElement setterElement(String name, bool isStatic, Type2 type29) { |
+ FieldElementImpl field = new FieldElementImpl.con1(ASTFactory.identifier2(name)); |
+ field.static = isStatic; |
+ field.synthetic = true; |
+ field.type = type29; |
+ PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con1(field); |
+ getter.getter = true; |
+ field.getter = getter; |
+ FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter); |
+ getterType.returnType = type29; |
+ getter.type = getterType; |
+ PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con1(field); |
+ setter.setter = true; |
+ setter.synthetic = true; |
+ field.setter = setter; |
+ FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter); |
+ setterType.normalParameterTypes = <Type2> [type29]; |
+ setterType.returnType = VoidTypeImpl.instance; |
+ setter.type = setterType; |
+ return setter; |
+ } |
+ static VariableElement variableElement(String name) => new VariableElementImpl.con2(name, -1); |
+ /** |
+ * Prevent the creation of instances of this class. |
+ */ |
+ ElementFactory() { |
+ } |
+} |
+class ElementImplTest extends EngineTestCase { |
+ void test_isAccessibleIn_private_differentLibrary() { |
+ AnalysisContextImpl context = new AnalysisContextImpl(); |
+ LibraryElementImpl library1 = ElementFactory.library(context, "lib1"); |
+ ClassElement classElement = ElementFactory.classElement2("_C", []); |
+ ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement]; |
+ LibraryElementImpl library2 = ElementFactory.library(context, "lib2"); |
+ JUnitTestCase.assertFalse(classElement.isAccessibleIn(library2)); |
+ } |
+ void test_isAccessibleIn_private_sameLibrary() { |
+ LibraryElementImpl library15 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElement classElement = ElementFactory.classElement2("_C", []); |
+ ((library15.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement]; |
+ JUnitTestCase.assertTrue(classElement.isAccessibleIn(library15)); |
+ } |
+ void test_isAccessibleIn_public_differentLibrary() { |
+ AnalysisContextImpl context = new AnalysisContextImpl(); |
+ LibraryElementImpl library1 = ElementFactory.library(context, "lib1"); |
+ ClassElement classElement = ElementFactory.classElement2("C", []); |
+ ((library1.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement]; |
+ LibraryElementImpl library2 = ElementFactory.library(context, "lib2"); |
+ JUnitTestCase.assertTrue(classElement.isAccessibleIn(library2)); |
+ } |
+ void test_isAccessibleIn_public_sameLibrary() { |
+ LibraryElementImpl library16 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElement classElement = ElementFactory.classElement2("C", []); |
+ ((library16.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classElement]; |
+ JUnitTestCase.assertTrue(classElement.isAccessibleIn(library16)); |
+ } |
+ static dartSuite() { |
+ _ut.group('ElementImplTest', () { |
+ _ut.test('test_isAccessibleIn_private_differentLibrary', () { |
+ final __test = new ElementImplTest(); |
+ runJUnitTest(__test, __test.test_isAccessibleIn_private_differentLibrary); |
+ }); |
+ _ut.test('test_isAccessibleIn_private_sameLibrary', () { |
+ final __test = new ElementImplTest(); |
+ runJUnitTest(__test, __test.test_isAccessibleIn_private_sameLibrary); |
+ }); |
+ _ut.test('test_isAccessibleIn_public_differentLibrary', () { |
+ final __test = new ElementImplTest(); |
+ runJUnitTest(__test, __test.test_isAccessibleIn_public_differentLibrary); |
+ }); |
+ _ut.test('test_isAccessibleIn_public_sameLibrary', () { |
+ final __test = new ElementImplTest(); |
+ runJUnitTest(__test, __test.test_isAccessibleIn_public_sameLibrary); |
+ }); |
+ }); |
+ } |
+} |
+class InterfaceTypeImplTest extends EngineTestCase { |
+ void test_computeLongestInheritancePathToObject_multipleInterfacePaths() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ ClassElementImpl elementD = (ElementFactory.classElement2("D", []) as ClassElementImpl); |
+ ClassElementImpl elementE = (ElementFactory.classElement2("E", []) as ClassElementImpl); |
+ elementB.interfaces = <InterfaceType> [elementA.type]; |
+ elementC.interfaces = <InterfaceType> [elementA.type]; |
+ elementD.interfaces = <InterfaceType> [elementC.type]; |
+ elementE.interfaces = <InterfaceType> [elementB.type, elementD.type]; |
+ JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementB.type)); |
+ JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementE.type)); |
+ } |
+ void test_computeLongestInheritancePathToObject_multipleSuperclassPaths() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementA.type, []); |
+ ClassElement elementD = ElementFactory.classElement("D", elementC.type, []); |
+ ClassElementImpl elementE = (ElementFactory.classElement("E", elementB.type, []) as ClassElementImpl); |
+ elementE.interfaces = <InterfaceType> [elementD.type]; |
+ JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementB.type)); |
+ JUnitTestCase.assertEquals(4, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementE.type)); |
+ } |
+ void test_computeLongestInheritancePathToObject_object() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType object = elementA.supertype; |
+ JUnitTestCase.assertEquals(0, InterfaceTypeImpl.computeLongestInheritancePathToObject(object)); |
+ } |
+ void test_computeLongestInheritancePathToObject_singleInterfacePath() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ elementB.interfaces = <InterfaceType> [elementA.type]; |
+ elementC.interfaces = <InterfaceType> [elementB.type]; |
+ JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementA.type)); |
+ JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementB.type)); |
+ JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementC.type)); |
+ } |
+ void test_computeLongestInheritancePathToObject_singleSuperclassPath() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); |
+ JUnitTestCase.assertEquals(1, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementA.type)); |
+ JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementB.type)); |
+ JUnitTestCase.assertEquals(3, InterfaceTypeImpl.computeLongestInheritancePathToObject(elementC.type)); |
+ } |
+ void test_computeSuperinterfaceSet_multipleInterfacePaths() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ ClassElementImpl elementD = (ElementFactory.classElement2("D", []) as ClassElementImpl); |
+ ClassElementImpl elementE = (ElementFactory.classElement2("E", []) as ClassElementImpl); |
+ elementB.interfaces = <InterfaceType> [elementA.type]; |
+ elementC.interfaces = <InterfaceType> [elementA.type]; |
+ elementD.interfaces = <InterfaceType> [elementC.type]; |
+ elementE.interfaces = <InterfaceType> [elementB.type, elementD.type]; |
+ Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterfaceSet(elementD.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfD); |
+ JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementA.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementC.type)); |
+ JUnitTestCase.assertEquals(3, superinterfacesOfD.length); |
+ Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterfaceSet(elementE.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfE); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementA.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementB.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementC.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementD.type)); |
+ JUnitTestCase.assertEquals(5, superinterfacesOfE.length); |
+ } |
+ void test_computeSuperinterfaceSet_multipleSuperclassPaths() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementA.type, []); |
+ ClassElement elementD = ElementFactory.classElement("D", elementC.type, []); |
+ ClassElementImpl elementE = (ElementFactory.classElement("E", elementB.type, []) as ClassElementImpl); |
+ elementE.interfaces = <InterfaceType> [elementD.type]; |
+ Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterfaceSet(elementD.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfD); |
+ JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementA.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfD.contains(elementC.type)); |
+ JUnitTestCase.assertEquals(3, superinterfacesOfD.length); |
+ Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterfaceSet(elementE.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfE); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementA.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementB.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementC.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfE.contains(elementD.type)); |
+ JUnitTestCase.assertEquals(5, superinterfacesOfE.length); |
+ } |
+ void test_computeSuperinterfaceSet_singleInterfacePath() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ elementB.interfaces = <InterfaceType> [elementA.type]; |
+ elementC.interfaces = <InterfaceType> [elementB.type]; |
+ Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(elementA.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfA); |
+ JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertEquals(1, superinterfacesOfA.length); |
+ Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(elementB.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfB); |
+ JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfB.contains(elementA.type)); |
+ JUnitTestCase.assertEquals(2, superinterfacesOfB.length); |
+ Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterfaceSet(elementC.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfC); |
+ JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementA.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementB.type)); |
+ JUnitTestCase.assertEquals(3, superinterfacesOfC.length); |
+ } |
+ void test_computeSuperinterfaceSet_singleSuperclassPath() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); |
+ Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(elementA.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfA); |
+ JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertEquals(1, superinterfacesOfA.length); |
+ Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(elementB.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfB); |
+ JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfB.contains(elementA.type)); |
+ JUnitTestCase.assertEquals(2, superinterfacesOfB.length); |
+ Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterfaceSet(elementC.type); |
+ JUnitTestCase.assertNotNull(superinterfacesOfC); |
+ JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementA.type)); |
+ JUnitTestCase.assertTrue(superinterfacesOfC.contains(elementB.type)); |
+ JUnitTestCase.assertEquals(3, superinterfacesOfC.length); |
+ } |
+ void test_creation() { |
+ JUnitTestCase.assertNotNull(new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("A")))); |
+ } |
+ void test_getElement() { |
+ ClassElementImpl typeElement = new ClassElementImpl(ASTFactory.identifier2("A")); |
+ InterfaceTypeImpl type = new InterfaceTypeImpl.con1(typeElement); |
+ JUnitTestCase.assertEquals(typeElement, type.element); |
+ } |
+ void test_getLeastUpperBound_directInterfaceCase() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementB.interfaces = <InterfaceType> [typeA]; |
+ elementC.interfaces = <InterfaceType> [typeB]; |
+ JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC)); |
+ JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_directSubclassCase() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement("B", elementA.type, []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement("C", elementB.type, []) as ClassElementImpl); |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ JUnitTestCase.assertEquals(typeB, typeB.getLeastUpperBound(typeC)); |
+ JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_functionType() { |
+ Type2 interfaceType = ElementFactory.classElement2("A", []).type; |
+ FunctionTypeImpl functionType = new FunctionTypeImpl.con1(new FunctionElementImpl.con1(ASTFactory.identifier2("f"))); |
+ JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(functionType)); |
+ } |
+ void test_getLeastUpperBound_mixinCase() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementA.type, []); |
+ ClassElementImpl elementD = (ElementFactory.classElement("D", elementB.type, []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeC = elementC.type; |
+ InterfaceType typeD = elementD.type; |
+ elementD.mixins = <InterfaceType> [ElementFactory.classElement2("M", []).type, ElementFactory.classElement2("N", []).type, ElementFactory.classElement2("O", []).type, ElementFactory.classElement2("P", []).type]; |
+ JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeC)); |
+ JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeD)); |
+ } |
+ void test_getLeastUpperBound_null() { |
+ Type2 interfaceType = ElementFactory.classElement2("A", []).type; |
+ JUnitTestCase.assertNull(interfaceType.getLeastUpperBound(null)); |
+ } |
+ void test_getLeastUpperBound_object() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ Type2 typeObject = typeA.element.supertype; |
+ JUnitTestCase.assertNull(((typeObject.element as ClassElement)).supertype); |
+ JUnitTestCase.assertEquals(typeObject, typeB.element.supertype); |
+ JUnitTestCase.assertEquals(typeObject, typeA.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_self() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType typeA = elementA.type; |
+ JUnitTestCase.assertEquals(typeA, typeA.getLeastUpperBound(typeA)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperclass1() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement("B", elementA.type, []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement("C", elementA.type, []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); |
+ JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperclass2() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement("B", elementA.type, []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement("C", elementA.type, []) as ClassElementImpl); |
+ ClassElementImpl elementD = (ElementFactory.classElement("D", elementC.type, []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeD = elementD.type; |
+ JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD)); |
+ JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperclass3() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement("B", elementA.type, []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement("C", elementB.type, []) as ClassElementImpl); |
+ ClassElementImpl elementD = (ElementFactory.classElement("D", elementB.type, []) as ClassElementImpl); |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ InterfaceType typeD = elementD.type; |
+ JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD)); |
+ JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperclass4() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementA2 = ElementFactory.classElement2("A2", []); |
+ ClassElement elementA3 = ElementFactory.classElement2("A3", []); |
+ ClassElementImpl elementB = (ElementFactory.classElement("B", elementA.type, []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement("C", elementA.type, []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeA2 = elementA2.type; |
+ InterfaceType typeA3 = elementA3.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementB.interfaces = <InterfaceType> [typeA2]; |
+ elementC.interfaces = <InterfaceType> [typeA3]; |
+ JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); |
+ JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperinterface1() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementB.interfaces = <InterfaceType> [typeA]; |
+ elementC.interfaces = <InterfaceType> [typeA]; |
+ JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); |
+ JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperinterface2() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ ClassElementImpl elementD = (ElementFactory.classElement2("D", []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ InterfaceType typeD = elementD.type; |
+ elementB.interfaces = <InterfaceType> [typeA]; |
+ elementC.interfaces = <InterfaceType> [typeA]; |
+ elementD.interfaces = <InterfaceType> [typeC]; |
+ JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeD)); |
+ JUnitTestCase.assertEquals(typeA, typeD.getLeastUpperBound(typeB)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperinterface3() { |
+ ClassElementImpl elementA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ ClassElementImpl elementD = (ElementFactory.classElement2("D", []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ InterfaceType typeD = elementD.type; |
+ elementB.interfaces = <InterfaceType> [typeA]; |
+ elementC.interfaces = <InterfaceType> [typeB]; |
+ elementD.interfaces = <InterfaceType> [typeB]; |
+ JUnitTestCase.assertEquals(typeB, typeC.getLeastUpperBound(typeD)); |
+ JUnitTestCase.assertEquals(typeB, typeD.getLeastUpperBound(typeC)); |
+ } |
+ void test_getLeastUpperBound_sharedSuperinterface4() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementA2 = ElementFactory.classElement2("A2", []); |
+ ClassElement elementA3 = ElementFactory.classElement2("A3", []); |
+ ClassElementImpl elementB = (ElementFactory.classElement2("B", []) as ClassElementImpl); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeA2 = elementA2.type; |
+ InterfaceType typeA3 = elementA3.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementB.interfaces = <InterfaceType> [typeA, typeA2]; |
+ elementC.interfaces = <InterfaceType> [typeA, typeA3]; |
+ JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC)); |
+ JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB)); |
+ } |
+ void test_getTypeArguments() { |
+ InterfaceTypeImpl type = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("A"))); |
+ EngineTestCase.assertLength(0, type.typeArguments); |
+ } |
+ void test_isDirectSupertypeOf_extends() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); |
+ InterfaceTypeImpl typeB = new InterfaceTypeImpl.con1(elementB); |
+ JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); |
+ } |
+ void test_isDirectSupertypeOf_false() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement2("B", []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); |
+ InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); |
+ InterfaceTypeImpl typeC = new InterfaceTypeImpl.con1(elementC); |
+ JUnitTestCase.assertFalse(typeA.isDirectSupertypeOf(typeC)); |
+ } |
+ void test_isDirectSupertypeOf_implements() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement2("B", []); |
+ ((elementB as ClassElementImpl)).interfaces = <InterfaceType> [elementA.type]; |
+ InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); |
+ InterfaceTypeImpl typeB = new InterfaceTypeImpl.con1(elementB); |
+ JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); |
+ } |
+ void test_isDirectSupertypeOf_with() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement2("B", []); |
+ ((elementB as ClassElementImpl)).mixins = <InterfaceType> [elementA.type]; |
+ InterfaceTypeImpl typeA = new InterfaceTypeImpl.con1(elementA); |
+ InterfaceTypeImpl typeB = new InterfaceTypeImpl.con1(elementB); |
+ JUnitTestCase.assertTrue(typeA.isDirectSupertypeOf(typeB)); |
+ } |
+ void test_isMoreSpecificThan_bottom() { |
+ Type2 type19 = ElementFactory.classElement2("A", []).type; |
+ JUnitTestCase.assertTrue(BottomTypeImpl.instance.isMoreSpecificThan(type19)); |
+ } |
+ void test_isMoreSpecificThan_covariance() { |
+ ClassElement elementA = ElementFactory.classElement2("A", ["E"]); |
+ ClassElement elementI = ElementFactory.classElement2("I", []); |
+ ClassElement elementJ = ElementFactory.classElement("J", elementI.type, []); |
+ InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(elementA); |
+ InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(elementA); |
+ typeAI.typeArguments = <Type2> [elementI.type]; |
+ typeAJ.typeArguments = <Type2> [elementJ.type]; |
+ JUnitTestCase.assertTrue(typeAJ.isMoreSpecificThan(typeAI)); |
+ JUnitTestCase.assertFalse(typeAI.isMoreSpecificThan(typeAJ)); |
+ } |
+ void test_isMoreSpecificThan_directSupertype() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ JUnitTestCase.assertTrue(typeB.isMoreSpecificThan(typeA)); |
+ JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeB)); |
+ } |
+ void test_isMoreSpecificThan_dynamic() { |
+ InterfaceType type20 = ElementFactory.classElement2("A", []).type; |
+ JUnitTestCase.assertTrue(type20.isMoreSpecificThan(DynamicTypeImpl.instance)); |
+ } |
+ void test_isMoreSpecificThan_indirectSupertype() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeC = elementC.type; |
+ JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA)); |
+ } |
+ void test_isMoreSpecificThan_self() { |
+ InterfaceType type21 = ElementFactory.classElement2("A", []).type; |
+ JUnitTestCase.assertTrue(type21.isMoreSpecificThan(type21)); |
+ } |
+ void test_isSubtypeOf_directSubtype() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ JUnitTestCase.assertTrue(typeB.isSubtypeOf(typeA)); |
+ JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeB)); |
+ } |
+ void test_isSubtypeOf_dynamic() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType typeA = elementA.type; |
+ Type2 dynamicType = DynamicTypeImpl.instance; |
+ JUnitTestCase.assertFalse(dynamicType.isSubtypeOf(typeA)); |
+ JUnitTestCase.assertTrue(typeA.isSubtypeOf(dynamicType)); |
+ } |
+ void test_isSubtypeOf_indirectSubtype() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeC = elementC.type; |
+ JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA)); |
+ JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); |
+ } |
+ void test_isSubtypeOf_interface() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeObject = elementA.supertype; |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementC.interfaces = <InterfaceType> [typeB]; |
+ JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB)); |
+ JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject)); |
+ JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA)); |
+ JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); |
+ } |
+ void test_isSubtypeOf_mixins() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeObject = elementA.supertype; |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementC.mixins = <InterfaceType> [typeB]; |
+ JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB)); |
+ JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject)); |
+ JUnitTestCase.assertFalse(typeC.isSubtypeOf(typeA)); |
+ JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC)); |
+ } |
+ void test_isSubtypeOf_object() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeObject = elementA.supertype; |
+ JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeObject)); |
+ JUnitTestCase.assertFalse(typeObject.isSubtypeOf(typeA)); |
+ } |
+ void test_isSubtypeOf_self() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType typeA = elementA.type; |
+ JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeA)); |
+ } |
+ void test_isSubtypeOf_typeArguments() { |
+ ClassElement elementA = ElementFactory.classElement2("A", ["E"]); |
+ ClassElement elementI = ElementFactory.classElement2("I", []); |
+ ClassElement elementJ = ElementFactory.classElement("J", elementI.type, []); |
+ ClassElement elementK = ElementFactory.classElement2("K", []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceTypeImpl typeAI = new InterfaceTypeImpl.con1(elementA); |
+ InterfaceTypeImpl typeAJ = new InterfaceTypeImpl.con1(elementA); |
+ InterfaceTypeImpl typeAK = new InterfaceTypeImpl.con1(elementA); |
+ typeAI.typeArguments = <Type2> [elementI.type]; |
+ typeAJ.typeArguments = <Type2> [elementJ.type]; |
+ typeAK.typeArguments = <Type2> [elementK.type]; |
+ JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeAI)); |
+ JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAJ)); |
+ JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeAI)); |
+ JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeAI)); |
+ JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeAJ)); |
+ JUnitTestCase.assertTrue(typeAI.isSubtypeOf(typeA)); |
+ JUnitTestCase.assertTrue(typeAJ.isSubtypeOf(typeA)); |
+ JUnitTestCase.assertFalse(typeAI.isSubtypeOf(typeAK)); |
+ JUnitTestCase.assertFalse(typeAK.isSubtypeOf(typeAI)); |
+ } |
+ void test_isSupertypeOf_directSupertype() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ JUnitTestCase.assertFalse(typeB.isSupertypeOf(typeA)); |
+ JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeB)); |
+ } |
+ void test_isSupertypeOf_dynamic() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType typeA = elementA.type; |
+ Type2 dynamicType = DynamicTypeImpl.instance; |
+ JUnitTestCase.assertTrue(dynamicType.isSupertypeOf(typeA)); |
+ JUnitTestCase.assertFalse(typeA.isSupertypeOf(dynamicType)); |
+ } |
+ void test_isSupertypeOf_indirectSupertype() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElement elementC = ElementFactory.classElement("C", elementB.type, []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeC = elementC.type; |
+ JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); |
+ JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC)); |
+ } |
+ void test_isSupertypeOf_interface() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeObject = elementA.supertype; |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementC.interfaces = <InterfaceType> [typeB]; |
+ JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC)); |
+ JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC)); |
+ JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC)); |
+ JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); |
+ } |
+ void test_isSupertypeOf_mixins() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeObject = elementA.supertype; |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementC.mixins = <InterfaceType> [typeB]; |
+ JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC)); |
+ JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC)); |
+ JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeC)); |
+ JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA)); |
+ } |
+ void test_isSupertypeOf_object() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeObject = elementA.supertype; |
+ JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeObject)); |
+ JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeA)); |
+ } |
+ void test_isSupertypeOf_self() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ InterfaceType typeA = elementA.type; |
+ JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeA)); |
+ } |
+ void test_setTypeArguments() { |
+ InterfaceTypeImpl type22 = (ElementFactory.classElement2("A", []).type as InterfaceTypeImpl); |
+ List<Type2> typeArguments = <Type2> [new InterfaceTypeImpl.con1(ElementFactory.classElement2("B", [])), new InterfaceTypeImpl.con1(ElementFactory.classElement2("C", []))]; |
+ type22.typeArguments = typeArguments; |
+ JUnitTestCase.assertEquals(typeArguments, type22.typeArguments); |
+ } |
+ void test_substitute_equal() { |
+ ClassElementImpl classElement = new ClassElementImpl(ASTFactory.identifier2("A")); |
+ TypeVariableElementImpl parameterElement = new TypeVariableElementImpl(ASTFactory.identifier2("E")); |
+ InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classElement); |
+ TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(parameterElement); |
+ type.typeArguments = <Type2> [parameter]; |
+ InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("B"))); |
+ InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [parameter]); |
+ JUnitTestCase.assertEquals(classElement, result.element); |
+ List<Type2> resultArguments = result.typeArguments; |
+ EngineTestCase.assertLength(1, resultArguments); |
+ JUnitTestCase.assertEquals(argumentType, resultArguments[0]); |
+ } |
+ void test_substitute_notEqual() { |
+ ClassElementImpl classElement = new ClassElementImpl(ASTFactory.identifier2("A")); |
+ TypeVariableElementImpl parameterElement = new TypeVariableElementImpl(ASTFactory.identifier2("E")); |
+ InterfaceTypeImpl type = new InterfaceTypeImpl.con1(classElement); |
+ TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(parameterElement); |
+ type.typeArguments = <Type2> [parameter]; |
+ InterfaceTypeImpl argumentType = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("B"))); |
+ TypeVariableTypeImpl parameterType = new TypeVariableTypeImpl(new TypeVariableElementImpl(ASTFactory.identifier2("F"))); |
+ InterfaceType result = type.substitute2(<Type2> [argumentType], <Type2> [parameterType]); |
+ JUnitTestCase.assertEquals(classElement, result.element); |
+ List<Type2> resultArguments = result.typeArguments; |
+ EngineTestCase.assertLength(1, resultArguments); |
+ JUnitTestCase.assertEquals(parameter, resultArguments[0]); |
+ } |
+ static dartSuite() { |
+ _ut.group('InterfaceTypeImplTest', () { |
+ _ut.test('test_computeLongestInheritancePathToObject_multipleInterfacePaths', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_multipleInterfacePaths); |
+ }); |
+ _ut.test('test_computeLongestInheritancePathToObject_multipleSuperclassPaths', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_multipleSuperclassPaths); |
+ }); |
+ _ut.test('test_computeLongestInheritancePathToObject_object', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_object); |
+ }); |
+ _ut.test('test_computeLongestInheritancePathToObject_singleInterfacePath', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_singleInterfacePath); |
+ }); |
+ _ut.test('test_computeLongestInheritancePathToObject_singleSuperclassPath', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_singleSuperclassPath); |
+ }); |
+ _ut.test('test_computeSuperinterfaceSet_multipleInterfacePaths', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeSuperinterfaceSet_multipleInterfacePaths); |
+ }); |
+ _ut.test('test_computeSuperinterfaceSet_multipleSuperclassPaths', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeSuperinterfaceSet_multipleSuperclassPaths); |
+ }); |
+ _ut.test('test_computeSuperinterfaceSet_singleInterfacePath', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeSuperinterfaceSet_singleInterfacePath); |
+ }); |
+ _ut.test('test_computeSuperinterfaceSet_singleSuperclassPath', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_computeSuperinterfaceSet_singleSuperclassPath); |
+ }); |
+ _ut.test('test_creation', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_creation); |
+ }); |
+ _ut.test('test_getElement', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getElement); |
+ }); |
+ _ut.test('test_getLeastUpperBound_directInterfaceCase', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_directInterfaceCase); |
+ }); |
+ _ut.test('test_getLeastUpperBound_directSubclassCase', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_directSubclassCase); |
+ }); |
+ _ut.test('test_getLeastUpperBound_functionType', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_functionType); |
+ }); |
+ _ut.test('test_getLeastUpperBound_mixinCase', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_mixinCase); |
+ }); |
+ _ut.test('test_getLeastUpperBound_null', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_null); |
+ }); |
+ _ut.test('test_getLeastUpperBound_object', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_object); |
+ }); |
+ _ut.test('test_getLeastUpperBound_self', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_self); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperclass1', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass1); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperclass2', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass2); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperclass3', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass3); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperclass4', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperclass4); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperinterface1', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface1); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperinterface2', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface2); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperinterface3', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface3); |
+ }); |
+ _ut.test('test_getLeastUpperBound_sharedSuperinterface4', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface4); |
+ }); |
+ _ut.test('test_getTypeArguments', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getTypeArguments); |
+ }); |
+ _ut.test('test_isDirectSupertypeOf_extends', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isDirectSupertypeOf_extends); |
+ }); |
+ _ut.test('test_isDirectSupertypeOf_false', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isDirectSupertypeOf_false); |
+ }); |
+ _ut.test('test_isDirectSupertypeOf_implements', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isDirectSupertypeOf_implements); |
+ }); |
+ _ut.test('test_isDirectSupertypeOf_with', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isDirectSupertypeOf_with); |
+ }); |
+ _ut.test('test_isMoreSpecificThan_bottom', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isMoreSpecificThan_bottom); |
+ }); |
+ _ut.test('test_isMoreSpecificThan_covariance', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isMoreSpecificThan_covariance); |
+ }); |
+ _ut.test('test_isMoreSpecificThan_directSupertype', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isMoreSpecificThan_directSupertype); |
+ }); |
+ _ut.test('test_isMoreSpecificThan_dynamic', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isMoreSpecificThan_dynamic); |
+ }); |
+ _ut.test('test_isMoreSpecificThan_indirectSupertype', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isMoreSpecificThan_indirectSupertype); |
+ }); |
+ _ut.test('test_isMoreSpecificThan_self', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isMoreSpecificThan_self); |
+ }); |
+ _ut.test('test_isSubtypeOf_directSubtype', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_directSubtype); |
+ }); |
+ _ut.test('test_isSubtypeOf_dynamic', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_dynamic); |
+ }); |
+ _ut.test('test_isSubtypeOf_indirectSubtype', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_indirectSubtype); |
+ }); |
+ _ut.test('test_isSubtypeOf_interface', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_interface); |
+ }); |
+ _ut.test('test_isSubtypeOf_mixins', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_mixins); |
+ }); |
+ _ut.test('test_isSubtypeOf_object', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_object); |
+ }); |
+ _ut.test('test_isSubtypeOf_self', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_self); |
+ }); |
+ _ut.test('test_isSubtypeOf_typeArguments', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSubtypeOf_typeArguments); |
+ }); |
+ _ut.test('test_isSupertypeOf_directSupertype', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSupertypeOf_directSupertype); |
+ }); |
+ _ut.test('test_isSupertypeOf_dynamic', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSupertypeOf_dynamic); |
+ }); |
+ _ut.test('test_isSupertypeOf_indirectSupertype', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSupertypeOf_indirectSupertype); |
+ }); |
+ _ut.test('test_isSupertypeOf_interface', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSupertypeOf_interface); |
+ }); |
+ _ut.test('test_isSupertypeOf_mixins', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSupertypeOf_mixins); |
+ }); |
+ _ut.test('test_isSupertypeOf_object', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSupertypeOf_object); |
+ }); |
+ _ut.test('test_isSupertypeOf_self', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_isSupertypeOf_self); |
+ }); |
+ _ut.test('test_setTypeArguments', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_setTypeArguments); |
+ }); |
+ _ut.test('test_substitute_equal', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_substitute_equal); |
+ }); |
+ _ut.test('test_substitute_notEqual', () { |
+ final __test = new InterfaceTypeImplTest(); |
+ runJUnitTest(__test, __test.test_substitute_notEqual); |
+ }); |
+ }); |
+ } |
+} |
+class ClassElementImplTest extends EngineTestCase { |
+ void test_allSupertypes_interface() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeObject = elementA.supertype; |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementC.interfaces = <InterfaceType> [typeB]; |
+ List<InterfaceType> supers = elementC.allSupertypes; |
+ List<InterfaceType> types = new List<InterfaceType>(); |
+ types.addAll(supers); |
+ JUnitTestCase.assertTrue(types.contains(typeA)); |
+ JUnitTestCase.assertTrue(types.contains(typeB)); |
+ JUnitTestCase.assertTrue(types.contains(typeObject)); |
+ JUnitTestCase.assertFalse(types.contains(typeC)); |
+ } |
+ void test_allSupertypes_mixins() { |
+ ClassElement elementA = ElementFactory.classElement2("A", []); |
+ ClassElement elementB = ElementFactory.classElement("B", elementA.type, []); |
+ ClassElementImpl elementC = (ElementFactory.classElement2("C", []) as ClassElementImpl); |
+ InterfaceType typeObject = elementA.supertype; |
+ InterfaceType typeA = elementA.type; |
+ InterfaceType typeB = elementB.type; |
+ InterfaceType typeC = elementC.type; |
+ elementC.mixins = <InterfaceType> [typeB]; |
+ List<InterfaceType> supers = elementC.allSupertypes; |
+ List<InterfaceType> types = new List<InterfaceType>(); |
+ types.addAll(supers); |
+ JUnitTestCase.assertFalse(types.contains(typeA)); |
+ JUnitTestCase.assertTrue(types.contains(typeB)); |
+ JUnitTestCase.assertTrue(types.contains(typeObject)); |
+ JUnitTestCase.assertFalse(types.contains(typeC)); |
+ } |
+ void test_lookUpGetter_declared() { |
+ LibraryElementImpl library6 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ String getterName = "g"; |
+ PropertyAccessorElement getter = ElementFactory.getterElement(getterName, false, null); |
+ classA.accessors = <PropertyAccessorElement> [getter]; |
+ ((library6.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; |
+ JUnitTestCase.assertSame(getter, classA.lookUpGetter(getterName, library6)); |
+ } |
+ void test_lookUpGetter_inherited() { |
+ LibraryElementImpl library7 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ String getterName = "g"; |
+ PropertyAccessorElement getter = ElementFactory.getterElement(getterName, false, null); |
+ classA.accessors = <PropertyAccessorElement> [getter]; |
+ ClassElementImpl classB = (ElementFactory.classElement("B", classA.type, []) as ClassElementImpl); |
+ ((library7.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB]; |
+ JUnitTestCase.assertSame(getter, classB.lookUpGetter(getterName, library7)); |
+ } |
+ void test_lookUpGetter_undeclared() { |
+ LibraryElementImpl library8 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ((library8.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; |
+ JUnitTestCase.assertNull(classA.lookUpGetter("g", library8)); |
+ } |
+ void test_lookUpMethod_declared() { |
+ LibraryElementImpl library9 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ String methodName = "m"; |
+ MethodElement method = ElementFactory.methodElement(methodName, null, []); |
+ classA.methods = <MethodElement> [method]; |
+ ((library9.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; |
+ JUnitTestCase.assertSame(method, classA.lookUpMethod(methodName, library9)); |
+ } |
+ void test_lookUpMethod_inherited() { |
+ LibraryElementImpl library10 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ String methodName = "m"; |
+ MethodElement method = ElementFactory.methodElement(methodName, null, []); |
+ classA.methods = <MethodElement> [method]; |
+ ClassElementImpl classB = (ElementFactory.classElement("B", classA.type, []) as ClassElementImpl); |
+ ((library10.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB]; |
+ JUnitTestCase.assertSame(method, classB.lookUpMethod(methodName, library10)); |
+ } |
+ void test_lookUpMethod_undeclared() { |
+ LibraryElementImpl library11 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ((library11.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; |
+ JUnitTestCase.assertNull(classA.lookUpMethod("m", library11)); |
+ } |
+ void test_lookUpSetter_declared() { |
+ LibraryElementImpl library12 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ String setterName = "s"; |
+ PropertyAccessorElement setter = ElementFactory.setterElement(setterName, false, null); |
+ classA.accessors = <PropertyAccessorElement> [setter]; |
+ ((library12.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; |
+ JUnitTestCase.assertSame(setter, classA.lookUpSetter(setterName, library12)); |
+ } |
+ void test_lookUpSetter_inherited() { |
+ LibraryElementImpl library13 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ String setterName = "s"; |
+ PropertyAccessorElement setter = ElementFactory.setterElement(setterName, false, null); |
+ classA.accessors = <PropertyAccessorElement> [setter]; |
+ ClassElementImpl classB = (ElementFactory.classElement("B", classA.type, []) as ClassElementImpl); |
+ ((library13.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB]; |
+ JUnitTestCase.assertSame(setter, classB.lookUpSetter(setterName, library13)); |
+ } |
+ void test_lookUpSetter_undeclared() { |
+ LibraryElementImpl library14 = ElementFactory.library(new AnalysisContextImpl(), "lib"); |
+ ClassElementImpl classA = (ElementFactory.classElement2("A", []) as ClassElementImpl); |
+ ((library14.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA]; |
+ JUnitTestCase.assertNull(classA.lookUpSetter("s", library14)); |
+ } |
+ static dartSuite() { |
+ _ut.group('ClassElementImplTest', () { |
+ _ut.test('test_allSupertypes_interface', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_allSupertypes_interface); |
+ }); |
+ _ut.test('test_allSupertypes_mixins', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_allSupertypes_mixins); |
+ }); |
+ _ut.test('test_lookUpGetter_declared', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpGetter_declared); |
+ }); |
+ _ut.test('test_lookUpGetter_inherited', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpGetter_inherited); |
+ }); |
+ _ut.test('test_lookUpGetter_undeclared', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpGetter_undeclared); |
+ }); |
+ _ut.test('test_lookUpMethod_declared', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpMethod_declared); |
+ }); |
+ _ut.test('test_lookUpMethod_inherited', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpMethod_inherited); |
+ }); |
+ _ut.test('test_lookUpMethod_undeclared', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpMethod_undeclared); |
+ }); |
+ _ut.test('test_lookUpSetter_declared', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpSetter_declared); |
+ }); |
+ _ut.test('test_lookUpSetter_inherited', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpSetter_inherited); |
+ }); |
+ _ut.test('test_lookUpSetter_undeclared', () { |
+ final __test = new ClassElementImplTest(); |
+ runJUnitTest(__test, __test.test_lookUpSetter_undeclared); |
+ }); |
+ }); |
+ } |
+} |
+class TypeVariableTypeImplTest extends EngineTestCase { |
+ void test_creation() { |
+ JUnitTestCase.assertNotNull(new TypeVariableTypeImpl(new TypeVariableElementImpl(ASTFactory.identifier2("E")))); |
+ } |
+ void test_getElement() { |
+ TypeVariableElementImpl element = new TypeVariableElementImpl(ASTFactory.identifier2("E")); |
+ TypeVariableTypeImpl type = new TypeVariableTypeImpl(element); |
+ JUnitTestCase.assertEquals(element, type.element); |
+ } |
+ void test_substitute_equal() { |
+ TypeVariableElementImpl element = new TypeVariableElementImpl(ASTFactory.identifier2("E")); |
+ TypeVariableTypeImpl type = new TypeVariableTypeImpl(element); |
+ InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("A"))); |
+ TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(element); |
+ JUnitTestCase.assertSame(argument, type.substitute2(<Type2> [argument], <Type2> [parameter])); |
+ } |
+ void test_substitute_notEqual() { |
+ TypeVariableTypeImpl type = new TypeVariableTypeImpl(new TypeVariableElementImpl(ASTFactory.identifier2("E"))); |
+ InterfaceTypeImpl argument = new InterfaceTypeImpl.con1(new ClassElementImpl(ASTFactory.identifier2("A"))); |
+ TypeVariableTypeImpl parameter = new TypeVariableTypeImpl(new TypeVariableElementImpl(ASTFactory.identifier2("F"))); |
+ JUnitTestCase.assertSame(type, type.substitute2(<Type2> [argument], <Type2> [parameter])); |
+ } |
+ static dartSuite() { |
+ _ut.group('TypeVariableTypeImplTest', () { |
+ _ut.test('test_creation', () { |
+ final __test = new TypeVariableTypeImplTest(); |
+ runJUnitTest(__test, __test.test_creation); |
+ }); |
+ _ut.test('test_getElement', () { |
+ final __test = new TypeVariableTypeImplTest(); |
+ runJUnitTest(__test, __test.test_getElement); |
+ }); |
+ _ut.test('test_substitute_equal', () { |
+ final __test = new TypeVariableTypeImplTest(); |
+ runJUnitTest(__test, __test.test_substitute_equal); |
+ }); |
+ _ut.test('test_substitute_notEqual', () { |
+ final __test = new TypeVariableTypeImplTest(); |
+ runJUnitTest(__test, __test.test_substitute_notEqual); |
+ }); |
+ }); |
+ } |
+} |
+main() { |
+ ClassElementImplTest.dartSuite(); |
+ ElementLocationImplTest.dartSuite(); |
+ ElementImplTest.dartSuite(); |
+ LibraryElementImplTest.dartSuite(); |
+ FunctionTypeImplTest.dartSuite(); |
+ InterfaceTypeImplTest.dartSuite(); |
+ TypeVariableTypeImplTest.dartSuite(); |
+} |