set collection

This commit is contained in:
sdine
2026-07-23 08:50:38 +02:00
parent 8a89e79e43
commit 7e03f4d8d5
9 changed files with 417 additions and 36 deletions
@@ -119,6 +119,54 @@ TEST_SUITE("computeDigiBattle99SetCompletion") {
};
CHECK(computeDigiBattle99SetCompletion(collection, catalog).empty());
}
TEST_CASE("language filter hides packs with no cards in that language") {
const auto catalog = sampleCatalog();
DigiBattle99Card en =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-01");
en.language = Language::English;
const auto allRows = computeDigiBattle99SetCompletion({en}, catalog);
REQUIRE(allRows.size() == 1);
const auto deRows =
computeDigiBattle99SetCompletion({en}, catalog, Language::German);
CHECK(deRows.empty());
const auto enRows =
computeDigiBattle99SetCompletion({en}, catalog, Language::English);
REQUIRE(enRows.size() == 1);
CHECK(enRows[0].ownedUnique == 1);
}
TEST_CASE("same setNo in two languages counts once aggregated; filter is exclusive") {
const auto catalog = sampleCatalog();
DigiBattle99Card en =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-01");
en.language = Language::English;
DigiBattle99Card de =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-01");
de.id = 2;
de.language = Language::German;
const auto allRows = computeDigiBattle99SetCompletion({en, de}, catalog);
REQUIRE(allRows.size() == 1);
CHECK(allRows[0].ownedUnique == 1);
const auto enRows =
computeDigiBattle99SetCompletion({en, de}, catalog, Language::English);
REQUIRE(enRows.size() == 1);
CHECK(enRows[0].ownedUnique == 1);
DigiBattle99Card deOnly =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-02");
deOnly.id = 3;
deOnly.language = Language::German;
const auto deRows = computeDigiBattle99SetCompletion({en, de, deOnly}, catalog,
Language::German);
REQUIRE(deRows.size() == 1);
CHECK(deRows[0].ownedUnique == 2);
}
}
TEST_SUITE("digiBattle99ChecklistForSet") {
@@ -142,6 +190,57 @@ TEST_SUITE("digiBattle99ChecklistForSet") {
const auto catalog = sampleCatalog();
CHECK(digiBattle99ChecklistForSet({}, catalog, "missing").empty());
}
TEST_CASE("owned flags respect language filter") {
const auto catalog = sampleCatalog();
DigiBattle99Card en =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-02");
en.language = Language::English;
const auto filtered =
digiBattle99ChecklistForSet({en}, catalog, "series-1-starter-set",
Language::German);
REQUIRE(filtered.size() == 3);
CHECK(filtered[0].owned == false);
CHECK(filtered[1].owned == false);
CHECK(filtered[2].owned == false);
const auto english =
digiBattle99ChecklistForSet({en}, catalog, "series-1-starter-set",
Language::English);
REQUIRE(english.size() == 3);
CHECK(english[1].owned == true);
}
}
TEST_SUITE("digiBattle99LanguagesInCollection") {
TEST_CASE("empty collection yields empty") {
CHECK(digiBattle99LanguagesInCollection({}).empty());
}
TEST_CASE("returns distinct languages in allLanguages order") {
DigiBattle99Card jp =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-01");
jp.language = Language::Japanese;
DigiBattle99Card en =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-02");
en.id = 2;
en.language = Language::English;
DigiBattle99Card enDup =
makeOwned("series-1-booster-pack", "Series 1 Booster Pack", "BO-01");
enDup.id = 3;
enDup.language = Language::English;
DigiBattle99Card de =
makeOwned("series-1-starter-set", "Series 1 Starter Set", "ST-03");
de.id = 4;
de.language = Language::German;
const auto langs = digiBattle99LanguagesInCollection({jp, en, enDup, de});
REQUIRE(langs.size() == 3);
CHECK(langs[0] == Language::English);
CHECK(langs[1] == Language::German);
CHECK(langs[2] == Language::Japanese);
}
}
TEST_SUITE("DigiBattle99SetCatalogService") {