@Test public void solveTypeInSamePackage() throws ParseException { CompilationUnit cu = parseSample("CompilationUnitWithImports"); Context context = new CompilationUnitContext(cu, typeSolver); ResolvedReferenceTypeDeclaration otherClass = EasyMock.createMock(ResolvedReferenceTypeDeclaration.class); EasyMock.expect(otherClass.getQualifiedName()).andReturn("com.foo.OtherClassInSamePackage"); MemoryTypeSolver memoryTypeSolver = new MemoryTypeSolver(); memoryTypeSolver.addDeclaration("com.foo.OtherClassInSamePackage", otherClass); EasyMock.replay(otherClass); SymbolReference<ResolvedTypeDeclaration> ref = context.solveType("OtherClassInSamePackage", memoryTypeSolver); assertEquals(true, ref.isSolved()); assertEquals("com.foo.OtherClassInSamePackage", ref.getCorrespondingDeclaration().getQualifiedName()); }
@Test(expected = UnsolvedSymbolException.class) public void aClassInDefaultPackageCanBeAccessedFromOutsideTheDefaultPackageWithoutImportingIt() { String code = "package myPackage; class A extends B {}"; MemoryTypeSolver memoryTypeSolver = new MemoryTypeSolver(); memoryTypeSolver.addDeclaration("B", new MyClassDeclaration("B")); ResolvedType resolvedType = JavaParserFacade.get(memoryTypeSolver).convertToUsage(JavaParser.parse(code).getClassByName("A").get().getExtendedTypes(0)); assertEquals("B", resolvedType.asReferenceType().getQualifiedName()); } }
@Test(expected = UnsolvedSymbolException.class) public void aClassInDefaultPackageCanBeAccessedFromOutsideTheDefaultPackageImportingIt() { String code = "package myPackage; import B; class A extends B {}"; MemoryTypeSolver memoryTypeSolver = new MemoryTypeSolver(); memoryTypeSolver.addDeclaration("B", new MyClassDeclaration("B")); ClassOrInterfaceType jpType = JavaParser.parse(code).getClassByName("A").get().getExtendedTypes(0); ResolvedType resolvedType = JavaParserFacade.get(memoryTypeSolver).convertToUsage(jpType); assertEquals("B", resolvedType.asReferenceType().getQualifiedName()); }
@Test public void aClassInDefaultPackageCanBeAccessedFromTheDefaultPackage() { String code = "class A extends B {}"; MemoryTypeSolver memoryTypeSolver = new MemoryTypeSolver(); memoryTypeSolver.addDeclaration("B", new MyClassDeclaration("B")); ClassOrInterfaceType jpType = JavaParser.parse(code).getClassByName("A").get().getExtendedTypes(0); ResolvedType resolvedType = JavaParserFacade.get(memoryTypeSolver).convertToUsage(jpType); assertEquals("B", resolvedType.asReferenceType().getQualifiedName()); }