@Test public void solveUnexistingGenericType() throws ParseException { CompilationUnit cu = parseSample("ClassWithTypeVariables"); Context context = new CompilationUnitContext(cu, typeSolver); Optional<ResolvedType> d = context.solveGenericType("D", new MemoryTypeSolver()); assertEquals(false, d.isPresent()); }
@Test public void getParent() throws ParseException { CompilationUnit cu = parseSample("ClassWithTypeVariables"); Context context = new CompilationUnitContext(cu, typeSolver); assertTrue(null == context.getParent()); }
@Test public void solveSymbolAsValueReferringToStaticField() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitSymbols"); Context context = new CompilationUnitContext(cu, typeSolver); Optional<Value> ref = context.solveSymbolAsValue("java.lang.System.out", new ReflectionTypeSolver()); assertEquals(true, ref.isPresent()); assertEquals("java.io.PrintStream", ref.get().getType().describe()); }
@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()); }
throw new NullPointerException("Node should not be null"); } else if (node instanceof CompilationUnit) { return new CompilationUnitContext((CompilationUnit) node, typeSolver); } else if (node instanceof ForeachStmt) { return new ForechStatementContext((ForeachStmt) node, typeSolver);
@Test public void solveExistingGenericType() throws ParseException { CompilationUnit cu = parseSample("ClassWithTypeVariables"); Context context = new CompilationUnitContext(cu, typeSolver); Optional<ResolvedType> a = context.solveGenericType("A", new MemoryTypeSolver()); Optional<ResolvedType> b = context.solveGenericType("B", new MemoryTypeSolver()); Optional<ResolvedType> c = context.solveGenericType("C", new MemoryTypeSolver()); assertEquals(false, a.isPresent()); assertEquals(false, b.isPresent()); assertEquals(false, c.isPresent()); }
throw new NullPointerException("Node should not be null"); } else if (node instanceof CompilationUnit) { return new CompilationUnitContext((CompilationUnit) node, typeSolver); } else if (node instanceof ForeachStmt) { return new ForechStatementContext((ForeachStmt) node, typeSolver);
return new BlockStmtContext((BlockStmt) node, typeSolver); } else if (node instanceof CompilationUnit) { return new CompilationUnitContext((CompilationUnit) node, typeSolver); } else if (node instanceof ForEachStmt) { return new ForEachStatementContext((ForEachStmt) node, typeSolver);
@Test public void solveSymbolAsValueReferringToStaticallyImportedValue() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitSymbols"); Context context = new CompilationUnitContext(cu, typeSolver); CombinedTypeSolver typeSolver = new CombinedTypeSolver(); typeSolver.add(new ReflectionTypeSolver()); typeSolver.add(new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); Optional<Value> ref = context.solveSymbolAsValue("out", typeSolver); assertEquals(true, ref.isPresent()); assertEquals("java.io.PrintStream", ref.get().getType().describe()); }
@Test public void solveSymbolAsValueReferringToStaticallyImportedUsingAsteriskValue() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitSymbols"); Context context = new CompilationUnitContext(cu, typeSolver); CombinedTypeSolver typeSolver = new CombinedTypeSolver(); typeSolver.add(new ReflectionTypeSolver()); typeSolver.add(new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); Optional<Value> ref = context.solveSymbolAsValue("err", typeSolver); assertEquals(true, ref.isPresent()); assertEquals("java.io.PrintStream", ref.get().getType().describe()); }
@Test public void getParentForTopClass() throws ParseException { CompilationUnit cu = parseSample("ClassWithTypeVariables"); ClassOrInterfaceDeclaration classOrInterfaceDeclaration = Navigator.demandClass(cu, "A"); Context context = new ClassOrInterfaceDeclarationContext(classOrInterfaceDeclaration, typeSolver); assertFalse(null == context.getParent()); assertEquals(new CompilationUnitContext(cu, typeSolver), context.getParent()); }
@Test public void solveTypeNotImported() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitWithImports"); Context context = new CompilationUnitContext(cu, typeSolver); SymbolReference<ResolvedTypeDeclaration> ref = context.solveType("org.junit.Assume", new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); assertEquals(true, ref.isSolved()); assertEquals("org.junit.Assume", ref.getCorrespondingDeclaration().getQualifiedName()); }
@Test public void solveTypeImported() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitWithImports"); Context context = new CompilationUnitContext(cu, typeSolver); SymbolReference<ResolvedTypeDeclaration> ref = context.solveType("Assert", new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); assertEquals(true, ref.isSolved()); assertEquals("org.junit.Assert", ref.getCorrespondingDeclaration().getQualifiedName()); }
@Test public void solveSymbolReferringToStaticField() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitSymbols"); Context context = new CompilationUnitContext(cu, typeSolver); SymbolReference<? extends ResolvedValueDeclaration> ref = context.solveSymbol("java.lang.System.out", new ReflectionTypeSolver()); assertEquals(true, ref.isSolved()); assertEquals("java.io.PrintStream", ref.getCorrespondingDeclaration().getType().asReferenceType().getQualifiedName()); }
@Test public void solveSymbolReferringToStaticallyImportedValue() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitSymbols"); Context context = new CompilationUnitContext(cu, typeSolver); CombinedTypeSolver typeSolver = new CombinedTypeSolver(); typeSolver.add(new ReflectionTypeSolver()); typeSolver.add(new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); SymbolReference<? extends ResolvedValueDeclaration> ref = context.solveSymbol("out", typeSolver); assertEquals(true, ref.isSolved()); assertEquals("java.io.PrintStream", ref.getCorrespondingDeclaration().getType().asReferenceType().getQualifiedName()); }
@Test public void solveSymbolReferringToStaticallyImportedUsingAsteriskValue() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitSymbols"); Context context = new CompilationUnitContext(cu, typeSolver); CombinedTypeSolver typeSolver = new CombinedTypeSolver(); typeSolver.add(new ReflectionTypeSolver()); typeSolver.add(new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); SymbolReference<? extends ResolvedValueDeclaration> ref = context.solveSymbol("err", typeSolver); assertEquals(true, ref.isSolved()); assertEquals("java.io.PrintStream", ref.getCorrespondingDeclaration().getType().asReferenceType().getQualifiedName()); }
@Test public void solveMethodStaticallyImportedWithAsterisk() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitWithImports"); Context context = new CompilationUnitContext(cu, typeSolver); CombinedTypeSolver typeSolver = new CombinedTypeSolver(); typeSolver.add(new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); typeSolver.add(new ReflectionTypeSolver()); SymbolReference<ResolvedMethodDeclaration> ref = context.solveMethod("assertFalse", ImmutableList.of(ResolvedPrimitiveType.BOOLEAN), false, typeSolver); assertEquals(true, ref.isSolved()); assertEquals("assertFalse", ref.getCorrespondingDeclaration().getName()); assertEquals(1, ref.getCorrespondingDeclaration().getNumberOfParams()); assertEquals("boolean", ref.getCorrespondingDeclaration().getParam(0).getType().describe()); assertEquals(true, ref.getCorrespondingDeclaration().getParam(0).getType().isPrimitive()); }
@Test public void solveMethodStaticallyImportedWithoutAsterisk() throws ParseException, IOException { CompilationUnit cu = parseSample("CompilationUnitSymbols"); Context context = new CompilationUnitContext(cu, typeSolver); CombinedTypeSolver typeSolver = new CombinedTypeSolver(); typeSolver.add(new JarTypeSolver(adaptPath("src/test/resources/junit-4.8.1.jar"))); typeSolver.add(new ReflectionTypeSolver()); SymbolReference<ResolvedMethodDeclaration> ref = context.solveMethod("assertEquals", ImmutableList.of(NullType.INSTANCE, NullType.INSTANCE), false, typeSolver); assertEquals(true, ref.isSolved()); assertEquals("assertEquals", ref.getCorrespondingDeclaration().getName()); assertEquals(2, ref.getCorrespondingDeclaration().getNumberOfParams()); assertEquals("java.lang.Object", ref.getCorrespondingDeclaration().getParam(0).getType().asReferenceType().getQualifiedName()); assertEquals("java.lang.Object", ref.getCorrespondingDeclaration().getParam(1).getType().asReferenceType().getQualifiedName()); }