1 package jalview.util.matcher;
3 import static org.testng.Assert.assertEquals;
4 import static org.testng.Assert.assertFalse;
5 import static org.testng.Assert.assertTrue;
7 import java.util.function.Function;
9 import org.testng.annotations.Test;
11 public class KeyedMatcherSetTest
14 public void testMatches()
17 * a numeric matcher - MatcherTest covers more conditions
19 KeyedMatcherI km = new KeyedMatcher("AF", Condition.GE, -2F);
20 KeyedMatcherSetI kms = new KeyedMatcherSet();
22 assertTrue(kms.matches(key -> "-2"));
23 assertTrue(kms.matches(key -> "-1"));
24 assertFalse(kms.matches(key -> "-3"));
25 assertFalse(kms.matches(key -> ""));
26 assertFalse(kms.matches(key -> "junk"));
27 assertFalse(kms.matches(key -> null));
30 * a string pattern matcher
32 km = new KeyedMatcher("AF", Condition.Contains, "Cat");
33 kms = new KeyedMatcherSet();
36 .matches(key -> "AF".equals(key) ? "raining cats and dogs"
43 // condition1: AF value contains "dog" (matches)
44 KeyedMatcherI km1 = new KeyedMatcher("AF", Condition.Contains, "dog");
45 // condition 2: CSQ value does not contain "how" (does not match)
46 KeyedMatcherI km2 = new KeyedMatcher("CSQ", Condition.NotContains,
49 Function<String, String> vp = key -> "AF".equals(key) ? "raining cats and dogs"
51 assertTrue(km1.matches(vp));
52 assertFalse(km2.matches(vp));
54 KeyedMatcherSetI kms = new KeyedMatcherSet();
55 assertTrue(kms.matches(vp)); // if no conditions, then 'all' pass
57 assertTrue(kms.matches(vp));
59 assertFalse(kms.matches(vp));
63 public void testToString()
65 KeyedMatcherI km1 = new KeyedMatcher("AF", Condition.LT, 1.2f);
66 assertEquals(km1.toString(), "AF < 1.2");
68 KeyedMatcher km2 = new KeyedMatcher("CLIN_SIG", Condition.NotContains, "path");
69 assertEquals(km2.toString(), "CLIN_SIG Does not contain PATH");
74 KeyedMatcherSetI kms = new KeyedMatcherSet();
75 assertEquals(kms.toString(), "");
77 assertEquals(kms.toString(), "(AF < 1.2)");
79 assertEquals(kms.toString(),
80 "(AF < 1.2) AND (CLIN_SIG Does not contain PATH)");
85 kms = new KeyedMatcherSet();
86 assertEquals(kms.toString(), "");
88 assertEquals(kms.toString(), "(AF < 1.2)");
90 assertEquals(kms.toString(),
91 "(AF < 1.2) OR (CLIN_SIG Does not contain PATH)");
97 // condition1: AF value contains "dog" (matches)
98 KeyedMatcherI km1 = new KeyedMatcher("AF", Condition.Contains, "dog");
99 // condition 2: CSQ value does not contain "how" (does not match)
100 KeyedMatcherI km2 = new KeyedMatcher("CSQ", Condition.NotContains,
103 Function<String, String> vp = key -> "AF".equals(key) ? "raining cats and dogs"
105 assertTrue(km1.matches(vp));
106 assertFalse(km2.matches(vp));
108 KeyedMatcherSetI kms = new KeyedMatcherSet();
110 assertFalse(kms.matches(vp));
112 assertTrue(kms.matches(vp));
116 public void testIsEmpty()
118 KeyedMatcherI km = new KeyedMatcher("AF", Condition.GE, -2F);
119 KeyedMatcherSetI kms = new KeyedMatcherSet();
120 assertTrue(kms.isEmpty());
122 assertFalse(kms.isEmpty());