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;
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;
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());
+ }
}