Add ThingPickerManager.
This little nugget is what we will wire up in the main plugin class once we're ready to introduce it to the code base for real. Its purpose is similar to that of the ThingManager, in that it _is_ a parser and can be passed around wherever a parser is needed, but it also is the main entry point for anything that is ThingPickerParser instances.
This commit is contained in:
1 parent
5566d8fd86
commit
2d0aad19d6
2 files changed
+89
No files matched your search
@@ -0,0 +1,57 @@
|
||||
package com.garbagemule.MobArena.things;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class ThingPickerManagerTest {
|
||||
|
||||
private ThingPickerManager subject;
|
||||
private ThingParser things;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
things = mock(ThingParser.class);
|
||||
subject = new ThingPickerManager(things);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokesParsersUntilOneReturnsNonNull() {
|
||||
String input = "all(a, b, c)";
|
||||
ThingPickerParser first = mock(ThingPickerParser.class);
|
||||
ThingPickerParser second = mock(ThingPickerParser.class);
|
||||
ThingPickerParser third = mock(ThingPickerParser.class);
|
||||
ThingPicker picker = mock(ThingPicker.class);
|
||||
when(first.parse(input)).thenReturn(null);
|
||||
when(second.parse(input)).thenReturn(picker);
|
||||
subject.register(first);
|
||||
subject.register(second);
|
||||
subject.register(third);
|
||||
|
||||
subject.parse(input);
|
||||
|
||||
verify(third, never()).parse(input);
|
||||
verify(things, never()).parse(input);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invokesThingParserIfNothingElseWorks() {
|
||||
String input = "random(a, b, c)";
|
||||
ThingPickerParser first = mock(ThingPickerParser.class);
|
||||
ThingPickerParser second = mock(ThingPickerParser.class);
|
||||
when(first.parse(input)).thenReturn(null);
|
||||
when(second.parse(input)).thenReturn(null);
|
||||
subject.register(first);
|
||||
subject.register(second);
|
||||
|
||||
subject.parse(input);
|
||||
|
||||
verify(things, times(1)).parse(input);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user