JAL-3020 cache selected attribute terms for filter value drop-down
[jalview.git] / test / jalview / datamodel / features / FeatureAttributesTest.java
index 0846ec2..ff4cd53 100644 (file)
@@ -1,6 +1,7 @@
 package jalview.datamodel.features;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 
@@ -9,7 +10,9 @@ import jalview.datamodel.features.FeatureAttributes.Datatype;
 
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
@@ -130,4 +133,32 @@ public class FeatureAttributesTest
     assertEquals(fa.getDatatype("Pfam", "domain"), Datatype.Character);
     assertEquals(fa.getDatatype("Pfam", "phase"), Datatype.Mixed);
   }
+
+  @Test(groups = "Functional")
+  public void testGetFieldMatchers()
+  {
+    // providing a junk property key to ensure the default is used
+    List<Pattern> matchers = FeatureAttributes.getFieldMatchers("^%!",
+            ".*,ABC?,CLIN_SIG,CSQ:P.*");
+    assertEquals(matchers.size(), 4);
+
+    // first pattern .* matches anything
+    assertTrue(matchers.get(0).matcher("xyz").matches());
+
+    // second ABC? matches AB or ABC, not case-sensitive
+    assertTrue(matchers.get(1).matcher("ABC").matches());
+    assertTrue(matchers.get(1).matcher("abc").matches());
+    assertFalse(matchers.get(1).matcher("abc2").matches());
+    assertFalse(matchers.get(1).matcher("xab").matches());
+    assertFalse(matchers.get(1).matcher("xabc").matches());
+
+    // third matches CLIN_SIG
+    assertTrue(matchers.get(2).matcher("CLIN_SIG").matches());
+    assertTrue(matchers.get(2).matcher("clin_sig").matches());
+
+    // fourth matches CSQ:P followed by any characters (or none)
+    assertTrue(matchers.get(3).matcher("CSQ:P").matches());
+    assertTrue(matchers.get(3).matcher("csq:peter").matches());
+    assertFalse(matchers.get(3).matcher("CSQ:Blue Peter").matches());
+  }
 }