1 package io.atlassian.fugue.extensions.step;
2
3 import io.atlassian.fugue.Try;
4 import io.atlassian.fugue.Unit;
5 import org.junit.Test;
6
7 import java.util.function.Supplier;
8
9 import static io.atlassian.fugue.Try.failure;
10 import static io.atlassian.fugue.Try.successful;
11 import static io.atlassian.fugue.Unit.Unit;
12 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysFalse;
13 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysFalse2;
14 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysFalse3;
15 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysFalse4;
16 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysFalse5;
17 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysFalse6;
18 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysTrue;
19 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysTrue2;
20 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysTrue3;
21 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysTrue4;
22 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysTrue5;
23 import static io.atlassian.fugue.extensions.step.TestUtils.alwaysTrue6;
24 import static io.atlassian.fugue.hamcrest.TryMatchers.isFailure;
25 import static io.atlassian.fugue.hamcrest.TryMatchers.isSuccessful;
26 import static org.hamcrest.CoreMatchers.is;
27 import static org.junit.Assert.assertThat;
28
29 public class TestTrySteps {
30
31 private static final String STRING = "123456";
32 private static final String STRING_UPPERED = "QWERTY";
33 private static final String STRING_LOWERED = "qwerty";
34 private static final Long LONG = 123456L;
35 private static final Long LONGLONG = 123456123456L;
36 private static final Exception exceptionFilter = new Exception();
37 private static final Exception exception1 = new Exception();
38 private static final Exception exception2 = new Exception();
39 private static final Exception exception3 = new Exception();
40 private static final Exception exception4 = new Exception();
41 private static final Exception exception5 = new Exception();
42 private static final Exception exception6 = new Exception();
43 private static final Supplier<Exception> exceptionFilterFunction = () -> exceptionFilter;
44
45 @Test public void test_1_step_success() {
46 Try<Long> stepped = Steps.begin(successful(STRING)).yield(Long::new);
47
48 assertThat(stepped, isSuccessful(is(LONG)));
49 }
50
51 @Test public void test_1_step_failure() {
52 Try<Unit> stepped = Steps.begin(failure(exception1)).yield(value1 -> Unit());
53
54 assertThat(stepped, isFailure(is(exception1)));
55 }
56
57 @Test public void test_1_step_filter_success() {
58 Try<Long> stepped = Steps.begin(successful(STRING)).filter(alwaysTrue(), exceptionFilterFunction).yield(Long::new);
59
60 assertThat(stepped, isSuccessful(is(LONG)));
61 }
62
63 @Test public void test_1_step_filter_failure() {
64 Try<Long> stepped = Steps.begin(successful(STRING)).filter(alwaysFalse(), exceptionFilterFunction).yield(Long::new);
65
66 assertThat(stepped, isFailure(is(exceptionFilter)));
67 }
68
69 @Test public void test_2_step_success_functor() {
70 Try<Long> stepped = Steps.begin(successful(STRING)).then((firstValue) -> successful(STRING)).yield((value1, value2) -> new Long(value1 + value2));
71
72 assertThat(stepped, isSuccessful(is(LONGLONG)));
73 }
74
75 @Test public void test_2_step_success_supplier() {
76 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).yield((value1, value2) -> new Long(value1 + value2));
77
78 assertThat(stepped, isSuccessful(is(LONGLONG)));
79 }
80
81 @Test public void test_2_step_failure_functor() {
82 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> failure(exception2)).yield((value1, value2) -> new Long(value1));
83
84 assertThat(stepped, isFailure(is(exception2)));
85 }
86
87 @Test public void test_2_step_failure_supplier() {
88 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> failure(exception2)).yield((value1, value2) -> new Long(value1));
89
90 assertThat(stepped, isFailure(is(exception2)));
91 }
92
93 @Test public void test_2_step_failure_1() {
94 Try<Long> stepped = Steps.begin(failure(exception1)).then(() -> successful(9)).yield((value1, value2) -> new Long(value2));
95
96 assertThat(stepped, isFailure(is(exception1)));
97 }
98
99 @Test public void test_2_step_filter_success() {
100 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).filter(alwaysTrue2(), exceptionFilterFunction)
101 .yield((v1, v2) -> v2);
102
103 assertThat(stepped, isSuccessful(is(LONG)));
104 }
105
106 @Test public void test_2_step_filter_failure() {
107 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).filter(alwaysFalse2(), exceptionFilterFunction)
108 .yield((v1, v2) -> v2);
109
110 assertThat(stepped, isFailure(is(exceptionFilter)));
111 }
112
113 @Test public void test_2_step_filter_failure_1() {
114 Try<Long> stepped = Steps.begin(successful(STRING)).filter(alwaysFalse(), exceptionFilterFunction).then(() -> successful(STRING))
115 .yield((value1, value2) -> new Long(value1 + value2));
116
117 assertThat(stepped, isFailure(is(exceptionFilter)));
118 }
119
120 @Test public void test_3_step_success_functor() {
121 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((v1, v2) -> successful(88))
122 .yield((value1, value2, value3) -> new Long(value1 + value2));
123
124 assertThat(stepped, isSuccessful(is(LONGLONG)));
125 }
126
127 @Test public void test_3_step_success_supplier() {
128 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(88))
129 .yield((value1, value2, value3) -> new Long(value1 + value2));
130
131 assertThat(stepped, isSuccessful(is(LONGLONG)));
132 }
133
134 @Test public void test_3_step_failure_functor() {
135 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((v1, v2) -> failure(exception3))
136 .yield((value1, value2, value3) -> new Long(value1));
137
138 assertThat(stepped, isFailure(is(exception3)));
139 }
140
141 @Test public void test_3_step_failure_supplier() {
142 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> failure(exception3))
143 .yield((value1, value2, value3) -> new Long(value1));
144
145 assertThat(stepped, isFailure(is(exception3)));
146 }
147
148 @Test public void test_3_step_failure_1() {
149 Try<Long> stepped = Steps.begin(failure(exception1)).then(() -> successful(STRING)).then((v1, v2) -> successful(LONG))
150 .yield((value1, value2, value3) -> value3);
151
152 assertThat(stepped, isFailure(is(exception1)));
153 }
154
155 @Test public void test_3_step_failure_2() {
156 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> failure(exception2)).then((v1, v2) -> successful(LONG))
157 .yield((value1, value2, value3) -> new Long(value1));
158
159 assertThat(stepped, isFailure(is(exception2)));
160 }
161
162 @Test public void test_3_step_filter_success() {
163 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).then(() -> successful(STRING_LOWERED))
164 .filter(alwaysTrue3(), exceptionFilterFunction).yield((v1, v2, v3) -> v2);
165
166 assertThat(stepped, isSuccessful(is(LONG)));
167 }
168
169 @Test public void test_3_step_filter_failure() {
170 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).then(() -> successful(STRING_LOWERED))
171 .filter(alwaysFalse3(), exceptionFilterFunction).yield((v1, v2, v3) -> v2);
172
173 assertThat(stepped, isFailure(is(exceptionFilter)));
174 }
175
176 @Test public void test_3_step_filter_failure_1() {
177 Try<Long> stepped = Steps.begin(successful(STRING)).filter(alwaysFalse(), exceptionFilterFunction).then(() -> successful(LONG))
178 .then(() -> successful(STRING_LOWERED)).yield((v1, v2, v3) -> v2);
179
180 assertThat(stepped, isFailure(is(exceptionFilter)));
181 }
182
183 @Test public void test_3_step_filter_failure_2() {
184 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).filter(alwaysFalse2(), exceptionFilterFunction)
185 .then(() -> successful(STRING_LOWERED)).filter(alwaysFalse3(), exceptionFilterFunction).yield((v1, v2, v3) -> v2);
186
187 assertThat(stepped, isFailure(is(exceptionFilter)));
188 }
189
190 @Test public void test_4_step_success_functor() {
191 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
192 .then((v1, v2, v3) -> successful(STRING)).yield((value1, value2, value3, value4) -> new Long(value3));
193
194 assertThat(stepped, isSuccessful(is(LONGLONG)));
195 }
196
197 @Test public void test_4_step_success_supplier() {
198 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
199 .then(() -> successful(STRING)).yield((value1, value2, value3, value4) -> new Long(value3));
200
201 assertThat(stepped, isSuccessful(is(LONGLONG)));
202 }
203
204 @Test public void test_4_step_failure_functor() {
205 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((s, s2) -> successful(STRING))
206 .then((s, s2, s3) -> failure(exception4)).yield((value1, value2, value3, value4) -> new Long(value1));
207
208 assertThat(stepped, isFailure(is(exception4)));
209 }
210
211 @Test public void test_4_step_failure_supplier() {
212 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING)).then(() -> failure(exception4))
213 .yield((value1, value2, value3, value4) -> new Long(value1));
214
215 assertThat(stepped, isFailure(is(exception4)));
216 }
217
218 @Test public void test_4_step_failure_1() {
219 Try<Long> stepped = Steps.begin(failure(exception1)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
220 .then(() -> successful(STRING)).yield((value1, value2, value3, value4) -> new Long(value3));
221
222 assertThat(stepped, isFailure(is(exception1)));
223 }
224
225 @Test public void test_4_step_failure_2() {
226 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> failure(exception2)).then(() -> successful(STRING + STRING))
227 .then(() -> successful(STRING)).yield((value1, value2, value3, value4) -> new Long(value3));
228
229 assertThat(stepped, isFailure(is(exception2)));
230 }
231
232 @Test public void test_4_step_failure_3() {
233 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> failure(exception3)).then(() -> successful(STRING))
234 .yield((value1, value2, value3, value4) -> new Long(value4));
235
236 assertThat(stepped, isFailure(is(exception3)));
237 }
238
239 @Test public void test_4_step_filter_success() {
240 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).then(() -> successful(STRING_LOWERED))
241 .then(() -> successful(true)).filter(alwaysTrue4(), exceptionFilterFunction).yield((v1, v2, v3, v4) -> v2);
242
243 assertThat(stepped, isSuccessful(is(LONG)));
244 }
245
246 @Test public void test_4_step_filter_failure() {
247 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).then(() -> successful(STRING_LOWERED))
248 .then(() -> successful(true)).filter(alwaysFalse4(), exceptionFilterFunction).yield((v1, v2, v3, v4) -> v2);
249
250 assertThat(stepped, isFailure(is(exceptionFilter)));
251 }
252
253 @Test public void test_4_step_filter_failure_1() {
254 Try<Long> stepped = Steps.begin(successful(STRING)).filter(alwaysFalse(), exceptionFilterFunction).then(() -> successful(LONG))
255 .then(() -> successful(STRING_LOWERED)).then(() -> successful(true)).yield((v1, v2, v3, v4) -> v2);
256
257 assertThat(stepped, isFailure(is(exceptionFilter)));
258 }
259
260 @Test public void test_4_step_filter_failure_2() {
261 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).filter(alwaysFalse2(), exceptionFilterFunction)
262 .then(() -> successful(STRING_LOWERED)).then(() -> successful(true)).yield((v1, v2, v3, v4) -> v2);
263
264 assertThat(stepped, isFailure(is(exceptionFilter)));
265 }
266
267 @Test public void test_4_step_filter_failure_3() {
268 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(LONG)).then(() -> successful(STRING_LOWERED))
269 .filter(alwaysFalse3(), exceptionFilterFunction).then(() -> successful(true)).yield((v1, v2, v3, v4) -> v2);
270
271 assertThat(stepped, isFailure(is(exceptionFilter)));
272 }
273
274 @Test public void test_5_step_success_functor() {
275 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
276 .then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING))
277 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
278
279 assertThat(stepped, isSuccessful(is(LONGLONG)));
280 }
281
282 @Test public void test_5_step_success_supplier() {
283 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
284 .then(() -> successful(STRING)).then(() -> successful(STRING)).yield((value1, value2, value3, value4, value5) -> new Long(value3));
285
286 assertThat(stepped, isSuccessful(is(LONGLONG)));
287 }
288
289 @Test public void test_5_step_failure_functor() {
290 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
291 .then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> failure(exception5))
292 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
293
294 assertThat(stepped, isFailure(is(exception5)));
295 }
296
297 @Test public void test_5_step_failure_supplier() {
298 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
299 .then(() -> successful(STRING)).then(() -> failure(exception5)).yield((value1, value2, value3, value4, value5) -> new Long(value3));
300
301 assertThat(stepped, isFailure(is(exception5)));
302 }
303
304 @Test public void test_5_step_failure_1() {
305 Try<Long> stepped = Steps.begin(failure(exception1)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
306 .then(() -> successful(STRING)).then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5) -> new Long(value3));
307
308 assertThat(stepped, isFailure(is(exception1)));
309 }
310
311 @Test public void test_5_step_failure_2() {
312 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> failure(exception2)).then(() -> successful(STRING + STRING))
313 .then(() -> successful(STRING)).then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5) -> new Long(value3));
314
315 assertThat(stepped, isFailure(is(exception2)));
316 }
317
318 @Test public void test_5_step_failure_3() {
319 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> failure(exception3)).then(() -> successful(STRING))
320 .then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5) -> new Long(value2));
321
322 assertThat(stepped, isFailure(is(exception3)));
323 }
324
325 @Test public void test_5_step_failure_4() {
326 Try<Long> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
327 .then(() -> failure(exception4)).then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5) -> new Long(value3));
328
329 assertThat(stepped, isFailure(is(exception4)));
330 }
331
332 @Test public void test_5_step_filter_success() {
333 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
334 .then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING)).filter(alwaysTrue5(), exceptionFilterFunction)
335 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
336
337 assertThat(stepped, isSuccessful(is(LONGLONG)));
338 }
339
340 @Test public void test_5_step_filter_failure() {
341 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
342 .then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING)).filter(alwaysFalse5(), exceptionFilterFunction)
343 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
344
345 assertThat(stepped, isFailure(is(exceptionFilter)));
346 }
347
348 @Test public void test_5_step_filter_failure_1() {
349 Try<Long> stepped = Steps.begin(successful(STRING)).filter(alwaysFalse(), exceptionFilterFunction).then(v -> successful(STRING))
350 .then((first, second) -> successful(first + second)).then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING))
351 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
352
353 assertThat(stepped, isFailure(is(exceptionFilter)));
354 }
355
356 @Test public void test_5_step_filter_failure_2() {
357 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).filter(alwaysFalse2(), exceptionFilterFunction)
358 .then((first, second) -> successful(first + second)).then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING))
359 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
360
361 assertThat(stepped, isFailure(is(exceptionFilter)));
362 }
363
364 @Test public void test_5_step_filter_failure_3() {
365 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
366 .filter(alwaysFalse3(), exceptionFilterFunction).then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING))
367 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
368
369 assertThat(stepped, isFailure(is(exceptionFilter)));
370 }
371
372 @Test public void test_5_step_filter_failure_4() {
373 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
374 .then((v1, v2, v3) -> successful(STRING)).filter(alwaysFalse4(), exceptionFilterFunction).then((v1, v2, v3, v4) -> successful(STRING))
375 .yield((value1, value2, value3, value4, value5) -> new Long(value3));
376
377 assertThat(stepped, isFailure(is(exceptionFilter)));
378 }
379
380 @Test public void test_6_step_success_functor() {
381 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
382 .then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING_UPPERED))
383 .then((first, second, third, fourth, fifth) -> successful(STRING_LOWERED))
384 .yield((value1, value2, value3, value4, value5, value6) -> new Long(value3));
385
386 assertThat(stepped, isSuccessful(is(LONGLONG)));
387 }
388
389 @Test public void test_6_step_success_supplier() {
390 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
391 .then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED)).then(() -> successful(STRING_LOWERED))
392 .yield((value1, value2, value3, value4, value5, value6) -> value6);
393
394 assertThat(stepped, isSuccessful(is(STRING_LOWERED)));
395 }
396
397 @Test public void test_6_step_failure_functor() {
398 Try<Long> stepped = Steps.begin(successful(STRING)).then(v -> successful(STRING)).then((first, second) -> successful(first + second))
399 .then((v1, v2, v3) -> successful(STRING)).then((v1, v2, v3, v4) -> successful(STRING_UPPERED))
400 .then((first, second, third, fourth, fifth) -> failure(exception6)).yield((value1, value2, value3, value4, value5, value6) -> new Long(value3));
401
402 assertThat(stepped, isFailure(is(exception6)));
403 }
404
405 @Test public void test_6_step_failure_supplier() {
406 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
407 .then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED)).then(() -> failure(exception6))
408 .yield((value1, value2, value3, value4, value5, value6) -> value5);
409
410 assertThat(stepped, isFailure(is(exception6)));
411 }
412
413 @Test public void test_6_step_failure_1() {
414 Try<String> stepped = Steps.begin(failure(exception1)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
415 .then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED)).then(() -> successful(STRING_LOWERED))
416 .yield((value1, value2, value3, value4, value5, value6) -> value6);
417
418 assertThat(stepped, isFailure(is(exception1)));
419 }
420
421 @Test public void test_6_step_failure_2() {
422 Try<String> stepped = Steps.begin(successful(LONG)).then(() -> failure(exception2)).then(() -> successful(STRING + STRING))
423 .then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED)).then(() -> successful(STRING_LOWERED))
424 .yield((value1, value2, value3, value4, value5, value6) -> value6);
425
426 assertThat(stepped, isFailure(is(exception2)));
427 }
428
429 @Test public void test_6_step_failure_3() {
430 Try<String> stepped = Steps.begin(successful(LONG)).then(() -> successful(STRING)).then(() -> failure(exception3)).then(() -> successful(STRING))
431 .then(() -> successful(STRING_UPPERED)).then(() -> successful(STRING_LOWERED))
432 .yield((value1, value2, value3, value4, value5, value6) -> value6);
433
434 assertThat(stepped, isFailure(is(exception3)));
435 }
436
437 @Test public void test_6_step_failure_4() {
438 Try<String> stepped = Steps.begin(successful(LONG)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
439 .then(() -> failure(exception4)).then(() -> successful(STRING_UPPERED)).then(() -> successful(STRING_LOWERED))
440 .yield((value1, value2, value3, value4, value5, value6) -> value6);
441
442 assertThat(stepped, isFailure(is(exception4)));
443 }
444
445 @Test public void test_6_step_failure_5() {
446 Try<String> stepped = Steps.begin(successful(LONG)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
447 .then(() -> successful(STRING)).then(() -> failure(exception5)).then(() -> successful(STRING_LOWERED))
448 .yield((value1, value2, value3, value4, value5, value6) -> value6);
449
450 assertThat(stepped, isFailure(is(exception5)));
451 }
452
453 @Test public void test_6_step_filter_success() {
454 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
455 .then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED)).then(() -> successful(STRING_LOWERED))
456 .filter(alwaysTrue6(), exceptionFilterFunction).yield((value1, value2, value3, value4, value5, value6) -> value6);
457
458 assertThat(stepped, isSuccessful(is(STRING_LOWERED)));
459 }
460
461 @Test public void test_6_step_filter_failure() {
462 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
463 .then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED)).then(() -> successful(STRING_LOWERED))
464 .filter(alwaysFalse6(), exceptionFilterFunction).yield((value1, value2, value3, value4, value5, value6) -> value6);
465
466 assertThat(stepped, isFailure(is(exceptionFilter)));
467 }
468
469 @Test public void test_6_step_filter_failure_1() {
470 Try<String> stepped = Steps.begin(successful(STRING)).filter(alwaysFalse(), exceptionFilterFunction).then(() -> successful(STRING))
471 .then(() -> successful(STRING + STRING)).then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED))
472 .then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5, value6) -> value6);
473
474 assertThat(stepped, isFailure(is(exceptionFilter)));
475 }
476
477 @Test public void test_6_step_filter_failure_2() {
478 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).filter(alwaysFalse2(), exceptionFilterFunction)
479 .then(() -> successful(STRING + STRING)).then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED))
480 .then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5, value6) -> value6);
481
482 assertThat(stepped, isFailure(is(exceptionFilter)));
483 }
484
485 @Test public void test_6_step_filter_failure_3() {
486 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
487 .filter(alwaysFalse3(), exceptionFilterFunction).then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED))
488 .then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5, value6) -> value6);
489
490 assertThat(stepped, isFailure(is(exceptionFilter)));
491 }
492
493 @Test public void test_6_step_filter_failure_4() {
494 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
495 .then(() -> successful(STRING)).filter(alwaysFalse4(), exceptionFilterFunction).then(() -> successful(STRING_UPPERED))
496 .then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5, value6) -> value6);
497
498 assertThat(stepped, isFailure(is(exceptionFilter)));
499 }
500
501 @Test public void test_6_step_filter_failure_5() {
502 Try<String> stepped = Steps.begin(successful(STRING)).then(() -> successful(STRING)).then(() -> successful(STRING + STRING))
503 .then(() -> successful(STRING)).then(() -> successful(STRING_UPPERED)).filter(alwaysFalse5(), exceptionFilterFunction)
504 .then(() -> successful(STRING_LOWERED)).yield((value1, value2, value3, value4, value5, value6) -> value6);
505
506 assertThat(stepped, isFailure(is(exceptionFilter)));
507 }
508
509 }