Skip to content

Commit

Permalink
add tests for CompilationUnitContext.solveSymbol
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomassetti committed Aug 19, 2015
1 parent 0473f76 commit da6690a
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 16 deletions.
Expand Up @@ -50,7 +50,12 @@ public SymbolReference<? extends ValueDeclaration> solveSymbol(String name, Type
if (importDecl.isStatic()) {
if (importDecl.isAsterisk()) {
if (importDecl.getName() instanceof QualifiedNameExpr) {
throw new UnsupportedOperationException("A");
String qName = importDecl.getName().toString();
me.tomassetti.symbolsolver.model.declarations.TypeDeclaration importedType = typeSolver.solveType(qName);
SymbolReference<? extends ValueDeclaration> ref = importedType.solveSymbol(name, typeSolver);
if (ref.isSolved()) {
return ref;
}
} else {
throw new UnsupportedOperationException("B");
}
Expand All @@ -61,8 +66,10 @@ public SymbolReference<? extends ValueDeclaration> solveSymbol(String name, Type
String typeName = getType(qName);
String memberName = getMember(qName);

me.tomassetti.symbolsolver.model.declarations.TypeDeclaration importedType = typeSolver.solveType(typeName);
return importedType.solveSymbol(memberName, typeSolver);
if (memberName.equals(name)) {
me.tomassetti.symbolsolver.model.declarations.TypeDeclaration importedType = typeSolver.solveType(typeName);
return importedType.solveSymbol(memberName, typeSolver);
}
} else {
throw new UnsupportedOperationException("C");
}
Expand Down
Expand Up @@ -262,7 +262,7 @@ public boolean isInterface() {

@Override
public String toString() {
return "JavassistClassDeclaration }" + ctClass.getName() + '}';
return "JavassistClassDeclaration {" + ctClass.getName() + '}';
}

@Override
Expand Down
Expand Up @@ -5,15 +5,13 @@
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.google.common.collect.ImmutableList;
import me.tomassetti.symbolsolver.javaparser.Navigator;
import me.tomassetti.symbolsolver.model.AbstractTest;
import me.tomassetti.symbolsolver.model.Context;
import me.tomassetti.symbolsolver.model.SymbolReference;
import me.tomassetti.symbolsolver.model.Value;
import me.tomassetti.symbolsolver.model.*;
import me.tomassetti.symbolsolver.model.declarations.AmbiguityException;
import me.tomassetti.symbolsolver.model.declarations.MethodDeclaration;
import me.tomassetti.symbolsolver.model.declarations.TypeDeclaration;
import me.tomassetti.symbolsolver.model.declarations.ValueDeclaration;
import me.tomassetti.symbolsolver.model.reflection.ReflectionClassDeclaration;
import me.tomassetti.symbolsolver.model.typesolvers.CombinedTypeSolver;
import me.tomassetti.symbolsolver.model.typesolvers.DummyTypeSolver;
import me.tomassetti.symbolsolver.model.typesolvers.JarTypeSolver;
import me.tomassetti.symbolsolver.model.typesolvers.JreTypeSolver;
Expand Down Expand Up @@ -64,26 +62,30 @@ public void solveUnexistingGenericType() throws ParseException {
assertEquals(false, d.isPresent());
}


//new JarTypeSolver("src/test/resources/junit-4.8.1.jar")
@Test
public void solveSymbolReferringToStaticallyImportedValue() throws ParseException {
public void solveSymbolReferringToStaticallyImportedValue() throws ParseException, IOException {
CompilationUnit cu = parseSample("CompilationUnitSymbols");
Context context = new CompilationUnitContext(cu);

SymbolReference<? extends ValueDeclaration> ref = context.solveSymbol("out", new JreTypeSolver());
CombinedTypeSolver typeSolver = new CombinedTypeSolver();
typeSolver.add(new JreTypeSolver());
typeSolver.add(new JarTypeSolver("src/test/resources/junit-4.8.1.jar"));
SymbolReference<? extends ValueDeclaration> ref = context.solveSymbol("out", typeSolver);
assertEquals(true, ref.isSolved());
assertEquals("int", ref.getCorrespondingDeclaration().getType(new DummyTypeSolver()).getName());
assertEquals("java.io.PrintStream", ref.getCorrespondingDeclaration().getType(new DummyTypeSolver()).getQualifiedName());
}

@Test
public void solveSymbolReferringToStaticallyImportedUsingAsteriskValue() throws ParseException {
public void solveSymbolReferringToStaticallyImportedUsingAsteriskValue() throws ParseException, IOException {
CompilationUnit cu = parseSample("CompilationUnitSymbols");
Context context = new CompilationUnitContext(cu);

SymbolReference<? extends ValueDeclaration> ref = context.solveSymbol("err", new JreTypeSolver());
CombinedTypeSolver typeSolver = new CombinedTypeSolver();
typeSolver.add(new JreTypeSolver());
typeSolver.add(new JarTypeSolver("src/test/resources/junit-4.8.1.jar"));
SymbolReference<? extends ValueDeclaration> ref = context.solveSymbol("err", typeSolver);
assertEquals(true, ref.isSolved());
assertEquals("int", ref.getCorrespondingDeclaration().getType(new DummyTypeSolver()).getName());
assertEquals("java.io.PrintStream", ref.getCorrespondingDeclaration().getType(new DummyTypeSolver()).getQualifiedName());
}

@Test
Expand Down

0 comments on commit da6690a

Please sign in to comment.