@Test
public void testGotoDefinition_multipleFiles() throws IOException {
File dog = addFileToFolder(workspaceRoot, "mydogfolder", "Dog.groovy",
"public class Dog {}\n");
File cat = addFileToFolder(workspaceRoot, "mycatfolder", "Cat.groovy",
"public class Cat {\n"
+ " public static Dog dog = new Dog()\n"
+ " public static Dog foo() {\n"
+ " Dog newDog = new Dog()\n"
+ " foo()\n"
+ " return newDog\n"
+ " }\n"
+ "}\n");
parser.parseAllSymbols();
Location expectedLocation = new Location(dog.toPath().toUri().toString(), Ranges.createRange(0, 0, 0, 19));
assertEquals(Optional.of(expectedLocation), parser.gotoDefinition(cat.toURI(), new Position(1, 18)));
assertEquals(Optional.of(expectedLocation), parser.gotoDefinition(cat.toURI(), new Position(2, 18)));
assertEquals(Optional.of(expectedLocation), parser.gotoDefinition(cat.toURI(), new Position(3, 8)));
assertEquals(Optional.of(expectedLocation), parser.gotoDefinition(cat.toURI(), new Position(3, 25)));
expectedLocation = new Location(cat.toPath().toUri().toString(), Ranges.createRange(3, 11, 3, 17));
assertEquals(Optional.of(expectedLocation), parser.gotoDefinition(cat.toURI(), new Position(5, 18)));
expectedLocation = new Location(cat.toPath().toUri().toString(), Ranges.createRange(2, 3, 6, 4));
assertEquals(Optional.of(expectedLocation), parser.gotoDefinition(cat.toURI(), new Position(4, 10)));
}