package org.limewire.core.impl.library; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.limewire.core.api.search.SearchCategory; import org.limewire.util.BaseTestCase; public class FriendLibraryAutoCompleterTest extends BaseTestCase { public FriendLibraryAutoCompleterTest(String name) { super(name); } public void testAddEntry() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final SearchCategory searchCategory = SearchCategory.AUDIO; final FriendLibraries friendLibraries = context.mock(FriendLibraries.class); FriendLibraryAutoCompleter friendLibraryAutoCompleter = new FriendLibraryAutoCompleter( friendLibraries, searchCategory); try { friendLibraryAutoCompleter.addEntry("test"); fail("Should not be able to add entries to this auto completer"); } catch (UnsupportedOperationException e) { // expected } context.assertIsSatisfied(); } public void testClear() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final SearchCategory searchCategory = SearchCategory.AUDIO; final FriendLibraries friendLibraries = context.mock(FriendLibraries.class); FriendLibraryAutoCompleter friendLibraryAutoCompleter = new FriendLibraryAutoCompleter( friendLibraries, searchCategory); try { friendLibraryAutoCompleter.clear(); fail("Should not be able to clear this auto completer"); } catch (UnsupportedOperationException e) { // expected } context.assertIsSatisfied(); } public void testGetByPrefix() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final String testPrefix1 = "testPrefix1"; final String value1 = "1"; final String value2 = "2"; final String value3 = "3"; final SearchCategory searchCategory = SearchCategory.AUDIO; final FriendLibraries friendLibraries = context.mock(FriendLibraries.class); context.checking(new Expectations() { { one(friendLibraries).getSuggestions(testPrefix1, searchCategory); will(returnValue(Arrays.asList(value1, value2, value3))); } }); FriendLibraryAutoCompleter friendLibraryAutoCompleter = new FriendLibraryAutoCompleter( friendLibraries, searchCategory); Collection<String> result = friendLibraryAutoCompleter.getPrefixedBy(testPrefix1); assertNotNull(result); assertEquals(3, result.size()); assertContains(result, value1); assertContains(result, value2); assertContains(result, value3); context.assertIsSatisfied(); } public void testLookup() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final String testPrefix1 = "testPrefix1"; final String value1 = "1"; final String value2 = "2"; final SearchCategory searchCategory = SearchCategory.AUDIO; final FriendLibraries friendLibraries = context.mock(FriendLibraries.class); context.checking(new Expectations() { { one(friendLibraries).getSuggestions(testPrefix1, searchCategory); will(returnValue(Arrays.asList(value2, value1))); } }); FriendLibraryAutoCompleter friendLibraryAutoCompleter = new FriendLibraryAutoCompleter( friendLibraries, searchCategory); String lookup = friendLibraryAutoCompleter.lookup(testPrefix1); assertNotNull(lookup); assertEquals(value2, lookup); context.assertIsSatisfied(); } public void testInterator() { Mockery context = new Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; final String testPrefix1 = ""; final String value1 = "1"; final String value2 = "2"; final SearchCategory searchCategory = SearchCategory.AUDIO; final FriendLibraries friendLibraries = context.mock(FriendLibraries.class); context.checking(new Expectations() { { one(friendLibraries).getSuggestions(testPrefix1, searchCategory); will(returnValue(Arrays.asList(value2, value1))); } }); FriendLibraryAutoCompleter friendLibraryAutoCompleter = new FriendLibraryAutoCompleter( friendLibraries, searchCategory); Iterator<String> iterator = friendLibraryAutoCompleter.iterator(); assertNotNull(iterator); assertEquals(value2, iterator.next()); assertEquals(value1, iterator.next()); assertFalse(iterator.hasNext()); context.assertIsSatisfied(); } }