/**
* Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.dltk.console;
import junit.framework.TestCase;
import org.python.pydev.shared_interactive_console.console.ScriptConsoleHistory;
public class ScriptConsoleHistoryTest extends TestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testScriptConsoleWithMatchingStart2() throws Exception {
ScriptConsoleHistory c = new ScriptConsoleHistory();
c.update("aaa");
c.commit();
c.update("bbb");
c.commit();
c.setMatchStart("a");
assertTrue(c.prev());
assertEquals("aaa", c.get());
c.setMatchStart("b");
assertFalse(c.prev()); //must cycle (will change other tests too)
assertEquals("aaa", c.get());
}
public void testScriptConsoleWithMatchingStart() throws Exception {
ScriptConsoleHistory c = new ScriptConsoleHistory();
c.update("1. line1bbb");
c.commit();
c.update("1. line1aaa");
c.commit();
c.update("1. line2aaa");
c.commit();
c.update("1. line3aaa");
c.commit();
assertEquals("", c.get());
c.setMatchStart("1. line1");
assertTrue(c.prev());
assertEquals("1. line1aaa", c.get());
assertTrue(c.prev());
assertEquals("1. line1bbb", c.get());
assertFalse(c.prev());
assertEquals("1. line1bbb", c.get());
assertTrue(c.next());
assertEquals("1. line1aaa", c.get());
assertFalse(c.next());
assertEquals("1. line1aaa", c.get());
}
public void testScriptConsole() throws Exception {
ScriptConsoleHistory c = new ScriptConsoleHistory();
assertFalse(c.prev());
assertFalse(c.next());
c.update("test");
assertEquals("test", c.get());
assertFalse(c.prev());
assertEquals("test", c.get());
assertFalse(c.next());
assertEquals("test", c.get());
c.commit();
assertEquals("", c.get());
assertTrue(c.prev());
assertEquals("test", c.get());
assertFalse(c.prev());
assertEquals("test", c.get());
assertFalse(c.next()); //the 'current' buffer doesn't enter the history
assertEquals("test", c.get());
assertFalse(c.prev());
assertEquals("test", c.get());
c.update("kkk");
c.commit();
assertEquals("test\nkkk\n", c.getAsDoc().get());
assertFalse(c.next());
assertEquals("", c.get());
assertTrue(c.prev());
assertEquals("kkk", c.get());
assertTrue(c.prev());
assertEquals("test", c.get());
c.update("");
c.commit();
assertEquals("test\nkkk\n\n", c.getAsDoc().get());
assertTrue(c.prev());
assertEquals("kkk", c.get());
c.clear();
assertEquals("", c.getAsDoc().get());
}
public void testGlobalHistory() {
ScriptConsoleHistory c1 = new ScriptConsoleHistory();
ScriptConsoleHistory c2 = new ScriptConsoleHistory();
assertEquals("", c1.getAsDoc().get());
assertEquals("", c2.getAsDoc().get());
// make sure writing to 1 does not affect 2
c1.update("test");
c1.commit();
assertEquals("", c2.getAsDoc().get());
// close 1 and create a new 1, making sure history is preserved
c1.close();
c1 = new ScriptConsoleHistory();
assertEquals("test\n", c1.getAsDoc().get());
// add some new data and make sure that only the new data is added
c1.update("test2");
c1.commit();
c1.close();
c1 = new ScriptConsoleHistory();
assertEquals("test\ntest2\n", c1.getAsDoc().get());
// clear the history in console 2 and make sure the new history in the
// first is preserved
c1.update("test3");
c1.commit();
c2.clear();
c1.close();
c1 = new ScriptConsoleHistory();
assertEquals("test3\n", c1.getAsDoc().get());
}
}