RoutingPredicate { CharSequence name() { return name; } RoutingPredicate(CharSequence name, Predicate<T> delegate); boolean test(T t); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }
@Test void equal() { assertThat(parse("a=b b ").name()).isEqualTo("a_eq_b_b_"); }
@Test void notEqual() { assertThat(parse("a!= b b").name()).isEqualTo("a_ne__b_b"); }
@Test void contain() { assertThat(parse("a").name()).isEqualTo("a"); }
@Test void doesNotContain() { assertThat(parse("!a").name()).isEqualTo("not_a"); }
@Test void preserveSpacesInValue() { assertThat(parse("a=b").name()).isNotEqualTo(parse("a= b").name()); assertThat(parse("a= b").name()).isNotEqualTo(parse("a=b ").name()); assertThat(parse("a!= b").name()).isNotEqualTo(parse("a!=b ").name()); }
@Test void notPreserveSpacesInName() { assertThat(parse("a=b").name()).isEqualTo(parse("a =b").name()); assertThat(parse(" a=b").name()).isEqualTo(parse("a =b").name()); assertThat(parse(" a!=b").name()).isEqualTo(parse("a !=b").name()); }