@Test public void testReferences_typeEnum() throws IOException { File scriptFile = addFileToFolder(workspaceRoot, "MyScript.groovy", "Animal friend = Animal.CAT;\n" + "pet(friend1)\n" + "Animal pet(Animal animal) {\n" + " Animal myAnimal\n" + " println \"Pet the \" + animal\n" + " return animal\n" + "}\n" + "\n"); File animalFile = addFileToFolder(workspaceRoot, "Animal.groovy", "enum Animal {\n" + "CAT, DOG, BUNNY\n" + "}\n"); parser.parseAllSymbols(); Set<Location> expectedResult = Sets.newHashSet( createLocation(scriptFile.toPath(), Ranges.createRange(0, 0, 0, 6)), createLocation(scriptFile.toPath(), Ranges.createRange(0, 16, 0, 22)), createLocation(scriptFile.toPath(), Ranges.createRange(2, 0, 2, 6)), createLocation(scriptFile.toPath(), Ranges.createRange(2, 11, 2, 17)), createLocation(scriptFile.toPath(), Ranges.createRange(3, 3, 3, 9))); assertEquals(expectedResult, parser.findReferences(createReferenceParams(animalFile.toURI(), 0, 5, false))); }
createLocation(scriptFile.toPath(), Ranges.createRange(0, 0, 0, 3)), createLocation(scriptFile.toPath(), Ranges.createRange(2, 0, 2, 3)), createLocation(scriptFile.toPath(), Ranges.createRange(2, 9, 2, 12)), createLocation(scriptFile.toPath(), Ranges.createRange(3, 3, 3, 6)), createLocation(catFile.toPath(), Ranges.createRange(0, 0, 1, 0))); createLocation(scriptFile.toPath(), Ranges.createRange(1, 5, 1, 12)), createLocation(scriptFile.toPath(), Ranges.createRange(0, 4, 0, 11)));
@Test public void testReferences_typeFields() throws IOException { File dogFile = addFileToFolder(workspaceRoot, "Dog.groovy", "class Dog {\n" + " Cat friend1;\n" + " Cat friend2;\n" + " Cat bark(Cat enemy) {\n" + " Cat myCat\n" + " println \"Bark! \" + enemy.name\n" + " return friend1\n" + " }\n" + "}\n"); File catFile = addFileToFolder(workspaceRoot, "Cat.groovy", "class Cat {\n" + " public String name = \"Bobby\"\n" + "}\n"); parser.parseAllSymbols(); // Dog should have no references assertEquals(NO_REFERENCES, parser.findReferences(createReferenceParams(dogFile.toURI(), 0, 7, false))); Set<Location> expectedResult = Sets.newHashSet( createLocation(dogFile.toPath(), Ranges.createRange(1, 3, 1, 6)), createLocation(dogFile.toPath(), Ranges.createRange(2, 3, 2, 6)), createLocation(dogFile.toPath(), Ranges.createRange(3, 3, 3, 6)), createLocation(dogFile.toPath(), Ranges.createRange(3, 12, 3, 15)), createLocation(dogFile.toPath(), Ranges.createRange(4, 6, 4, 9))); assertEquals(expectedResult, parser.findReferences(createReferenceParams(catFile.toURI(), 0, 7, false))); }
@Test public void testReferences_typeInnerClassOneLine() throws IOException { // edge case on one line File innerClass = addFileToFolder(workspaceRoot, "AandB.groovy", "public class A {public static class B {}\n" + "A a\n" + "B b\n" + "}\n"); parser.parseAllSymbols(); // Identify type A correctly Set<Location> typeAExpectedResult = Sets.newHashSet( createLocation(innerClass.toPath(), Ranges.createRange(1, 0, 1, 1))); assertEquals(typeAExpectedResult, parser.findReferences(createReferenceParams(innerClass.toURI(), 0, 6, false))); // Identify type B correctly Set<Location> typeBExpectedResult = Sets.newHashSet( createLocation(innerClass.toPath(), Ranges.createRange(2, 0, 2, 1))); assertEquals(typeBExpectedResult, parser.findReferences(createReferenceParams(innerClass.toURI(), 0, 17, false))); }
@Test public void testReferences_typeEnumOneLine() throws IOException { // edge case on one line File enumFile = addFileToFolder(workspaceRoot, "MyEnum.groovy", "enum MyEnum {ONE,TWO}\n"); File scriptFile = addFileToFolder(workspaceRoot, "MyScript.groovy", "MyEnum a\n\n"); parser.parseAllSymbols(); // Find one line enum correctly Set<Location> myEnumExpectedResult = Sets.newHashSet( createLocation(scriptFile.toPath(), Ranges.createRange(0, 0, 0, 6))); assertEquals(myEnumExpectedResult, parser.findReferences(createReferenceParams(enumFile.toURI(), 0, 6, false))); }
@Test public void testReferences_catchStatement() throws IOException { File file = addFileToFolder(workspaceRoot, "Coordinates.groovy", "class Foo extends Throwable{}\n" + "try {\n" + " println \"Hello\"" + "}\n catch (Foo e1) {\n" + " println e1\n" + "}\n"); parser.parseAllSymbols(); // Class Foo Set<Location> expectedReferences = Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(3, 8, 3, 11))); // Get references when providing definition position assertEquals(expectedReferences, parser.findReferences(createReferenceParams(file.toURI(), 0, 6, false))); // Get references when providing position of usage assertEquals(expectedReferences, parser.findReferences(createReferenceParams(file.toURI(), 3, 9, false))); // TODO(#125): add a symbol for the exception variables and test here. }
createLocation(extendedcoordinatesFile.toPath(), Ranges.createRange(0, 0, 1, 0)), createLocation(extendedCoordinates2File.toPath(), Ranges.createRange(0, 0, 1, 0)), createLocation(coordinatesFile.toPath(), Ranges.createRange(12, 6, 12, 17)), createLocation(extendedcoordinatesFile.toPath(), Ranges.createRange(12, 6, 12, 17)), createLocation(extendedCoordinates2File.toPath(), Ranges.createRange(12, 6, 12, 17))); assertEquals(coordinatesExpectedResult, parser.findReferences(createReferenceParams(coordinatesFile.toURI(), 0, 9, false))); createLocation(coordinatesFile.toPath(), Ranges.createRange(0, 57, 0, 69))); assertEquals(icoordinatesExpectedResult, parser.findReferences(createReferenceParams(icoordinatesFile.toURI(), 0, 14, false))); createLocation(coordinatesFile.toPath(), Ranges.createRange(0, 0, 1, 0))); assertEquals(abstractCoordinatesExpectedResult, parser.findReferences(createReferenceParams(abstractcoordinatesFile.toURI(), 0, 19, false))); createLocation(icoordinatesFile.toPath(), Ranges.createRange(0, 31, 0, 48))); assertEquals(icoordinatesSuperExpectedResult, parser.findReferences(createReferenceParams(icoordinatesSuperFile.toURI(), 0, 13, false)));
createLocation(scriptFile.toPath(), Ranges.createRange(0, 0, 0, 3)), createLocation(scriptFile.toPath(), Ranges.createRange(2, 0, 2, 3)), createLocation(scriptFile.toPath(), Ranges.createRange(2, 9, 2, 12)), createLocation(scriptFile.toPath(), Ranges.createRange(3, 3, 3, 6))); createLocation(scriptFile.toPath(), Ranges.createRange(1, 5, 1, 12))); createLocation(scriptFile.toPath(), Ranges.createRange(2, 9, 2, 12)), createLocation(scriptFile.toPath(), Ranges.createRange(2, 0, 2, 3)), createLocation(scriptFile.toPath(), Ranges.createRange(3, 3, 3, 6)), createLocation(scriptFile.toPath(), Ranges.createRange(0, 0, 0, 3)));
createLocation(file.toPath(), Ranges.createRange(1, 10, 1, 20)), createLocation(file.toPath(), Ranges.createRange(10, 6, 10, 16)), createLocation(file.toPath(), Ranges.createRange(10, 30, 10, 46)), createLocation(file.toPath(), Ranges.createRange(12, 6, 12, 22)), createLocation(file.toPath(), Ranges.createRange(14, 6, 14, 16))); expectedReferences = Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(11, 6, 11, 21))); expectedReferences = Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(13, 6, 13, 16))); createLocation(file.toPath(), Ranges.createRange(11, 6, 11, 43)), createLocation(file.toPath(), Ranges.createRange(12, 6, 12, 44)), createLocation(file.toPath(), Ranges.createRange(13, 6, 13, 38))); createLocation(file.toPath(), Ranges.createRange(14, 6, 14, 35))); createLocation(file.toPath(), Ranges.createRange(15, 17, 15, 24)));
Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(7, 10, 7, 14)), createLocation(file.toPath(), Ranges.createRange(9, 39, 9, 43))); Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(4, 26, 4, 30)), createLocation(file.toPath(), Ranges.createRange(7, 17, 7, 21))); expectedReferences = Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(3, 43, 3, 52)), createLocation(file.toPath(), Ranges.createRange(5, 14, 5, 23))); expectedReferences = Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(9, 46, 9, 56))); expectedReferences = Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(9, 17, 9, 36))); expectedReferences = Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(4, 22, 4, 23)), createLocation(file.toPath(), Ranges.createRange(4, 32, 4, 33)), createLocation(file.toPath(), Ranges.createRange(5, 26, 5, 27)));
"Coordinates", SymbolKind.Class, createLocation(coordinatesFiles.toPath(), Ranges.createRange(0, 0, 1, 0)))), filteredSymbols); "Coordinates", SymbolKind.Class, createLocation(coordinatesFiles.toPath(), Ranges.createRange(0, 0, 1, 0))), new SymbolInformation( "CoordinatesVar", SymbolKind.Field, createLocation(coordinatesFiles.toPath(), Ranges.createRange(4, 3, 4, 32)), "Coordinates")), filteredSymbols); "Coordinates", SymbolKind.Class, createLocation(coordinatesFiles.toPath(), Ranges.createRange(0, 0, 1, 0))), new SymbolInformation( "ICoordinates", SymbolKind.Interface, createLocation(icoordinatesFiles.toPath(), Ranges.createRange(0, 0, 1, 0))), new SymbolInformation( "CoordinatesVar", SymbolKind.Field, createLocation(coordinatesFiles.toPath(), Ranges.createRange(4, 3, 4, 32)), "Coordinates")); "CoordinatesVar",
Sets.newHashSet(createLocation(file.toPath(), Ranges.createRange(12, 3, 12, 12))); assertEquals(expectedResult, parser.findReferences(createReferenceParams(file.toURI(), 13, 9, false)));
createLocation(script.toPath(), Ranges.createRange(0, 0, 0, 4)), createLocation(script.toPath(), Ranges.createRange(1, 0, 1, 4)), createLocation(script.toPath(), Ranges.createRange(1, 13, 1, 23)), createLocation(script.toPath(), Ranges.createRange(2, 8, 2, 18)), createLocation(script.toPath(), Ranges.createRange(4, 0, 4, 4)), createLocation(script.toPath(), Ranges.createRange(8, 0, 8, 4)), createLocation(script.toPath(), Ranges.createRange(9, 0, 9, 4)), createLocation(script.toPath(), Ranges.createRange(10, 0, 10, 4))); createLocation(script.toPath(), Ranges.createRange(3, 6, 3, 22)), createLocation(test.toPath(), Ranges.createRange(13, 19, 13, 35))); createLocation(test.toPath(), Ranges.createRange(4, 19, 4, 32)), createLocation(script.toPath(), Ranges.createRange(4, 5, 4, 18))); expectedReferences = Sets.newHashSet(createLocation(script.toPath(), Ranges.createRange(8, 0, 8, 21))); expectedReferences = Sets.newHashSet(createLocation(script.toPath(), Ranges.createRange(9, 0, 9, 22))); expectedReferences = Sets.newHashSet(createLocation(script.toPath(), Ranges.createRange(10, 0, 10, 25))); expectedReferences = Sets.newHashSet(createLocation(script.toPath(), Ranges.createRange(5, 0, 5, 23))); expectedReferences = Sets.newHashSet(createLocation(script.toPath(), Ranges.createRange(6, 0, 6, 24))); expectedReferences = Sets.newHashSet(createLocation(script.toPath(), Ranges.createRange(7, 0, 7, 27)));