@Test public void flatMap() { Case<Object, Integer, Function<Object, Integer>> cse = Case.of(input -> input instanceof Person, input -> ((Person) input).getAge()); assertThat( Cases.of(cse) .flatMap( c -> Cases.ofList( (List) Arrays.asList( c.andThen(Case.of(age -> age < 18, s -> "minor")), c.andThen(Case.of(age -> age >= 18, s -> "adult"))))) .match(new Person("bob", 21)) .get(), is("adult")); }
@Test public void ofPStack() { Cases cases = Cases.ofList((List) Arrays.asList(Case.of(input -> true, input -> "hello"))); assertThat(cases.size(), is(1)); }