package com.linkedin.parseq;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static com.linkedin.parseq.Tasks.seq;
import static com.linkedin.parseq.Task.value;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.fail;
/**
* @author Chris Pettitt
*/
public class TestSeqTask extends BaseEngineTest {
@SuppressWarnings("deprecation")
@Test
public void testIterableSeqWithEmptyList() {
try {
seq(Collections.<Task<?>> emptyList());
fail("Should have thrown IllegalArgumentException");
} catch (IllegalArgumentException e) {
// Expected case
}
}
@SuppressWarnings("deprecation")
@Test
public void testIterableSeqWithSingletonList() throws InterruptedException {
final String valueStr = "value";
final Task<String> task = value("value", valueStr);
final Task<List<String>> seq = seq(Collections.singleton(task));
runAndWait("TestSeqTask.testIterableSeqWithSingletonList", seq);
assertEquals(valueStr, seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testIterableSeqWithMultipleElements() throws InterruptedException {
final int iters = 500;
final Task<?>[] tasks = new Task<?>[iters];
for (int i = 0; i < iters; i++) {
final int finalI = i;
tasks[i] = Task.callable("task-" + i, () -> {
if (finalI == 0) {
return 1;
} else {
final int prevValue = (Integer) tasks[finalI - 1].get();
if (prevValue != finalI) {
throw new IllegalStateException("Expected: " + finalI + ". Got: " + prevValue);
}
return prevValue + 1;
}
} );
}
final Task<Integer> seq = seq(Arrays.asList(tasks));
runAndWait("TestSeqTask.testIterableSeqWithMultipleElements", seq);
assertEquals(iters, (int) seq.get());
}
// For following testSeqX() tests, we verify that we can use different types
// for the last element and the rest of the list.
@SuppressWarnings("deprecation")
@Test
public void testSeq2() throws InterruptedException {
final Task<String> seq = seq(value(1), value("result"));
runAndWait("TestSeqTask.testSeq2", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq3() throws InterruptedException {
final Task<String> seq = seq(value(1), value(2), value("result"));
runAndWait("TestSeqTask.testSeq3", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq4() throws InterruptedException {
final Task<String> seq = seq(value(1), value(2), value(3), value("result"));
runAndWait("TestSeqTask.testSeq4", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq5() throws InterruptedException {
final Task<String> seq = seq(value(1), value(2), value(3), value(4), value("result"));
runAndWait("TestSeqTask.testSeq5", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq6() throws InterruptedException {
final Task<String> seq = seq(value(1), value(2), value(3), value(4), value(5), value("result"));
runAndWait("TestSeqTask.testSeq6", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq7() throws InterruptedException {
final Task<String> seq = seq(value(1), value(2), value(3), value(4), value(5), value(6), value("result"));
runAndWait("TestSeqTask.testSeq7", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq8() throws InterruptedException {
final Task<String> seq = seq(value(1), value(2), value(3), value(4), value(5), value(6), value(7), value("result"));
runAndWait("TestSeqTask.testSeq8", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq9() throws InterruptedException {
final Task<String> seq =
seq(value(1), value(2), value(3), value(4), value(5), value(6), value(7), value(8), value("result"));
runAndWait("TestSeqTask.testSeq9", seq);
assertEquals("result", seq.get());
}
@SuppressWarnings("deprecation")
@Test
public void testSeq10() throws InterruptedException {
final Task<String> seq =
seq(value(1), value(2), value(3), value(4), value(5), value(6), value(7), value(8), value(9), value("result"));
runAndWait("TestSeqTask.testSeq10", seq);
assertEquals("result", seq.get());
}
}