View Javadoc
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 }