diff --git a/osu.Game.Rulesets.Mania.Tests/ManiaFilterCriteriaTest.cs b/osu.Game.Rulesets.Mania.Tests/ManiaFilterCriteriaTest.cs index 24da447482..a7686c7320 100644 --- a/osu.Game.Rulesets.Mania.Tests/ManiaFilterCriteriaTest.cs +++ b/osu.Game.Rulesets.Mania.Tests/ManiaFilterCriteriaTest.cs @@ -175,7 +175,7 @@ namespace osu.Game.Rulesets.Mania.Tests } [TestCase] - public void TestInvalidFilters() + public void TestInvalidKeysFilters() { var criteria = new ManiaFilterCriteria(); @@ -183,5 +183,227 @@ namespace osu.Game.Rulesets.Mania.Tests Assert.False(criteria.TryParseCustomKeywordCriteria("keys", Operator.NotEqual, "4,some text")); Assert.False(criteria.TryParseCustomKeywordCriteria("keys", Operator.GreaterOrEqual, "4,5,6")); } + + [TestCase] + public void TestLnsEqualSingleValue() + { + var criteria = new ManiaFilterCriteria(); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Equal, "50"); + BeatmapInfo beatmapInfo1 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 50 + }; + Assert.True(criteria.Matches(beatmapInfo1, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Equal, "0"); + BeatmapInfo beatmapInfo2 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 0, + EndTimeObjectCount = 0 + }; + Assert.True(criteria.Matches(beatmapInfo2, new FilterCriteria())); + + BeatmapInfo beatmapInfo3 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 0 + }; + Assert.True(criteria.Matches(beatmapInfo3, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Equal, "1"); + BeatmapInfo beatmapInfo4 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 1 + }; + Assert.True(criteria.Matches(beatmapInfo4, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Equal, "100"); + BeatmapInfo beatmapInfo5 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 100 + }; + Assert.True(criteria.Matches(beatmapInfo5, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Equal, "0.1"); + BeatmapInfo beatmapInfo6 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 1000, + EndTimeObjectCount = 1 + }; + Assert.True(criteria.Matches(beatmapInfo6, new FilterCriteria())); + } + + [TestCase] + public void TestLnsNotEqual() + { + var criteria = new ManiaFilterCriteria(); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.NotEqual, "50"); + BeatmapInfo beatmapInfo1 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 50 + }; + Assert.False(criteria.Matches(beatmapInfo1, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.NotEqual, "0"); + BeatmapInfo beatmapInfo2 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 0, + EndTimeObjectCount = 0 + }; + Assert.False(criteria.Matches(beatmapInfo2, new FilterCriteria())); + + BeatmapInfo beatmapInfo3 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 0 + }; + Assert.False(criteria.Matches(beatmapInfo3, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.NotEqual, "1"); + BeatmapInfo beatmapInfo4 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 1 + }; + Assert.False(criteria.Matches(beatmapInfo4, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.NotEqual, "100"); + BeatmapInfo beatmapInfo5 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 100 + }; + Assert.False(criteria.Matches(beatmapInfo5, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.NotEqual, "0.1"); + BeatmapInfo beatmapInfo6 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 1000, + EndTimeObjectCount = 1 + }; + Assert.False(criteria.Matches(beatmapInfo6, new FilterCriteria())); + } + + [TestCase] + public void TestLnsGreaterOrEqual() + { + var criteria = new ManiaFilterCriteria(); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.GreaterOrEqual, "50"); + BeatmapInfo beatmapInfo1 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 50 + }; + Assert.True(criteria.Matches(beatmapInfo1, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.GreaterOrEqual, "0"); + BeatmapInfo beatmapInfo2 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 0, + EndTimeObjectCount = 0 + }; + Assert.True(criteria.Matches(beatmapInfo2, new FilterCriteria())); + + BeatmapInfo beatmapInfo3 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 0 + }; + Assert.True(criteria.Matches(beatmapInfo3, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.GreaterOrEqual, "1"); + BeatmapInfo beatmapInfo4 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 1 + }; + Assert.True(criteria.Matches(beatmapInfo4, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.GreaterOrEqual, "100"); + BeatmapInfo beatmapInfo5 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 100 + }; + Assert.True(criteria.Matches(beatmapInfo5, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.GreaterOrEqual, "0.1"); + BeatmapInfo beatmapInfo6 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 1000, + EndTimeObjectCount = 1 + }; + Assert.True(criteria.Matches(beatmapInfo6, new FilterCriteria())); + } + + [TestCase] + public void TestLnsGreater() + { + var criteria = new ManiaFilterCriteria(); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Greater, "49"); + BeatmapInfo beatmapInfo1 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 50 + }; + Assert.True(criteria.Matches(beatmapInfo1, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Greater, "0"); + BeatmapInfo beatmapInfo2 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 0, + EndTimeObjectCount = 0 + }; + Assert.False(criteria.Matches(beatmapInfo2, new FilterCriteria())); + + BeatmapInfo beatmapInfo3 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 0 + }; + Assert.False(criteria.Matches(beatmapInfo3, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Greater, "0.5"); + BeatmapInfo beatmapInfo4 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 1 + }; + Assert.True(criteria.Matches(beatmapInfo4, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Greater, "99"); + BeatmapInfo beatmapInfo5 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 100, + EndTimeObjectCount = 100 + }; + Assert.True(criteria.Matches(beatmapInfo5, new FilterCriteria())); + + criteria.TryParseCustomKeywordCriteria("lns", Operator.Greater, "0.01"); + BeatmapInfo beatmapInfo6 = new BeatmapInfo(new ManiaRuleset().RulesetInfo) + { + TotalObjectCount = 1000, + EndTimeObjectCount = 1 + }; + Assert.True(criteria.Matches(beatmapInfo6, new FilterCriteria())); + } + + [TestCase] + public void TestInvalidLnsFilters() + { + var criteria = new ManiaFilterCriteria(); + + Assert.False(criteria.TryParseCustomKeywordCriteria("lns", Operator.Equal, "some text")); + Assert.False(criteria.TryParseCustomKeywordCriteria("lns", Operator.NotEqual, "50,some text")); + Assert.False(criteria.TryParseCustomKeywordCriteria("lns", Operator.GreaterOrEqual, "1some text")); + } } }