@Override public CompletionList getCompletion(URI uri, Position position) { return CompletionUtils.createCompletionListFromSymbols(getFileSymbols().get(uri)); }
@Test public void testNotParsedYet() throws IOException { assertEquals(NO_SYMBOLS, parser.getFileSymbols().values().stream().flatMap(Collection::stream).collect(Collectors.toSet())); }
@Test public void testComputeAllSymbols_interface() throws InterruptedException, ExecutionException, IOException { addFileToFolder(workspaceRoot, "my/folder", "ICoordinates.groovy", "interface ICoordinates {\n" + " abstract double getAt(int idx);\n" + "}\n"); parser.parseAllSymbols(); Map<URI, Set<SymbolInformation>> symbols = parser.getFileSymbols(); // The symbols will contain a lot of inherited and default fields and methods, so we just check to make sure it // contains our custom fields and methods. assertThat(mapHasSymbol(symbols, Optional.absent(), "ICoordinates", SymbolKind.Interface)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("ICoordinates"), "getAt", SymbolKind.Method)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("getAt"), "idx", SymbolKind.Variable)).isTrue(); }
@Test public void testComputeAllSymbols_enum() throws InterruptedException, ExecutionException, IOException { addFileToFolder(workspaceRoot, "Type.groovy", "enum Type {\n" + " ONE, TWO, THREE\n" + "}\n"); parser.parseAllSymbols(); Map<URI, Set<SymbolInformation>> symbols = parser.getFileSymbols(); // The symbols will contain a lot of inherited and default fields and methods, so we just check to make sure it // contains our custom fields and methods. assertThat(mapHasSymbol(symbols, Optional.absent(), "Type", SymbolKind.Enum)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("Type"), "ONE", SymbolKind.Field)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("Type"), "TWO", SymbolKind.Field)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("Type"), "THREE", SymbolKind.Field)).isTrue(); }
@Test public void testComputeAllSymbols_script() throws InterruptedException, ExecutionException, IOException { addFileToFolder(workspaceRoot, "test.groovy", "def name = \"Natacha\"\n" + "def myMethod() {\n" + " def someString = \"Also in symbols\"\n" + " println \"Hello World\"\n" + "}\n" + "println name\n" + "myMethod()\n"); parser.parseAllSymbols(); Map<URI, Set<SymbolInformation>> symbols = parser.getFileSymbols(); assertThat(mapHasSymbol(symbols, Optional.of("test"), "myMethod", SymbolKind.Method)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("test"), "name", SymbolKind.Variable)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("myMethod"), "someString", SymbolKind.Variable)).isTrue(); }
@Test public void testComputeAllSymbols_class() throws InterruptedException, ExecutionException, IOException { File file = addFileToFolder(workspaceRoot, "someFolder", "Coordinates.groovy", "class Coordinates {\n" + " double latitude\n" + " double longitude\n" + " def name = \"Natacha\"\n" + " double getAt(int idx1, int idx2) {\n" + " def someString = \"Also in symbols\"\n" + " println someString\n" + " if (idx1 == 0) latitude\n" + " else if (idx1 == 1) longitude\n" + " else throw new Exception(\"Wrong coordinate index, use 0 or 1 \")\n" + " }\n" + "}\n"); parser.parseAllSymbols(); Map<URI, Set<SymbolInformation>> symbols = parser.getFileSymbols(); // Assert that the format of the URI doesn't change the result (i.e whether it starts with file:/ or file:///) assertEquals(parser.getFileSymbols().get(file.toURI()), parser.getFileSymbols().get(file.toPath().toUri())); // The symbols will contain a lot of inherited fields and methods, so we just check to make sure it contains our // custom fields and methods. assertThat(mapHasSymbol(symbols, Optional.absent(), "Coordinates", SymbolKind.Class)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("Coordinates"), "getAt", SymbolKind.Method)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("Coordinates"), "latitude", SymbolKind.Field)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("Coordinates"), "longitude", SymbolKind.Field)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("Coordinates"), "name", SymbolKind.Field)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("getAt"), "idx1", SymbolKind.Variable)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("getAt"), "idx2", SymbolKind.Variable)).isTrue(); assertThat(mapHasSymbol(symbols, Optional.of("getAt"), "someString", SymbolKind.Variable)).isTrue(); }
parser.parseAllSymbols(); Map<URI, Set<SymbolInformation>> symbols = parser.getFileSymbols();