|
6 | 6 | import com.google.gson.JsonParser; |
7 | 7 | import com.ibm.cldk.entities.CallSite; |
8 | 8 | import com.ibm.cldk.entities.Callable; |
| 9 | +import com.ibm.cldk.entities.Field; |
9 | 10 | import com.ibm.cldk.entities.Import; |
10 | 11 | import com.ibm.cldk.entities.JavaCompilationUnit; |
11 | 12 | import com.ibm.cldk.entities.Type; |
@@ -120,6 +121,38 @@ public void testExtractSingleImportMetadata() throws IOException { |
120 | 121 | } |
121 | 122 | } |
122 | 123 |
|
| 124 | + @Test |
| 125 | + public void testExtractSingleFieldInitializers() throws IOException { |
| 126 | + String javaCode = String.join("\n", |
| 127 | + "class T {", |
| 128 | + " private static final String QUOTES_PATH = \"/rest/quotes\";", |
| 129 | + " private int count;", |
| 130 | + " private int first = 1, second, third = first + 2;", |
| 131 | + "}"); |
| 132 | + Map<String, JavaCompilationUnit> symbolTable = SymbolTable.extractSingle(javaCode).getLeft(); |
| 133 | + Assertions.assertEquals(1, symbolTable.size()); |
| 134 | + List<Field> fields = symbolTable.values().iterator().next().getTypeDeclarations() |
| 135 | + .values().iterator().next().getFieldDeclarations(); |
| 136 | + Assertions.assertEquals(3, fields.size()); |
| 137 | + |
| 138 | + Field quotesPath = fields.get(0); |
| 139 | + Assertions.assertEquals(List.of("QUOTES_PATH"), quotesPath.getVariables()); |
| 140 | + Assertions.assertEquals(Map.of("QUOTES_PATH", "\"/rest/quotes\""), quotesPath.getVariableInitializers()); |
| 141 | + |
| 142 | + Field count = fields.get(1); |
| 143 | + Assertions.assertEquals(List.of("count"), count.getVariables()); |
| 144 | + Assertions.assertTrue(count.getVariableInitializers().isEmpty()); |
| 145 | + |
| 146 | + Field multi = fields.get(2); |
| 147 | + Assertions.assertEquals(List.of("first", "second", "third"), multi.getVariables()); |
| 148 | + Assertions.assertEquals(Map.of("first", "1", "third", "first + 2"), multi.getVariableInitializers()); |
| 149 | + |
| 150 | + JsonObject serializedField = JsonParser.parseString(CodeAnalyzer.gson.toJson(quotesPath)).getAsJsonObject(); |
| 151 | + Assertions.assertTrue(serializedField.has("variable_initializers")); |
| 152 | + Assertions.assertEquals("\"/rest/quotes\"", |
| 153 | + serializedField.getAsJsonObject("variable_initializers").get("QUOTES_PATH").getAsString()); |
| 154 | + } |
| 155 | + |
123 | 156 | private static void assertImport(List<Import> imports, String path, boolean isStatic, boolean isWildcard) { |
124 | 157 | Import matchingImport = imports.stream() |
125 | 158 | .filter(imp -> path.equals(imp.getPath()) |
|
0 commit comments