expect(resource.getURI()).andReturn(resourceURI);
Grammar grammar = createMock(Grammar.class);
expect(grammar.eResource()).andReturn(resource);
Rule rule = createMock(Rule.class);
expect(rule.getName()).andReturn(ruleName);
expect(rule.eContainer()).andReturn(grammar);
expect(workspaceRoot.getFile(Path.fromOSString("/project/G.g4"))).andReturn(file);
expect(optionsProvider.options(file)).andReturn(options);
List<String> command = Lists.newArrayList("java", "-cp",
toolPath + File.pathSeparator + ToolOptionsProvider.RUNTIME_JAR, ParseTreeGenerator.MAIN,
freePort + "");
Process process = createMock(Process.class);
ProcessBuilder pb = PowerMock.createMockAndExpectNew(ProcessBuilder.class, command);
expect(pb.start()).andReturn(process);
OutputStream out = createMock(OutputStream.class);
PrintWriter writer = PowerMock.createMockAndExpectNew(PrintWriter.class, out, true);
writer.println("parsetree");
writer.println(location.toOSString());
writer.println("rule");
writer.println("3+4*5");
writer.close();
InputStream in = createMock(InputStream.class);
InputStreamReader streamReader = PowerMock.createMockAndExpectNew(InputStreamReader.class, in);
BufferedReader reader = PowerMock.createMockAndExpectNew(BufferedReader.class, streamReader);
expect(reader.readLine()).andReturn(sexpression);
expect(reader.readLine()).andReturn(null);
reader.close();
ServerSocket serverSocket = PowerMock.createMockAndExpectNew(ServerSocket.class, 0);
expect(serverSocket.getLocalPort()).andReturn(freePort);
serverSocket.close();
Socket socket = PowerMock.createMockAndExpectNew(Socket.class, "localhost", freePort);
expect(socket.getOutputStream()).andReturn(out);
expect(socket.getInputStream()).andReturn(in);
socket.close();
Rule parserRule = createMock(ParserRule.class);
Rule lexerRule = createMock(LexerRule.class);
Terminal three = createMock(Terminal.class);
PowerMock.mockStatic(ModelExtensions.class);
Map<String, EObject> ruleMap = new HashMap<String, EObject>();