FlinkInterpreter extends Interpreter { @Override public List<InterpreterCompletion> completion(String buf, int cursor, InterpreterContext interpreterContext) throws InterpreterException { return innerIntp.completion(buf, cursor, interpreterContext); } FlinkInterpreter(Properties properties); @Override void open(); @Override void close(); @Override InterpreterResult interpret(String st, InterpreterContext context); @Override void cancel(InterpreterContext context); @Override FormType getFormType(); @Override int getProgress(InterpreterContext context); @Override List<InterpreterCompletion> completion(String buf,
                                                int cursor,
                                                InterpreterContext interpreterContext); void createPlannerAgain(); ClassLoader getFlinkScalaShellLoader(); FlinkScalaInterpreter getInnerIntp(); FlinkShims getFlinkShims(); void setSavepointIfNecessary(InterpreterContext context); void setParallelismIfNecessary(InterpreterContext context); FlinkVersion getFlinkVersion();  }
@Test public void testCompletion() throws InterpreterException { InterpreterContext context = getInterpreterContext(); InterpreterResult result = interpreter.interpret("val a=\"hello world\"", context); assertEquals(InterpreterResult.Code.SUCCESS, result.code()); List<InterpreterCompletion> completions = interpreter.completion("a.", 2, getInterpreterContext()); assertTrue(completions.size() > 0); completions = interpreter.completion("benv.", 5, getInterpreterContext()); assertTrue(completions.size() > 0); }