public static <T1, T2, T3, R> Case<Tuple3<T1, T2, T3>, R> Case(Predicate<T1> predicate1, Predicate<T2> predicate2, Predicate<T3> predicate3, Supplier<R> supplier) { return new Case.Case3<>(predicate1, predicate2, predicate3, value -> supplier.get()); }
@Test public void shouldMatchForAllPredicates() { Tuple3<String, Integer, String> tuple3 = new Tuple3<>("tuple", 2, "hello_world"); Assert.assertEquals("tuple3", new Case.Case3<>((String t1) -> t1.equals("tuple"), (Integer t2) -> t2.equals(2), (String t3) -> t3.equals("hello_world"), (value) -> "tuple3").test(tuple3) .orElse(null)); }
@Test public void shouldNotMatchForPartial() { Tuple3<String, Integer, String> tuple2 = new Tuple3<>("tuple", 2, "hello_world"); assertFalse(new Case.Case3<>((String t1) -> t1.equals("tuple"), (Integer t2) -> t2.equals(2), (String t3) -> false, (value) -> "tuple2").test(tuple2).isPresent()); assertFalse(new Case.Case3<>((String t1) -> t1.equals("tuple"), (Integer t2) -> false, (String t3) -> t3.equals("hello_word"), (value) -> "tuple2").test(tuple2).isPresent()); assertFalse(new Case.Case3<>((String t1) -> false, (Integer t2) -> t2.equals(2), (String t3) -> t3.equals("hello_word"), (value) -> "tuple2").test(tuple2).isPresent()); }
public static <T1, T2, T3, R> Case<Tuple3<T1, T2, T3>, R> Case(Predicate<T1> predicate1, Predicate<T2> predicate2, Predicate<T3> predicate3, Supplier<R> supplier) { return new Case.Case3<>(predicate1, predicate2, predicate3, value -> supplier.get()); }
public static <T1, T2, T3, R> Case<Tuple3<T1, T2, T3>, R> Case(Predicate<T1> predicate1, Predicate<T2> predicate2, Predicate<T3> predicate3, Function<Tuple3<T1, T2, T3>, R> fn) { return new Case.Case3<>(predicate1, predicate2, predicate3, fn); }
public static <T1, T2, T3, R> Case<Tuple3<T1, T2, T3>, R> Case(Predicate<T1> predicate1, Predicate<T2> predicate2, Predicate<T3> predicate3, Function<Tuple3<T1, T2, T3>, R> fn) { return new Case.Case3<>(predicate1, predicate2, predicate3, fn); }