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