package depends.extractor.java; import depends.deptypes.DependencyType; import depends.entity.ContainerEntity; import depends.entity.Entity; import depends.entity.FunctionEntity; import depends.entity.TypeEntity; import org.junit.Before; import org.junit.Test; import java.io.IOException; import static org.junit.Assert.assertEquals; public class JavaVarResolveTest extends JavaParserTest{ @Before public void setUp() { super.init(); } @Test public void test_field_var_should_be_parsed() throws IOException { String src = "./src/test/resources/java-code-examples/FieldVar.java"; JavaFileParser parser = createParser(); parser.parse(src); resolveAllBindings(); Entity classEntity = entityRepo.getEntity("FieldVar"); assertEquals(3,((TypeEntity)classEntity).getVars().size()); } @Test public void test_local_var_should_be_parsed() throws IOException { String src = "./src/test/resources/java-code-examples/LocalVar.java"; JavaFileParser parser = createParser(); parser.parse(src); resolveAllBindings(); assertEquals(1,((TypeEntity)entityRepo.getEntity("LocalVar")).getVars().size()); assertEquals(1,((FunctionEntity)entityRepo.getEntity("LocalVar.foo")).getVars().size()); } @Test public void test_local_var_type_could_be_inferred() throws IOException { String src = "./src/test/resources/java-code-examples/LocalVarInferExample.java"; JavaFileParser parser = createParser(); parser.parse(src); resolveAllBindings(); ContainerEntity e = (ContainerEntity) entityRepo.getEntity("LocalVarInferExample.setExample"); this.assertContainsRelation(e, DependencyType.CONTAIN, "MyInteger"); } @Test public void test_field_access_could_be_inferred() throws IOException { String src = "./src/test/resources/java-code-examples/ComplexExpressionExample.java"; JavaFileParser parser = createParser(); parser.parse(src); resolveAllBindings(); Entity e = entityRepo.getEntity("test.ComplexExpressionExample.setExample"); this.assertContainsRelation(e, DependencyType.PARAMETER, "test.ClassA"); this.assertContainsRelation(e, DependencyType.CREATE, "test.ClassA"); this.assertContainsRelation(e, DependencyType.CALL, "test.ClassA"); this.assertContainsRelation(e, DependencyType.CAST, "test.ClassA"); this.assertContainsRelation(e, DependencyType.CALL, "test.ClassA.foo"); this.assertContainsRelation(e, DependencyType.CALL, "test.ClassA"); this.assertContainsRelation(e, DependencyType.USE, "test.ComplexExpressionExample.setExample.a3"); this.assertContainsRelation(e, DependencyType.USE, "test.ClassX.m"); this.assertContainsRelation(e, DependencyType.USE, "test.ComplexExpressionExample.setExample.a2"); this.assertContainsRelation(e, DependencyType.USE, "test.ClassA.x"); this.assertContainsRelation(e, DependencyType.USE, "test.ComplexExpressionExample.setExample.a"); } @Test public void test_long_static_function_should_be_inferred() throws IOException { String src = "./src/test/resources/java-code-examples/LongExpressionWithAbsolutePath.java"; JavaFileParser parser = createParser(); parser.parse(src); resolveAllBindings(); assertEquals(5,entityRepo.getEntity("x.LongExpressionWithAbsolutePath.setExample").getRelations().size()); } @Test public void test_call_should_be_referred() throws IOException { String src = "./src/test/resources/java-code-examples/ExpressionCallTest.java"; JavaFileParser parser = createParser(); parser.parse(src); resolveAllBindings(); assertEquals(10,entityRepo.getEntity("ValidateAll.validate").getRelations().size()); } @Test public void test_could_detect_type_argument_in_field() throws IOException { String src = "./src/test/resources/java-code-examples/TypeArgument.java"; JavaFileParser parser = createParser(); parser.parse(src); resolveAllBindings(); this.assertContainsRelation(entityRepo.getEntity("JDepObject.cells"),DependencyType.PARAMETER, "JCellObject"); } }