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); }
console.on(KeyStrokes.a); console.on(KeyStrokes.ENTER); driver.assertChar('a').assertFlush().assertCRLF().assertFlush().assertEmpty(); driver.assertEmpty(); final ShellProcessContext context = contexts.poll();
console.on(KeyStrokes.a); console.on(KeyStrokes.ENTER); driver.assertChar('a').assertFlush().assertCRLF().assertFlush().assertEmpty(); driver.assertEmpty(); final ShellProcessContext context = contexts.poll();
console.on(KeyStrokes.a); console.on(KeyStrokes.ENTER); driver.assertChar('a').assertFlush().assertCRLF().assertFlush().assertEmpty(); driver.assertEmpty(); final ShellProcessContext context = contexts.poll();
console.on(KeyStrokes.a); console.on(KeyStrokes.ENTER); driver.assertChar('a').assertFlush().assertCRLF().assertFlush().assertEmpty(); driver.assertEmpty(); final ShellProcessContext context = contexts.poll(); driver.assertChar('m').assertFlush().assertChar('b').assertFlush().assertCRLF().assertFlush().assertEmpty(); String line = lines.poll(3, TimeUnit.SECONDS); assertEquals("b", line);
public void testPrompt() { driver.assertEmpty(); prompt = "% "; console.init(); driver.assertChar('%').assertChar(' ').assertFlush().assertEmpty(); final ArrayBlockingQueue<ShellProcessContext> contexts = new ArrayBlockingQueue<ShellProcessContext>(1); shell.addProcess(new SyncProcess() { @Override public void run(String request, ShellProcessContext context) throws Exception { contexts.add(context); } }); console.on(KeyStrokes.a); console.on(KeyStrokes.ENTER); driver.assertChar('a').assertFlush().assertCRLF().assertFlush().assertEmpty(); driver.assertEmpty(); ShellProcessContext context = contexts.poll(); assertNotNull(context); context.end(ShellResponse.ok()); driver.assertCRLF().assertFlush().assertChar('%').assertChar(' ').assertFlush().assertEmpty(); }
/** * Same than {@link #testReadLine1()} but we provide input before the thread read lines effectively * which leads to a simpler test since we need only one thread */ public void testReadLine2() throws Exception { final ArrayBlockingQueue<ShellProcessContext> contexts = new ArrayBlockingQueue<ShellProcessContext>(1); shell.addProcess(new SyncProcess() { @Override public void run(String request, ShellProcessContext context) throws Exception { contexts.add(context); } }); console.init(); console.on(KeyStrokes.a); console.on(KeyStrokes.ENTER); driver.assertChar('a').assertFlush().assertCRLF().assertFlush().assertEmpty(); driver.assertEmpty(); final ShellProcessContext context = contexts.poll(); assertNotNull(context); console.on(KeyStrokes.b); console.on(KeyStrokes.ENTER); driver.assertEmpty(); String line = context.readLine("m", true); driver.assertChar('m').assertFlush().assertChar('b').assertFlush().assertCRLF().assertFlush().assertEmpty(); assertEquals("b", line); }
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 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); }
console.on(KeyStrokes.a); console.on(KeyStrokes.ENTER); driver.assertChar('a').assertFlush().assertCRLF().assertFlush().assertCRLF().assertFlush().assertEmpty(); shell.addProcess(new SyncProcess() { @Override console.on(KeyStrokes.b); console.on(KeyStrokes.ENTER); driver.assertChar('b').assertFlush().assertCRLF().assertFlush().assertCRLF().assertFlush().assertEmpty(); console.on(KeyStrokes.c); driver.assertChar('c').assertFlush().assertEmpty(); driver.assertCRLF().assertFlush().assertCRLF().assertFlush().assertEmpty(); assertEquals(Arrays.asList("b_1"), requests); console.on(KeyStrokes.UP);
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(); }