You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

JavaVarResolveTest.java 4.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package depends.extractor.java;
  2. import depends.deptypes.DependencyType;
  3. import depends.entity.ContainerEntity;
  4. import depends.entity.Entity;
  5. import depends.entity.FunctionEntity;
  6. import depends.entity.TypeEntity;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9. import java.io.IOException;
  10. import static org.junit.Assert.assertEquals;
  11. public class JavaVarResolveTest extends JavaParserTest{
  12. @Before
  13. public void setUp() {
  14. super.init();
  15. }
  16. @Test
  17. public void test_field_var_should_be_parsed() throws IOException {
  18. String src = "./src/test/resources/java-code-examples/FieldVar.java";
  19. JavaFileParser parser = createParser();
  20. parser.parse(src);
  21. resolveAllBindings();
  22. Entity classEntity = entityRepo.getEntity("FieldVar");
  23. assertEquals(3,((TypeEntity)classEntity).getVars().size());
  24. }
  25. @Test
  26. public void test_local_var_should_be_parsed() throws IOException {
  27. String src = "./src/test/resources/java-code-examples/LocalVar.java";
  28. JavaFileParser parser = createParser();
  29. parser.parse(src);
  30. resolveAllBindings();
  31. assertEquals(1,((TypeEntity)entityRepo.getEntity("LocalVar")).getVars().size());
  32. assertEquals(1,((FunctionEntity)entityRepo.getEntity("LocalVar.foo")).getVars().size());
  33. }
  34. @Test
  35. public void test_local_var_type_could_be_inferred() throws IOException {
  36. String src = "./src/test/resources/java-code-examples/LocalVarInferExample.java";
  37. JavaFileParser parser = createParser();
  38. parser.parse(src);
  39. resolveAllBindings();
  40. ContainerEntity e = (ContainerEntity) entityRepo.getEntity("LocalVarInferExample.setExample");
  41. this.assertContainsRelation(e, DependencyType.CONTAIN, "MyInteger");
  42. }
  43. @Test
  44. public void test_field_access_could_be_inferred() throws IOException {
  45. String src = "./src/test/resources/java-code-examples/ComplexExpressionExample.java";
  46. JavaFileParser parser = createParser();
  47. parser.parse(src);
  48. resolveAllBindings();
  49. Entity e = entityRepo.getEntity("test.ComplexExpressionExample.setExample");
  50. this.assertContainsRelation(e, DependencyType.PARAMETER, "test.ClassA");
  51. this.assertContainsRelation(e, DependencyType.CREATE, "test.ClassA");
  52. this.assertContainsRelation(e, DependencyType.CALL, "test.ClassA");
  53. this.assertContainsRelation(e, DependencyType.CAST, "test.ClassA");
  54. this.assertContainsRelation(e, DependencyType.CALL, "test.ClassA.foo");
  55. this.assertContainsRelation(e, DependencyType.CALL, "test.ClassA");
  56. this.assertContainsRelation(e, DependencyType.USE, "test.ComplexExpressionExample.setExample.a3");
  57. this.assertContainsRelation(e, DependencyType.USE, "test.ClassX.m");
  58. this.assertContainsRelation(e, DependencyType.USE, "test.ComplexExpressionExample.setExample.a2");
  59. this.assertContainsRelation(e, DependencyType.USE, "test.ClassA.x");
  60. this.assertContainsRelation(e, DependencyType.USE, "test.ComplexExpressionExample.setExample.a");
  61. }
  62. @Test
  63. public void test_long_static_function_should_be_inferred() throws IOException {
  64. String src = "./src/test/resources/java-code-examples/LongExpressionWithAbsolutePath.java";
  65. JavaFileParser parser = createParser();
  66. parser.parse(src);
  67. resolveAllBindings();
  68. assertEquals(5,entityRepo.getEntity("x.LongExpressionWithAbsolutePath.setExample").getRelations().size());
  69. }
  70. @Test
  71. public void test_call_should_be_referred() throws IOException {
  72. String src = "./src/test/resources/java-code-examples/ExpressionCallTest.java";
  73. JavaFileParser parser = createParser();
  74. parser.parse(src);
  75. resolveAllBindings();
  76. assertEquals(10,entityRepo.getEntity("ValidateAll.validate").getRelations().size());
  77. }
  78. @Test
  79. public void test_could_detect_type_argument_in_field() throws IOException {
  80. String src = "./src/test/resources/java-code-examples/TypeArgument.java";
  81. JavaFileParser parser = createParser();
  82. parser.parse(src);
  83. resolveAllBindings();
  84. this.assertContainsRelation(entityRepo.getEntity("JDepObject.cells"),DependencyType.PARAMETER, "JCellObject");
  85. }
  86. }

人工智能研发终端

Contributors (2)