package org.enumerable.lambda.support.functionaljava; import static fj.Show.*; import static fj.data.Option.*; import static org.enumerable.lambda.support.functionaljava.Array_bind.*; import static org.enumerable.lambda.support.functionaljava.LambdaFunctionalJava.*; import static org.junit.Assert.*; import org.enumerable.lambda.annotation.LambdaParameter; import org.junit.Test; import fj.data.Option; public final class Option_bind { @LambdaParameter static Integer i; @Test public void test() { final Option<Integer> o1 = some(7); final Option<Integer> o2 = some(8); final Option<Integer> o3 = none(); final Option<Integer> p1 = o1.bind(λ(i, i % 2 == 0 ? some(i * 3) : Option.<Integer> none())); final Option<Integer> p2 = o2.bind(λ(i, i % 2 == 0 ? some(i * 3) : Option.<Integer> none())); final Option<Integer> p3 = o3.bind(λ(i, i % 2 == 0 ? some(i * 3) : Option.<Integer> none())); assertEquals("None", optionShow(intShow()).showS(p1)); // None assertEquals("Some(24)", optionShow(intShow()).showS(p2)); // Some(24) assertEquals("None", optionShow(intShow()).showS(p3)); // None } }