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 import java.util.*;
39
40 /**
41 * Tests command history.
42 *
43 * @author <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
44 */
45 public class TestCompletion
46 extends JLineTestCase
47 {
48 public TestCompletion (String test)
49 {
50 super (test);
51 }
52
53
54 public void testSimpleCompletor ()
55 throws Exception
56 {
57
58 for (Iterator i = console.getCompletors ().iterator ();
59 i.hasNext (); console.removeCompletor ((Completor)i.next ()));
60
61 console.addCompletor (new SimpleCompletor (
62 new String [] { "foo", "bar", "baz"}));
63
64 assertBuffer ("foo ", new Buffer ("f").op (ConsoleReader.COMPLETE));
65
66 assertBuffer ("ba", new Buffer ("b").op (ConsoleReader.COMPLETE));
67 assertBuffer ("ba", new Buffer ("ba").op (ConsoleReader.COMPLETE));
68 assertBuffer ("baz ", new Buffer ("baz").op (ConsoleReader.COMPLETE));
69 }
70
71
72 public void testArgumentCompletor ()
73 throws Exception
74 {
75
76 for (Iterator i = console.getCompletors ().iterator ();
77 i.hasNext (); console.removeCompletor ((Completor)i.next ()));
78
79 console.addCompletor (new ArgumentCompletor (
80 new SimpleCompletor (new String [] { "foo", "bar", "baz"})));
81
82 assertBuffer ("foo foo ", new Buffer ("foo f")
83 .op (ConsoleReader.COMPLETE));
84 assertBuffer ("foo ba", new Buffer ("foo b")
85 .op (ConsoleReader.COMPLETE));
86 assertBuffer ("foo ba", new Buffer ("foo ba")
87 .op (ConsoleReader.COMPLETE));
88 assertBuffer ("foo baz ", new Buffer ("foo baz")
89 .op (ConsoleReader.COMPLETE));
90
91
92 assertBuffer ("foo baz", new Buffer ("f baz")
93 .left ().left ().left ().left ()
94 .op (ConsoleReader.COMPLETE));
95 assertBuffer ("ba foo", new Buffer ("b foo")
96 .left ().left ().left ().left ()
97 .op (ConsoleReader.COMPLETE));
98 assertBuffer ("foo ba baz", new Buffer ("foo b baz")
99 .left ().left ().left ().left ()
100 .op (ConsoleReader.COMPLETE));
101 assertBuffer ("foo foo baz", new Buffer ("foo f baz")
102 .left ().left ().left ().left ()
103 .op (ConsoleReader.COMPLETE));
104 }
105 }
106
107