mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
Fix multi-word type matching in card filters (#6060)
* Fix multi-word type matching in card filters Add phrase matching to StringValue before word-based fallback. Enables searches like t:"time lord" for multi-word creature types. * Use existing typedef * Don't inline lambda * update filter func * Update card type FilterString unit tests * refactor string matcher * update card db test * fix sets count in test * Add regex cache in string matcher * Update cockatrice/src/game/filters/filter_string.cpp * Revert "Add regex cache in string matcher" --------- Co-authored-by: RickyRister <42636155+RickyRister@users.noreply.github.com>
This commit is contained in:
parent
ba794c2b60
commit
5e88a0f0cc
4 changed files with 36 additions and 6 deletions
|
|
@ -18,8 +18,8 @@ TEST(CardDatabaseTest, LoadXml)
|
|||
|
||||
// load dummy cards and test result
|
||||
db->loadCardDatabases();
|
||||
ASSERT_EQ(8, db->getCardList().size()) << "Wrong card count after load";
|
||||
ASSERT_EQ(4, db->getSetList().size()) << "Wrong sets count after load";
|
||||
ASSERT_EQ(9, db->getCardList().size()) << "Wrong card count after load";
|
||||
ASSERT_EQ(5, db->getSetList().size()) << "Wrong sets count after load";
|
||||
ASSERT_EQ(3, db->getAllMainCardTypes().size()) << "Wrong types count after load";
|
||||
ASSERT_EQ(Ok, db->getLoadStatus()) << "Wrong status after load";
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<colors>G</colors>
|
||||
<manacost>2G</manacost>
|
||||
<cmc>2</cmc>
|
||||
<type>Creature</type>
|
||||
<type>Creature — Cat</type>
|
||||
<maintype>Creature</maintype>
|
||||
<pt>3/3</pt>
|
||||
</prop>
|
||||
|
|
@ -26,7 +26,22 @@
|
|||
<colors>R</colors>
|
||||
<manacost>2RR</manacost>
|
||||
<cmc>4</cmc>
|
||||
<type>Creature</type>
|
||||
<type>Creature — Dog</type>
|
||||
<maintype>Creature</maintype>
|
||||
<pt>4/4</pt>
|
||||
</prop>
|
||||
</card>
|
||||
<card>
|
||||
<name>Doctor</name>
|
||||
<set>WHO</set>
|
||||
<tablerow>0</tablerow>
|
||||
<text>Why did wizards introduce two-word creature types</text>
|
||||
<prop>
|
||||
<muid>222</muid>
|
||||
<colors>R</colors>
|
||||
<manacost>2RR</manacost>
|
||||
<cmc>4</cmc>
|
||||
<type>Creature — Human Time Lord Doctor</type>
|
||||
<maintype>Creature</maintype>
|
||||
<pt>4/4</pt>
|
||||
</prop>
|
||||
|
|
|
|||
|
|
@ -21,12 +21,14 @@ protected:
|
|||
cat = CardDatabaseManager::getInstance()->getCardBySimpleName("Cat");
|
||||
notDeadAfterAll = CardDatabaseManager::getInstance()->getCardBySimpleName("Not Dead");
|
||||
truth = CardDatabaseManager::getInstance()->getCardBySimpleName("Truth");
|
||||
doctor = CardDatabaseManager::getInstance()->getCardBySimpleName("Doctor");
|
||||
}
|
||||
// void TearDown() override {}
|
||||
|
||||
CardData cat;
|
||||
CardData notDeadAfterAll;
|
||||
CardData truth;
|
||||
CardData doctor;
|
||||
};
|
||||
|
||||
QUERY(Empty, cat, "", true)
|
||||
|
|
@ -34,6 +36,9 @@ QUERY(Typing, cat, "t", true)
|
|||
|
||||
QUERY(NonMatchingType, cat, "t:kithkin", false)
|
||||
QUERY(MatchingType, cat, "t:creature", true)
|
||||
QUERY(MatchingCreatureType, cat, "t:cat", true)
|
||||
QUERY(PartialMatchingType, cat, "t:ca", false)
|
||||
QUERY(MatchingMultiWordType, doctor, "t:\"Time Lord\"", true)
|
||||
QUERY(Not1, cat, "NOT t:kithkin", true)
|
||||
QUERY(Not2, cat, "NOT t:creature", false)
|
||||
QUERY(NonKeyword1, cat, "not t:kithkin", false)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue