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 }