1 /**
2 * jline - Java console input library
3 * Copyright (c) 2002, 2003, 2004, 2005, Marc Prud'hommeaux mwp1@cornell.edu
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or
7 * without modification, are permitted provided that the following
8 * conditions are met:
9 *
10 * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer
15 * in the documentation and/or other materials provided with
16 * the distribution.
17 *
18 * Neither the name of JLine nor the names of its contributors
19 * may be used to endorse or promote products derived from this
20 * software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
24 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
25 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
26 * EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
28 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
31 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
33 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
34 * OF THE POSSIBILITY OF SUCH DAMAGE.
35 */
36 package jline;
37
38
39 /**
40 * Tests various features of editing lines.
41 *
42 * @author <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
43 */
44 public class TestEditLine
45 extends JLineTestCase
46 {
47 public TestEditLine (String test)
48 {
49 super (test);
50 }
51
52
53 public void testDeletePreviousWord ()
54 throws Exception
55 {
56 Buffer b = new Buffer ("This is a test");
57
58 assertBuffer ("This is a ", b = b.op (ConsoleReader.DELETE_PREV_WORD));
59 assertBuffer ("This is ", b = b.op (ConsoleReader.DELETE_PREV_WORD));
60 assertBuffer ("This ", b = b.op (ConsoleReader.DELETE_PREV_WORD));
61 assertBuffer ("", b = b.op (ConsoleReader.DELETE_PREV_WORD));
62 assertBuffer ("", b = b.op (ConsoleReader.DELETE_PREV_WORD));
63 assertBuffer ("", b = b.op (ConsoleReader.DELETE_PREV_WORD));
64 }
65
66
67 public void testMoveToEnd ()
68 throws Exception
69 {
70 Buffer b = new Buffer ("This is a test");
71
72 assertBuffer ("This is a XtestX", new Buffer ("This is a test")
73 .op (ConsoleReader.PREV_WORD)
74 .append ('X')
75 .op (ConsoleReader.MOVE_TO_END)
76 .append ('X')
77 );
78
79 assertBuffer ("This is Xa testX", new Buffer ("This is a test")
80 .op (ConsoleReader.PREV_WORD)
81 .op (ConsoleReader.PREV_WORD)
82 .append ('X')
83 .op (ConsoleReader.MOVE_TO_END)
84 .append ('X')
85 );
86
87 assertBuffer ("This Xis a testX", new Buffer ("This is a test")
88 .op (ConsoleReader.PREV_WORD)
89 .op (ConsoleReader.PREV_WORD)
90 .op (ConsoleReader.PREV_WORD)
91 .append ('X')
92 .op (ConsoleReader.MOVE_TO_END)
93 .append ('X')
94 );
95 }
96
97
98 public void testPreviousWord ()
99 throws Exception
100 {
101 assertBuffer ("This is a Xtest", new Buffer ("This is a test")
102 .op (ConsoleReader.PREV_WORD)
103 .append ('X'));
104 assertBuffer ("This is Xa test", new Buffer ("This is a test")
105 .op (ConsoleReader.PREV_WORD)
106 .op (ConsoleReader.PREV_WORD)
107 .append ('X'));
108 assertBuffer ("This Xis a test", new Buffer ("This is a test")
109 .op (ConsoleReader.PREV_WORD)
110 .op (ConsoleReader.PREV_WORD)
111 .op (ConsoleReader.PREV_WORD)
112 .append ('X'));
113 assertBuffer ("XThis is a test", new Buffer ("This is a test")
114 .op (ConsoleReader.PREV_WORD)
115 .op (ConsoleReader.PREV_WORD)
116 .op (ConsoleReader.PREV_WORD)
117 .op (ConsoleReader.PREV_WORD)
118 .append ('X'));
119 assertBuffer ("XThis is a test", new Buffer ("This is a test")
120 .op (ConsoleReader.PREV_WORD)
121 .op (ConsoleReader.PREV_WORD)
122 .op (ConsoleReader.PREV_WORD)
123 .op (ConsoleReader.PREV_WORD)
124 .op (ConsoleReader.PREV_WORD)
125 .append ('X'));
126 assertBuffer ("XThis is a test", new Buffer ("This is a test")
127 .op (ConsoleReader.PREV_WORD)
128 .op (ConsoleReader.PREV_WORD)
129 .op (ConsoleReader.PREV_WORD)
130 .op (ConsoleReader.PREV_WORD)
131 .op (ConsoleReader.PREV_WORD)
132 .op (ConsoleReader.PREV_WORD)
133 .append ('X'));
134 }
135
136
137 public void testLineStart ()
138 throws Exception
139 {
140 assertBuffer ("XThis is a test", new Buffer ("This is a test")
141 .ctrlA ().append ('X'));
142 assertBuffer ("TXhis is a test", new Buffer ("This is a test")
143 .ctrlA ().right ().append ('X'));
144 }
145
146
147 public void testClearLine ()
148 throws Exception
149 {
150 assertBuffer ("", new Buffer ("This is a test").ctrlU ());
151 assertBuffer ("t", new Buffer ("This is a test").left ().ctrlU ());
152 assertBuffer ("st", new Buffer ("This is a test")
153 .left ().left ().ctrlU ());
154 }
155
156
157 public void testRight ()
158 throws Exception
159 {
160 Buffer b = new Buffer ("This is a test");
161 b = b.left ().right ().back ();
162 assertBuffer ("This is a tes", b);
163 b = b.left ().left ().left ().right ().left ().back ();
164 assertBuffer ("This is ates", b);
165 b.append ('X');
166 assertBuffer ("This is aXtes", b);
167 }
168
169
170 public void testLeft ()
171 throws Exception
172 {
173 Buffer b = new Buffer ("This is a test");
174 b = b.left ().left ().left ();
175 assertBuffer ("This is a est", b = b.back ());
176 assertBuffer ("This is aest", b = b.back ());
177 assertBuffer ("This is est", b = b.back ());
178 assertBuffer ("This isest", b = b.back ());
179 assertBuffer ("This iest", b = b.back ());
180 assertBuffer ("This est", b = b.back ());
181 assertBuffer ("Thisest", b = b.back ());
182 assertBuffer ("Thiest", b = b.back ());
183 assertBuffer ("Thest", b = b.back ());
184 assertBuffer ("Test", b = b.back ());
185 assertBuffer ("est", b = b.back ());
186 assertBuffer ("est", b = b.back ());
187 assertBuffer ("est", b = b.back ());
188 assertBuffer ("est", b = b.back ());
189 assertBuffer ("est", b = b.back ());
190 }
191
192
193 public void testBackspace ()
194 throws Exception
195 {
196 Buffer b = new Buffer ("This is a test");
197 assertBuffer ("This is a tes", b = b.back ());
198 assertBuffer ("This is a te", b = b.back ());
199 assertBuffer ("This is a t", b = b.back ());
200 assertBuffer ("This is a ", b = b.back ());
201 assertBuffer ("This is a", b = b.back ());
202 assertBuffer ("This is ", b = b.back ());
203 assertBuffer ("This is", b = b.back ());
204 assertBuffer ("This i", b = b.back ());
205 assertBuffer ("This ", b = b.back ());
206 assertBuffer ("This", b = b.back ());
207 assertBuffer ("Thi", b = b.back ());
208 assertBuffer ("Th", b = b.back ());
209 assertBuffer ("T", b = b.back ());
210 assertBuffer ("", b = b.back ());
211 assertBuffer ("", b = b.back ());
212 assertBuffer ("", b = b.back ());
213 assertBuffer ("", b = b.back ());
214 assertBuffer ("", b = b.back ());
215 }
216
217
218 public void testBuffer ()
219 throws Exception
220 {
221 assertBuffer ("This is a test", new Buffer ("This is a test"));
222 }
223 }