[Card] Add a Tag attribute to the card filter tree

This commit is contained in:
Lukas Brübach 2026-09-21 13:21:00 +02:00
parent 9f19512ff0
commit 0929d02b26
5 changed files with 35 additions and 0 deletions

View file

@ -15,6 +15,7 @@
#include <libcockatrice/card/database/card_database_manager.h>
#include <libcockatrice/card/printing/printing_info.h>
#include <libcockatrice/filters/filter_string.h>
#include <libcockatrice/filters/filter_tree.h>
#include <libcockatrice/interfaces/noop_card_preference_provider.h>
#include <libcockatrice/interfaces/noop_card_set_priority_controller.h>
#include <string>
@ -220,6 +221,23 @@ TEST_F(CardQuery, TagQueryTreatsCommasAsPartOfTheSlug)
ASSERT_FALSE(FilterString("tags:ramp,removal").check(tagged));
}
TEST_F(CardQuery, FilterTreeTagAttribute)
{
const CardData tagged = taggedCard();
FilterTree matching;
matching.termNode(CardFilter::AttrTag, CardFilter::TypeAnd, "ramp");
ASSERT_TRUE(matching.acceptsCard(tagged, CardSearchLanguage{}));
FilterTree partial;
partial.termNode(CardFilter::AttrTag, CardFilter::TypeAnd, "ram");
ASSERT_FALSE(partial.acceptsCard(tagged, CardSearchLanguage{}));
FilterTree missing;
missing.termNode(CardFilter::AttrTag, CardFilter::TypeAnd, "squirrel");
ASSERT_FALSE(missing.acceptsCard(tagged, CardSearchLanguage{}));
}
TEST_F(CardQuery, TagQueryFalseWhenCardHasNoTags)
{
ASSERT_FALSE(FilterString("tags:ramp").check(cat));