@Test public void shouldProvideAllOptionalConvenience() { String of = Match("z").with( Case(t -> t.equals("a"), () -> "a"), Case(t -> t.equals("b"), () -> "b"), Case(t -> t.equals("c"), () -> "c") ).orElse("orElse"); assertEquals("orElse", of); }
@Test public void shouldMatchTheAnyOverride() { String of = Match("z").with( Case(t -> t.equals("a"), () -> "a"), Case(t -> t.equals("b"), () -> "b"), Case(t -> t.equals("c"), () -> "c"), Any(() -> "any") ); assertEquals("any", of); }
@Test public void shouldMatchSimpleObject() { Option<String> of = Match("b").with( Case(t -> t.equals("a"), () -> "a"), Case(t -> t.equals("b"), () -> "b"), Case(t -> t.equals("c"), () -> "c") ); assertTrue(of.isPresent()); Assert.assertEquals("b", of.orElse("c")); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Case<T, R> case6, Any<T, R> any) { return with(case1, case2, case3, case4, case5, case6).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Any<T, R> any) { return with(case1, case2, case3, case4).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Case<T, R> case6, Case<T, R> case7, Any<T, R> any) { return with(case1, case2, case3, case4, case5, case6, case7).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Any<T, R> any) { return with(case1, case2, case3).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Any<T, R> any) { return with(case1, case2, case3, case4, case5).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Case<T, R> case6, Case<T, R> case7, Case<T, R> case8, Any<T, R> any) { return with(case1, case2, case3, case4, case5, case6, case7, case8).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Case<T, R> case6, Case<T, R> case7, Case<T, R> case8, Any<T, R> any) { return with(case1, case2, case3, case4, case5, case6, case7, case8).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Case<T, R> case6, Any<T, R> any) { return with(case1, case2, case3, case4, case5, case6).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Any<T, R> any) { return with(case1, case2, case3, case4).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Case<T, R> case6, Case<T, R> case7, Any<T, R> any) { return with(case1, case2, case3, case4, case5, case6, case7).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Any<T, R> any) { return with(case1, case2, case3).orElseGet(() -> any.apply(value)); }
public <R> R with(Case<T, R> case1, Case<T, R> case2, Case<T, R> case3, Case<T, R> case4, Case<T, R> case5, Any<T, R> any) { return with(case1, case2, case3, case4, case5).orElseGet(() -> any.apply(value)); }
@Test public void shouldReturnTheMatch() throws Exception { assertEquals("1", sumMatching.with(Case(value, "1"), Case("2"), value -> "any")); assertEquals("2", sumMatching.with(Case("1"), Case(value, "2"), Case("3"), value -> "any")); assertEquals("3", sumMatching.with(Case("1"), Case("2"), Case(value, "3"), Case("4"), value -> "any")); assertEquals("4", sumMatching.with(Case("1"), Case("2"), Case("3"), Case(value, "4"), Case("5"), value -> "any")); assertEquals("5", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case(value, "5"), Case(value, "6"), value -> "any")); assertEquals("6", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case("5"), Case(value, "6"), value -> "any")); assertEquals("7", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case("5"), Case("6"), Case(value, "7"), Case("8"), value -> "any")); assertEquals("8", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case("5"), Case("6"), Case("7"), Case(value, "8"), value -> "any")); }
@Test public void shouldReturnAny() throws Exception { assertEquals("any", sumMatching.with(Case("1"), Case("2"), value -> "any")); assertEquals("any", sumMatching.with(Case("1"), Case("2"), Case("3"), value -> "any")); assertEquals("any", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), value -> "any")); assertEquals("any", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case("5"), value -> "any")); assertEquals("any", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case("5"), Case("6"), value -> "any")); assertEquals("any", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case("5"), Case("6"), Case("7"), value -> "any")); assertEquals("any", sumMatching.with(Case("1"), Case("2"), Case("3"), Case("4"), Case("5"), Case("6"), Case("7"), Case("8"), value -> "any")); }
@Test public void shouldSupportAnyForDeconstruct() { Dog dog = new Dog("bob", 3, "M"); Long of = Match(dog).with( Case(eq("bob"), any(), eq("F"), () -> 1L), Case(eq("bob"), eq(10), eq("F"), () -> 1L), Any(() -> 0L) ); assertEquals((Long) 0L, of); }
@Test public void shouldMatchDeconstruct3() { Dog dog = new Dog("bob", 3, "M"); Long of = Match(dog).with( Case(eq("bob"), any(), eq("F"), () -> 1L), Case(eq("not_bob"), eq(3), eq("M"), () -> 2L), Case(eq("bob"), eq(3), eq("M"), () -> 3L), Case(any(), any(), any(), () -> 4L) ).orElse(0L); assertEquals((Long) 3L, of); }
@Test public void shouldSupportThirdPartyPredicates() { String of = Match("b").with( Case(eq("a"), () -> "a"), Case(eq("b"), () -> "b"), Case(eq("c"), () -> "c") ).orElse("none"); assertEquals("b", of); }