X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=test%2Fjalview%2Fdatamodel%2Ffeatures%2FFeatureMatcherTest.java;h=117b6e9355596fdc4b5f58324be414df3a8741ff;hb=ca160187a050f6d4e50158cd5b51f75c83a7179e;hp=4bd34cbf0997d570893074d786b6885f2f333fd0;hpb=7810a4a86cf5c344971dc1c834ac2227192badc2;p=jalview.git diff --git a/test/jalview/datamodel/features/FeatureMatcherTest.java b/test/jalview/datamodel/features/FeatureMatcherTest.java index 4bd34cb..117b6e9 100644 --- a/test/jalview/datamodel/features/FeatureMatcherTest.java +++ b/test/jalview/datamodel/features/FeatureMatcherTest.java @@ -1,3 +1,23 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.datamodel.features; import static org.testng.Assert.assertEquals; @@ -6,14 +26,17 @@ import static org.testng.Assert.assertNull; import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; -import jalview.datamodel.SequenceFeature; -import jalview.util.MessageManager; -import jalview.util.matcher.Condition; - import java.util.Locale; import org.testng.annotations.Test; +import jalview.datamodel.SequenceFeature; +import jalview.util.MessageManager; +import jalview.util.matcher.Condition; +import jalview.util.matcher.Matcher; +import jalview.util.matcher.MatcherI; +import junit.extensions.PA; + public class FeatureMatcherTest { @Test(groups = "Functional") @@ -95,8 +118,8 @@ public class FeatureMatcherTest /* * a numeric matcher - MatcherTest covers more conditions */ - FeatureMatcherI fm = FeatureMatcher - .byAttribute(Condition.GE, "-2", "AF"); + FeatureMatcherI fm = FeatureMatcher.byAttribute(Condition.GE, "-2", + "AF"); SequenceFeature sf = new SequenceFeature("Cath", "desc", 11, 12, "grp"); assertFalse(fm.matches(sf)); sf.setValue("AF", "foobar"); @@ -222,7 +245,7 @@ public class FeatureMatcherTest FeatureMatcherI fm = FeatureMatcher.byAttribute(Condition.GE, "-2f", "AF"); assertEquals(fm.getMatcher().getCondition(), Condition.GE); - assertEquals(fm.getMatcher().getFloatValue(), -2F); + assertEquals(PA.getValue(fm.getMatcher(), "floatValue"), -2F); assertEquals(fm.getMatcher().getPattern(), "-2.0"); } @@ -233,71 +256,88 @@ public class FeatureMatcherTest assertFalse(fm.isByLabel()); assertFalse(fm.isByScore()); assertEquals(fm.getAttribute(), new String[] { "AF" }); - assertSame(Condition.LT, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getFloatValue(), 1.2f); - assertEquals(fm.getMatcher().getPattern(), "1.2"); + MatcherI matcher = fm.getMatcher(); + assertSame(Condition.LT, matcher.getCondition()); + assertEquals(PA.getValue(matcher, "floatValue"), 1.2f); + assertSame(PA.getValue(matcher, "patternType"), + Matcher.PatternType.Float); + assertEquals(matcher.getPattern(), "1.2"); // quotes are optional, condition is not case sensitive fm = FeatureMatcher.fromString("AF lt '1.2'"); + matcher = fm.getMatcher(); assertFalse(fm.isByLabel()); assertFalse(fm.isByScore()); assertEquals(fm.getAttribute(), new String[] { "AF" }); - assertSame(Condition.LT, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getFloatValue(), 1.2f); - assertEquals(fm.getMatcher().getPattern(), "1.2"); + assertSame(Condition.LT, matcher.getCondition()); + assertEquals(PA.getValue(matcher, "floatValue"), 1.2F); + assertEquals(matcher.getPattern(), "1.2"); fm = FeatureMatcher.fromString("'AF' Present"); + matcher = fm.getMatcher(); assertFalse(fm.isByLabel()); assertFalse(fm.isByScore()); assertEquals(fm.getAttribute(), new String[] { "AF" }); - assertSame(Condition.Present, fm.getMatcher().getCondition()); + assertSame(Condition.Present, matcher.getCondition()); + assertSame(PA.getValue(matcher, "patternType"), + Matcher.PatternType.String); fm = FeatureMatcher.fromString("CSQ:Consequence contains damaging"); + matcher = fm.getMatcher(); assertFalse(fm.isByLabel()); assertFalse(fm.isByScore()); assertEquals(fm.getAttribute(), new String[] { "CSQ", "Consequence" }); - assertSame(Condition.Contains, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getPattern(), "damaging"); + assertSame(Condition.Contains, matcher.getCondition()); + assertEquals(matcher.getPattern(), "damaging"); // keyword Label is not case sensitive fm = FeatureMatcher.fromString("LABEL Matches 'foobar'"); + matcher = fm.getMatcher(); assertTrue(fm.isByLabel()); assertFalse(fm.isByScore()); assertNull(fm.getAttribute()); - assertSame(Condition.Matches, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getPattern(), "foobar"); + assertSame(Condition.Matches, matcher.getCondition()); + assertEquals(matcher.getPattern(), "foobar"); fm = FeatureMatcher.fromString("'Label' matches 'foo bar'"); + matcher = fm.getMatcher(); assertTrue(fm.isByLabel()); assertFalse(fm.isByScore()); assertNull(fm.getAttribute()); - assertSame(Condition.Matches, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getPattern(), "foo bar"); + assertSame(Condition.Matches, matcher.getCondition()); + assertEquals(matcher.getPattern(), "foo bar"); // quotes optional on pattern fm = FeatureMatcher.fromString("'Label' matches foo bar"); + matcher = fm.getMatcher(); assertTrue(fm.isByLabel()); assertFalse(fm.isByScore()); assertNull(fm.getAttribute()); - assertSame(Condition.Matches, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getPattern(), "foo bar"); + assertSame(Condition.Matches, matcher.getCondition()); + assertEquals(matcher.getPattern(), "foo bar"); - fm = FeatureMatcher.fromString("Score GE 12.2"); + // integer condition + fm = FeatureMatcher.fromString("Score GE 12"); + matcher = fm.getMatcher(); assertFalse(fm.isByLabel()); assertTrue(fm.isByScore()); assertNull(fm.getAttribute()); - assertSame(Condition.GE, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getPattern(), "12.2"); - assertEquals(fm.getMatcher().getFloatValue(), 12.2f); + assertSame(Condition.GE, matcher.getCondition()); + assertEquals(matcher.getPattern(), "12"); + assertEquals(PA.getValue(matcher, "floatValue"), 0f); + assertEquals(PA.getValue(matcher, "longValue"), 12L); + assertSame(PA.getValue(matcher, "patternType"), + Matcher.PatternType.Integer); // keyword Score is not case sensitive fm = FeatureMatcher.fromString("'SCORE' ge '12.2'"); + matcher = fm.getMatcher(); assertFalse(fm.isByLabel()); assertTrue(fm.isByScore()); assertNull(fm.getAttribute()); - assertSame(Condition.GE, fm.getMatcher().getCondition()); - assertEquals(fm.getMatcher().getPattern(), "12.2"); - assertEquals(fm.getMatcher().getFloatValue(), 12.2f); + assertSame(Condition.GE, matcher.getCondition()); + assertEquals(matcher.getPattern(), "12.2"); + assertEquals(PA.getValue(matcher, "floatValue"), 12.2F); // invalid numeric pattern assertNull(FeatureMatcher.fromString("Score eq twelve"));