mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 07:33:20 +08:00
Add test coverage of exact matching of search terms
This commit is contained in:
parent
14c95f4584
commit
1960cd0839
@ -159,6 +159,30 @@ namespace osu.Game.Tests.NonVisual.Filtering
|
||||
Assert.AreEqual(filtered, carouselItem.Filtered.Value);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[TestCase("\"artist\"", false)]
|
||||
[TestCase("\"arti\"", true)]
|
||||
[TestCase("\"artist title author\"", true)]
|
||||
[TestCase("\"artist\" \"title\" \"author\"", false)]
|
||||
[TestCase("\"an artist\"", true)]
|
||||
[TestCase("\"tags too\"", false)]
|
||||
[TestCase("\"tags to\"", true)]
|
||||
[TestCase("\"version\"", false)]
|
||||
[TestCase("\"an auteur\"", true)]
|
||||
public void TestCriteriaMatchingExactTerms(string terms, bool filtered)
|
||||
{
|
||||
var exampleBeatmapInfo = getExampleBeatmap();
|
||||
var criteria = new FilterCriteria
|
||||
{
|
||||
Ruleset = new RulesetInfo { OnlineID = 6 },
|
||||
AllowConvertedBeatmaps = true,
|
||||
SearchText = terms
|
||||
};
|
||||
var carouselItem = new CarouselBeatmap(exampleBeatmapInfo);
|
||||
carouselItem.Filter(criteria);
|
||||
Assert.AreEqual(filtered, carouselItem.Filtered.Value);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[TestCase("", false)]
|
||||
[TestCase("The", false)]
|
||||
|
@ -23,6 +23,31 @@ namespace osu.Game.Tests.NonVisual.Filtering
|
||||
Assert.AreEqual(4, filterCriteria.SearchTerms.Length);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestApplyQueriesBareWordsWithExactMatch()
|
||||
{
|
||||
const string query = "looking for \"a beatmap\" like \"this\"";
|
||||
var filterCriteria = new FilterCriteria();
|
||||
FilterQueryParser.ApplyQueries(filterCriteria, query);
|
||||
Assert.AreEqual("looking for \"a beatmap\" like \"this\"", filterCriteria.SearchText);
|
||||
Assert.AreEqual(5, filterCriteria.SearchTerms.Length);
|
||||
|
||||
Assert.That(filterCriteria.SearchTerms[0].SearchTerm, Is.EqualTo("a beatmap"));
|
||||
Assert.That(filterCriteria.SearchTerms[0].Exact, Is.True);
|
||||
|
||||
Assert.That(filterCriteria.SearchTerms[1].SearchTerm, Is.EqualTo("this"));
|
||||
Assert.That(filterCriteria.SearchTerms[1].Exact, Is.True);
|
||||
|
||||
Assert.That(filterCriteria.SearchTerms[2].SearchTerm, Is.EqualTo("looking"));
|
||||
Assert.That(filterCriteria.SearchTerms[2].Exact, Is.False);
|
||||
|
||||
Assert.That(filterCriteria.SearchTerms[3].SearchTerm, Is.EqualTo("for"));
|
||||
Assert.That(filterCriteria.SearchTerms[3].Exact, Is.False);
|
||||
|
||||
Assert.That(filterCriteria.SearchTerms[4].SearchTerm, Is.EqualTo("like"));
|
||||
Assert.That(filterCriteria.SearchTerms[4].Exact, Is.False);
|
||||
}
|
||||
|
||||
/*
|
||||
* The following tests have been written a bit strangely (they don't check exact
|
||||
* bound equality with what the filter says).
|
||||
@ -235,6 +260,7 @@ namespace osu.Game.Tests.NonVisual.Filtering
|
||||
Assert.AreEqual("find me songs by please", filterCriteria.SearchText.Trim());
|
||||
Assert.AreEqual(5, filterCriteria.SearchTerms.Length);
|
||||
Assert.AreEqual("singer", filterCriteria.Artist.SearchTerm);
|
||||
Assert.That(filterCriteria.Artist.Exact, Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@ -246,6 +272,7 @@ namespace osu.Game.Tests.NonVisual.Filtering
|
||||
Assert.AreEqual("really like yes", filterCriteria.SearchText.Trim());
|
||||
Assert.AreEqual(3, filterCriteria.SearchTerms.Length);
|
||||
Assert.AreEqual("name with space", filterCriteria.Artist.SearchTerm);
|
||||
Assert.That(filterCriteria.Artist.Exact, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
Loading…
Reference in New Issue
Block a user