/*
* Copyright (c) 2002-2016, the original author or authors.
*
* This software is distributable under the BSD license. See the terms of the
* BSD license in the documentation provided with this software.
*
* http://www.opensource.org/licenses/bsd-license.php
*/
package jline.console.completer;
import jline.console.ConsoleReaderTestSupport;
import jline.console.completer.ArgumentCompleter;
import jline.console.completer.StringsCompleter;
import org.junit.Test;
/**
* Tests for {@link jline.console.completer.ArgumentCompleter}.
*
* @author <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
*/
public class ArgumentCompleterTest
extends ConsoleReaderTestSupport
{
@Test
public void test1() throws Exception {
console.addCompleter(new ArgumentCompleter(new StringsCompleter("foo", "bar", "baz")));
assertBuffer("foo foo ", new Buffer("foo f").tab());
assertBuffer("foo ba", new Buffer("foo b").tab());
assertBuffer("foo ba", new Buffer("foo ba").tab());
assertBuffer("foo baz ", new Buffer("foo baz").tab());
// test completion in the mid range
assertBuffer("foo baz", new Buffer("f baz").left().left().left().left().tab());
assertBuffer("ba foo", new Buffer("b foo").left().left().left().left().tab());
assertBuffer("foo ba baz", new Buffer("foo b baz").left().left().left().left().tab());
assertBuffer("foo foo baz", new Buffer("foo f baz").left().left().left().left().tab());
}
@Test
public void testMultiple() throws Exception {
ArgumentCompleter argCompleter = new ArgumentCompleter(
new StringsCompleter("bar", "baz"),
new StringsCompleter("foo"),
new StringsCompleter("ree"));
console.addCompleter(argCompleter);
assertBuffer("bar foo ", new Buffer("bar f").tab());
assertBuffer("baz foo ", new Buffer("baz f").tab());
// co completion of 2nd arg in strict mode when 1st argument is not matched exactly
assertBuffer("ba f", new Buffer("ba f").tab());
assertBuffer("bar fo r", new Buffer("bar fo r").tab());
argCompleter.setStrict(false);
assertBuffer("ba foo ", new Buffer("ba f").tab());
assertBuffer("ba fo ree ", new Buffer("ba fo r").tab());
}
@Test
public void test2() throws Exception {
console.addCompleter(
new ArgumentCompleter(
new StringsCompleter("some", "any"),
new StringsCompleter("foo", "bar", "baz")));
assertBuffer("some foo ", new Buffer("some fo").tab());
}
}