/** * Equivalent to {@code andThen("andThen", consumer)}. * @see #andThen(String, Consumer4) */ default Tuple4Task<T1, T2, T3, T4> andThen(final Consumer4<T1, T2, T3, T4> consumer) { return cast(andThen("andThen: " + _taskDescriptor.getDescription(consumer.getClass().getName()), tuple -> consumer.accept(tuple._1(), tuple._2(), tuple._3(), tuple._4()))); }
@Test public void testPar4AndThenDsc() { AtomicInteger value = new AtomicInteger(); Task<?> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4)).andThen("test", (a, b, c, d) -> value.set(a + b + c + d)); runAndWait("TestTaskFactoryMethods.testPar4AndThenDsc", task); assertEquals(value.get(), 1 + 2 + 3 + 4); assertEquals(countTasks(task.getTrace()), 2 + 1 + 4); }
@Test public void testPar4AndThen() { AtomicInteger value = new AtomicInteger(); Task<?> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4)).andThen((a, b, c, d) -> value.set(a + b + c + d)); runAndWait("TestTaskFactoryMethods.testPar4AndThen", task); assertEquals(value.get(), 1 + 2 + 3 + 4); assertEquals(countTasks(task.getTrace()), 2 + 1 + 4); }
return cast(andThen(desc, tuple -> consumer.accept(tuple._1(), tuple._2(), tuple._3(), tuple._4())));
/** * Equivalent to {@code andThen("andThen", consumer)}. * @see #andThen(String, Consumer4) */ default Tuple4Task<T1, T2, T3, T4> andThen(final Consumer4<T1, T2, T3, T4> consumer) { return cast(andThen("andThen: " + _taskDescriptor.getDescription(consumer.getClass().getName()), tuple -> consumer.accept(tuple._1(), tuple._2(), tuple._3(), tuple._4()))); }
return cast(andThen(desc, tuple -> consumer.accept(tuple._1(), tuple._2(), tuple._3(), tuple._4())));