ApplicationCompleter implements Completer { @Override public int complete( Session session, CommandLine commandLine, List<String> candidates ) { StringsCompleter delegate = new StringsCompleter( false ); for( ManagedApplication ma : this.manager.applicationMngr().getManagedApplications()) delegate.getStrings().add( ma.getName()); return delegate.complete( session, commandLine, candidates ); }  @Override int complete( Session session, CommandLine commandLine, List<String> candidates );  }
@Test public void testComplete() throws Exception { Session session = Mockito.mock( Session.class ); CommandLine commandLine = Mockito.mock( CommandLine.class ); Mockito.when( commandLine.getCursorArgument()).thenReturn( "" ); Mockito.when( commandLine.getArgumentPosition()).thenReturn( 0 ); final List<ManagedApplication> mas = new ArrayList<> (); IApplicationMngr applicationMngr = Mockito.mock( IApplicationMngr.class ); Mockito.when( applicationMngr.getManagedApplications()).thenReturn( mas ); Manager manager = Mockito.mock( Manager.class ); Mockito.when( manager.applicationMngr()).thenReturn( applicationMngr ); ApplicationTemplate tpl = new ApplicationTemplate( "whatever" ).directory( this.folder.newFolder()); ApplicationCompleter completer = new ApplicationCompleter(); completer.manager = manager; List<String> candidates = new ArrayList<> (); Assert.assertEquals( 0, candidates.size()); Assert.assertEquals( -1, completer.complete( session, commandLine, candidates )); Assert.assertEquals( 0, candidates.size()); candidates = new ArrayList<> (); Mockito.when( commandLine.getCursorArgument()).thenReturn( "I" ); Mockito.when( commandLine.getArgumentPosition()).thenReturn( 1 ); Assert.assertEquals( 0, candidates.size()); Assert.assertEquals( -1, completer.complete( session, commandLine, candidates )); Assert.assertEquals( 0, candidates.size()); mas.add( new ManagedApplication( new Application( "Ito", tpl ))); Assert.assertEquals( -1, completer.complete( session, commandLine, candidates )); Assert.assertEquals( 1, candidates.size()); Assert.assertEquals( "Ito", candidates.get( 0 ).trim()); candidates = new ArrayList<> (); Mockito.when( commandLine.getCursorArgument()).thenReturn( "i" ); Mockito.when( commandLine.getArgumentPosition()).thenReturn( 1 ); Assert.assertEquals( 0, candidates.size()); Assert.assertEquals( -1, completer.complete( session, commandLine, candidates )); Assert.assertEquals( 1, candidates.size()); Assert.assertEquals( "Ito", candidates.get( 0 ).trim()); mas.add( new ManagedApplication( new Application( "uto", tpl ))); mas.add( new ManagedApplication( new Application( "ito2", tpl ))); mas.add( new ManagedApplication( new Application( "as", tpl ))); candidates = new ArrayList<> (); Assert.assertEquals( 0, candidates.size()); Assert.assertEquals( -1, completer.complete( session, commandLine, candidates )); Assert.assertEquals( 2, candidates.size()); Assert.assertEquals( "Ito", candidates.get( 0 ).trim()); Assert.assertEquals( "ito2", candidates.get( 1 ).trim()); candidates = new ArrayList<> (); Mockito.when( commandLine.getCursorArgument()).thenReturn( "ito2" ); Mockito.when( commandLine.getArgumentPosition()).thenReturn( 4 ); Assert.assertEquals( 0, candidates.size()); Assert.assertEquals( -4, completer.complete( session, commandLine, candidates )); Assert.assertEquals( 1, candidates.size()); Assert.assertEquals( "ito2", candidates.get( 0 ).trim()); candidates = new ArrayList<> (); Mockito.when( commandLine.getCursorArgument()).thenReturn( "unknown" ); Mockito.when( commandLine.getArgumentPosition()).thenReturn( "unknown".length()); Assert.assertEquals( 0, candidates.size()); Assert.assertEquals( -1, completer.complete( session, commandLine, candidates )); }