package jalse.actions;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import jalse.actions.MultiAction.OperationType;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.junit.After;
import org.junit.Test;
public class MultiActionTest {
public static class Builder {
MultiAction<String> multi;
@After
public void after() {
multi = null;
}
@Test
public void testBuilder1() {
multi = new MultiAction.Builder<String>().addPerform(new TestAction()).build();
assertNotNull(multi);
}
@Test
public void testBuilder2() {
final List<Action<String>> lst = new ArrayList<>();
lst.add(new TestAction());
multi = new MultiAction.Builder<String>().addPerform(lst).build();
assertNotNull(multi);
}
@Test
public void testBuilder3() {
multi = new MultiAction.Builder<String>().addSchedule(new TestAction()).build();
assertNotNull(multi);
}
@Test
public void testBuilder4() {
final List<Action<String>> lst = new ArrayList<>();
lst.add(new TestAction());
multi = new MultiAction.Builder<String>().addSchedule(lst).build();
assertNotNull(multi);
}
@Test
public void testBuilder5() {
multi = new MultiAction.Builder<String>().addScheduleAndAwait(new TestAction()).build();
assertNotNull(multi);
}
@Test
public void testBuilder6() {
final List<Action<String>> lst = new ArrayList<>();
lst.add(new TestAction());
multi = new MultiAction.Builder<String>().addScheduleAndAwait(lst).build();
assertNotNull(multi);
}
}
static class TestAction implements Action<String> {
@Override
public void perform(final ActionContext<String> context) throws InterruptedException {}
}
MultiAction<String> multi;
@After
public void after() {
multi = null;
}
@Test
public void testAddOperation() {
multi = new MultiAction<String>();
final MultiAction.ActionOperation<String> op = new MultiAction.ActionOperation<String>(OperationType.PERFORM,
new TestAction());
multi.add(op);
}
@Test
public void testBuildChainActionOfSArray() {
multi = MultiAction.buildChain(new TestAction());
assertFalse(multi.isEmpty());
}
@Test
public void testBuildChainListOfQextendsActionOfS() {
final List<Action<String>> lst = new ArrayList<>();
lst.add(new TestAction());
multi = MultiAction.buildChain(lst);
assertFalse(multi.isEmpty());
}
@Test
public void testHasOperations() {
multi = new MultiAction<String>();
assertTrue(multi.isEmpty());
final MultiAction.ActionOperation<String> op = new MultiAction.ActionOperation<String>(OperationType.PERFORM,
new TestAction());
multi.add(op);
assertFalse(multi.isEmpty());
}
@Test(expected = IllegalArgumentException.class)
public void testActionOperationConstructorWithEmptyCollection() {
Collection<TestAction> emptyList = Collections.emptyList();
new MultiAction.ActionOperation<String>(OperationType.PERFORM, emptyList);
}
@Test
public void testPerform() throws InterruptedException {
multi = new MultiAction<String>();
final MultiAction.ActionOperation<String> op = new MultiAction.ActionOperation<String>(OperationType.PERFORM,
new TestAction());
multi.add(op);
UnschedulableDelegateActionContext<String> actionContext = new UnschedulableDelegateActionContext<>(null);
multi.perform(actionContext);
}
}