001    /*
002     * Copyright (c) 2002-2007, Marc Prud'hommeaux. All rights reserved.
003     *
004     * This software is distributable under the BSD license. See the terms of the
005     * BSD license in the documentation provided with this software.
006     */
007    package jline;
008    
009    
010    /**
011     *  Tests command history.
012     *
013     *  @author  <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
014     */
015    public class TestHistory extends JLineTestCase {
016        public TestHistory(String test) {
017            super(test);
018        }
019    
020        public void testSingleHistory() throws Exception {
021            Buffer b = new Buffer().
022                append("test line 1").op(ConsoleReader.NEWLINE).
023                append("test line 2").op(ConsoleReader.NEWLINE).
024                append("test line 3").op(ConsoleReader.NEWLINE).
025                append("test line 4").op(ConsoleReader.NEWLINE).
026                append("test line 5").op(ConsoleReader.NEWLINE).
027                append("");
028    
029            assertBuffer("", b);
030    
031            assertBuffer("test line 5", b = b.op(ConsoleReader.PREV_HISTORY));
032            assertBuffer("test line 4", b = b.op(ConsoleReader.PREV_HISTORY));
033            assertBuffer("test line 5", b = b.op(ConsoleReader.NEXT_HISTORY));
034            assertBuffer("test line 4", b = b.op(ConsoleReader.PREV_HISTORY));
035            assertBuffer("test line 3", b = b.op(ConsoleReader.PREV_HISTORY));
036            assertBuffer("test line 2", b = b.op(ConsoleReader.PREV_HISTORY));
037            assertBuffer("test line 1", b = b.op(ConsoleReader.PREV_HISTORY));
038    
039            // beginning of history
040            assertBuffer("test line 1", b = b.op(ConsoleReader.PREV_HISTORY));
041            assertBuffer("test line 1", b = b.op(ConsoleReader.PREV_HISTORY));
042            assertBuffer("test line 1", b = b.op(ConsoleReader.PREV_HISTORY));
043            assertBuffer("test line 1", b = b.op(ConsoleReader.PREV_HISTORY));
044    
045            assertBuffer("test line 2", b = b.op(ConsoleReader.NEXT_HISTORY));
046            assertBuffer("test line 3", b = b.op(ConsoleReader.NEXT_HISTORY));
047            assertBuffer("test line 4", b = b.op(ConsoleReader.NEXT_HISTORY));
048            assertBuffer("test line 5", b = b.op(ConsoleReader.NEXT_HISTORY));
049    
050            // end of history
051            assertBuffer("", b = b.op(ConsoleReader.NEXT_HISTORY));
052            assertBuffer("", b = b.op(ConsoleReader.NEXT_HISTORY));
053            assertBuffer("", b = b.op(ConsoleReader.NEXT_HISTORY));
054    
055            assertBuffer("test line 5", b = b.op(ConsoleReader.PREV_HISTORY));
056            assertBuffer("test line 4", b = b.op(ConsoleReader.PREV_HISTORY));
057            b = b.op(ConsoleReader.MOVE_TO_BEG).append("XXX")
058                 .op(ConsoleReader.NEWLINE);
059            assertBuffer("XXXtest line 4", b = b.op(ConsoleReader.PREV_HISTORY));
060            assertBuffer("test line 5", b = b.op(ConsoleReader.PREV_HISTORY));
061            assertBuffer("test line 4", b = b.op(ConsoleReader.PREV_HISTORY));
062            assertBuffer("test line 5", b = b.op(ConsoleReader.NEXT_HISTORY));
063            assertBuffer("XXXtest line 4", b = b.op(ConsoleReader.NEXT_HISTORY));
064            assertBuffer("", b = b.op(ConsoleReader.NEXT_HISTORY));
065    
066            assertBuffer("XXXtest line 4", b = b.op(ConsoleReader.PREV_HISTORY));
067            assertBuffer("XXXtest line 4", b = b.op(ConsoleReader.NEWLINE).
068                op(ConsoleReader.PREV_HISTORY));
069            assertBuffer("XXXtest line 4", b = b.op(ConsoleReader.NEWLINE).
070                op(ConsoleReader.PREV_HISTORY));
071            assertBuffer("XXXtest line 4", b = b.op(ConsoleReader.NEWLINE).
072                op(ConsoleReader.PREV_HISTORY));
073            assertBuffer("XXXtest line 4", b = b.op(ConsoleReader.NEWLINE).
074                op(ConsoleReader.PREV_HISTORY));
075        }
076    }