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 various features of editing lines.
012     *
013     *  @author  <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
014     */
015    public class TestEditLine extends JLineTestCase {
016        public TestEditLine(String test) {
017            super(test);
018        }
019    
020        public void testDeletePreviousWord() throws Exception {
021            Buffer b = new Buffer("This is a test");
022    
023            assertBuffer("This is a ", b = b.op(ConsoleReader.DELETE_PREV_WORD));
024            assertBuffer("This is ", b = b.op(ConsoleReader.DELETE_PREV_WORD));
025            assertBuffer("This ", b = b.op(ConsoleReader.DELETE_PREV_WORD));
026            assertBuffer("", b = b.op(ConsoleReader.DELETE_PREV_WORD));
027            assertBuffer("", b = b.op(ConsoleReader.DELETE_PREV_WORD));
028            assertBuffer("", b = b.op(ConsoleReader.DELETE_PREV_WORD));
029        }
030    
031        public void testMoveToEnd() throws Exception {
032            Buffer b = new Buffer("This is a test");
033    
034            assertBuffer("This is a XtestX",
035                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
036                                                     .append('X')
037                                                     .op(ConsoleReader.MOVE_TO_END)
038                                                     .append('X'));
039    
040            assertBuffer("This is Xa testX",
041                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
042                                                     .op(ConsoleReader.PREV_WORD)
043                                                     .append('X')
044                                                     .op(ConsoleReader.MOVE_TO_END)
045                                                     .append('X'));
046    
047            assertBuffer("This Xis a testX",
048                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
049                                                     .op(ConsoleReader.PREV_WORD)
050                                                     .op(ConsoleReader.PREV_WORD)
051                                                     .append('X')
052                                                     .op(ConsoleReader.MOVE_TO_END)
053                                                     .append('X'));
054        }
055    
056        public void testPreviousWord() throws Exception {
057            assertBuffer("This is a Xtest",
058                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
059                                                     .append('X'));
060            assertBuffer("This is Xa test",
061                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
062                                                     .op(ConsoleReader.PREV_WORD)
063                                                     .append('X'));
064            assertBuffer("This Xis a test",
065                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
066                                                     .op(ConsoleReader.PREV_WORD)
067                                                     .op(ConsoleReader.PREV_WORD)
068                                                     .append('X'));
069            assertBuffer("XThis is a test",
070                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
071                                                     .op(ConsoleReader.PREV_WORD)
072                                                     .op(ConsoleReader.PREV_WORD)
073                                                     .op(ConsoleReader.PREV_WORD)
074                                                     .append('X'));
075            assertBuffer("XThis is a test",
076                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
077                                                     .op(ConsoleReader.PREV_WORD)
078                                                     .op(ConsoleReader.PREV_WORD)
079                                                     .op(ConsoleReader.PREV_WORD)
080                                                     .op(ConsoleReader.PREV_WORD)
081                                                     .append('X'));
082            assertBuffer("XThis is a test",
083                         new Buffer("This is a test").op(ConsoleReader.PREV_WORD)
084                                                     .op(ConsoleReader.PREV_WORD)
085                                                     .op(ConsoleReader.PREV_WORD)
086                                                     .op(ConsoleReader.PREV_WORD)
087                                                     .op(ConsoleReader.PREV_WORD)
088                                                     .op(ConsoleReader.PREV_WORD)
089                                                     .append('X'));
090        }
091    
092        public void testLineStart() throws Exception {
093            assertBuffer("XThis is a test",
094                         new Buffer("This is a test").ctrlA().append('X'));
095            assertBuffer("TXhis is a test",
096                         new Buffer("This is a test").ctrlA().right().append('X'));
097        }
098    
099        public void testClearLine() throws Exception {
100            assertBuffer("", new Buffer("This is a test").ctrlU());
101            assertBuffer("t", new Buffer("This is a test").left().ctrlU());
102            assertBuffer("st", new Buffer("This is a test").left().left().ctrlU());
103        }
104    
105        public void testRight() throws Exception {
106            Buffer b = new Buffer("This is a test");
107            b = b.left().right().back();
108            assertBuffer("This is a tes", b);
109            b = b.left().left().left().right().left().back();
110            assertBuffer("This is ates", b);
111            b.append('X');
112            assertBuffer("This is aXtes", b);
113        }
114    
115        public void testLeft() throws Exception {
116            Buffer b = new Buffer("This is a test");
117            b = b.left().left().left();
118            assertBuffer("This is a est", b = b.back());
119            assertBuffer("This is aest", b = b.back());
120            assertBuffer("This is est", b = b.back());
121            assertBuffer("This isest", b = b.back());
122            assertBuffer("This iest", b = b.back());
123            assertBuffer("This est", b = b.back());
124            assertBuffer("Thisest", b = b.back());
125            assertBuffer("Thiest", b = b.back());
126            assertBuffer("Thest", b = b.back());
127            assertBuffer("Test", b = b.back());
128            assertBuffer("est", b = b.back());
129            assertBuffer("est", b = b.back());
130            assertBuffer("est", b = b.back());
131            assertBuffer("est", b = b.back());
132            assertBuffer("est", b = b.back());
133        }
134    
135        public void testBackspace() throws Exception {
136            Buffer b = new Buffer("This is a test");
137            assertBuffer("This is a tes", b = b.back());
138            assertBuffer("This is a te", b = b.back());
139            assertBuffer("This is a t", b = b.back());
140            assertBuffer("This is a ", b = b.back());
141            assertBuffer("This is a", b = b.back());
142            assertBuffer("This is ", b = b.back());
143            assertBuffer("This is", b = b.back());
144            assertBuffer("This i", b = b.back());
145            assertBuffer("This ", b = b.back());
146            assertBuffer("This", b = b.back());
147            assertBuffer("Thi", b = b.back());
148            assertBuffer("Th", b = b.back());
149            assertBuffer("T", b = b.back());
150            assertBuffer("", b = b.back());
151            assertBuffer("", b = b.back());
152            assertBuffer("", b = b.back());
153            assertBuffer("", b = b.back());
154            assertBuffer("", b = b.back());
155        }
156    
157        public void testBuffer() throws Exception {
158            assertBuffer("This is a test", new Buffer("This is a test"));
159        }
160    }