public void testCompleteSingle1() { shell.setCompleter(new SyncCompleter() { @Override public CompletionMatch complete(String prefix) { Completion.Builder builder = Completion.builder(""); builder.add("foo", false); return new CompletionMatch(Delimiter.EMPTY, builder.build()); } }); console.init(); console.on(KeyStrokes.COMPLETE); driver.assertChars("foo").assertFlush().assertEmpty(); assertEquals("foo", getCurrentLine()); }
public void testCompleteMulti1() { shell.setCompleter(new SyncCompleter() { @Override public CompletionMatch complete(String prefix) { Completion.Builder builder = Completion.builder(""); builder.add("foo", false); builder.add("bar", false); return new CompletionMatch(Delimiter.EMPTY, builder.build()); } }); console.init(); prompt = "% "; console.on(KeyStrokes.COMPLETE); driver.assertChars("\nfoo bar \n% ").assertFlush().assertEmpty(); assertEquals("", getCurrentLine()); }
public void testCompleteMulti2() { shell.setCompleter(new SyncCompleter() { @Override public CompletionMatch complete(String prefix) { Completion.Builder builder = Completion.builder(""); builder.add("afoo", false); builder.add("abar", false); return new CompletionMatch(Delimiter.EMPTY, builder.build()); } }); console.init(); prompt = "% "; console.on(KeyStrokes.COMPLETE); driver.assertChars("\nafoo abar \n% a").assertFlush().assertEmpty(); assertEquals("a", getCurrentLine()); }
public void testCompleteSingle2() { shell.setCompleter(new SyncCompleter() { @Override public CompletionMatch complete(String prefix) { Completion.Builder builder = Completion.builder(""); builder.add("foo", true); return new CompletionMatch(Delimiter.EMPTY, builder.build()); } }); console.init(); console.on(KeyStrokes.COMPLETE); driver.assertChars("foo").assertChar(' ').assertFlush().assertEmpty(); assertEquals("foo ", getCurrentLine()); }
public void testCompleteMultiline() { shell.setCompleter(new SyncCompleter() { @Override public CompletionMatch complete(String prefix) { Completion.Builder builder = Completion.builder("s"); if (prefix.equals("s")) { builder.add("end", true); builder.add("et", true); } else if (prefix.equals("sen")) { builder.add("d", true); } return new CompletionMatch(Delimiter.EMPTY, builder.build()); } }); console.init(); console.on(KeyStrokes.s); console.on(KeyStrokes.BACKSLASH); console.on(KeyStrokes.ENTER); driver.assertChar('s').assertFlush(); driver.assertChar('\\').assertFlush(); driver.assertCRLF().assertChars("> ").assertFlush(); console.on(KeyStrokes.COMPLETE); driver.assertChars("\nsend set \ns\\\n> e").assertFlush().assertEmpty(); console.on(KeyStrokes.n); driver.assertChar('n').assertFlush().assertEmpty(); console.on(KeyStrokes.COMPLETE); driver.assertChars("d ").assertFlush().assertEmpty(); }
public void testInsert() { console.init(); console.on(KeyStrokes.a); driver.assertChar('a').assertFlush().assertEmpty(); console.on(KeyStrokes.LEFT); console.on(KeyStrokes.b); driver.assertMoveLeft().assertFlush().assertChars("ba").assertMoveLeft().assertFlush().assertEmpty(); console.on(KeyStrokes.LEFT); console.on(KeyStrokes.b); driver.assertMoveLeft().assertFlush().assertChars("bba").assertMoveLeft().assertMoveLeft().assertFlush().assertEmpty(); assertEquals("bba", getCurrentLine()); }
public void testInterruptMultiline() throws Exception { final ArrayBlockingQueue<String> keys = new ArrayBlockingQueue<String>(1); shell.addProcess(new SyncProcess() { @Override public void run(String request, ShellProcessContext context) throws Exception { keys.add(request); } }); console.init(); console.on(KeyStrokes.QUOTE); console.on(KeyStrokes.ENTER); driver.assertChar('"').assertFlush(); driver.assertCRLF().assertChars("> ").assertFlush().assertEmpty(); console.on(KeyStrokes.INTERRUPT); driver.assertCRLF().assertFlush().assertEmpty(); console.on(KeyStrokes.ENTER); driver.assertCRLF().assertFlush().assertEmpty(); String request = keys.poll(1, TimeUnit.SECONDS); assertEquals("", request); }
public void testMultiline1() { console.init(); console.on(KeyStrokes.a); console.on(KeyStrokes.BACKSLASH); console.on(KeyStrokes.ENTER); console.on(KeyStrokes.b); assertEquals("b", getCurrentLine()); driver.assertChar('a').assertFlush(); driver.assertChar('\\').assertFlush(); driver.assertCRLF().assertChars("> ").assertFlush(); driver.assertChar('b').assertFlush().assertEmpty(); final ArrayList<String> requests = new ArrayList<String>(); shell.addProcess(new SyncProcess() { @Override public void run(String request, ShellProcessContext context) throws Exception { requests.add(request); } }); console.on(KeyStrokes.ENTER); assertEquals(Arrays.asList("ab"), requests); }
public void testDeletePrevWord() { console.init(); console.on(KeyStrokes.DELETE_PREV_WORD); driver.assertEmpty(); assertEquals("", getClipboard()); console.on(KeyStrokes.a); console.on(KeyStrokes.b); console.on(KeyStrokes.SPACE); console.on(KeyStrokes.c); console.on(KeyStrokes.d); driver.assertChar('a').assertFlush().assertChar('b').assertFlush().assertChar(' ').assertFlush().assertChar('c').assertFlush().assertChar('d').assertFlush().assertEmpty(); console.on(KeyStrokes.LEFT); driver.assertMoveLeft().assertFlush().assertEmpty(); console.on(KeyStrokes.DELETE_PREV_WORD); driver.assertMoveLeft().assertChars("d ").assertMoveLeft().assertMoveLeft().assertFlush().assertEmpty(); assertEquals("ab d", getCurrentLine()); assertEquals("c", getClipboard()); console.on(KeyStrokes.DELETE_PREV_WORD); driver.assertMoveLeft().assertChars("d ").assertMoveLeft(3).assertChars("d ").assertMoveLeft(3).assertChars("d ").assertMoveLeft(2).assertFlush().assertEmpty(); assertEquals("d", getCurrentLine()); assertEquals("ab ", getClipboard()); }
public void testMultiline2() { console.init(); console.on(KeyStrokes.a); console.on(KeyStrokes.QUOTE); console.on(KeyStrokes.ENTER); console.on(KeyStrokes.b); assertEquals("b", getCurrentLine()); driver.assertChar('a').assertFlush(); driver.assertChar('"').assertFlush(); driver.assertCRLF().assertChars("> ").assertFlush(); driver.assertChar('b').assertFlush().assertEmpty(); console.on(KeyStrokes.ENTER); console.on(KeyStrokes.c); console.on(KeyStrokes.QUOTE); console.on(KeyStrokes.d); driver.assertCRLF().assertChars("> ").assertFlush(); driver.assertChar('c').assertFlush(); driver.assertChar('"').assertFlush(); driver.assertChar('d').assertFlush().assertEmpty(); final ArrayList<String> requests = new ArrayList<String>(); shell.addProcess(new SyncProcess() { @Override public void run(String request, ShellProcessContext context) throws Exception { requests.add(request); } }); console.on(KeyStrokes.ENTER); assertEquals(Arrays.asList("a\"\nb\nc\"d"), requests); }
public void testDeleteBeginning() { console.init(); console.on(KeyStrokes.DELETE_BEGINNING); driver.assertEmpty(); console.on(KeyStrokes.a); console.on(KeyStrokes.b); console.on(KeyStrokes.c); driver.assertChar('a').assertFlush(); driver.assertChar('b').assertFlush(); driver.assertChar('c').assertFlush().assertEmpty(); console.on(KeyStrokes.LEFT); driver.assertMoveLeft().assertFlush().assertEmpty(); console.on(KeyStrokes.DELETE_BEGINNING); assertEquals("c", getCurrentLine()); driver.assertMoveLeft().assertChars("c ").assertMoveLeft().assertMoveLeft().assertMoveLeft().assertChars("c ").assertMoveLeft().assertMoveLeft().assertFlush().assertEmpty(); }