mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-13 05:20:00 -08:00
Add regression tests for all fifteen Essence symbols and native XML properties
This commit is contained in:
parent
9dc118137d
commit
cc47009198
1 changed files with 57 additions and 0 deletions
57
tests/essence_types_test.cpp
Normal file
57
tests/essence_types_test.cpp
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <libcockatrice/card/card_info.h>
|
||||
#include <libcockatrice/card/essence_types.h>
|
||||
|
||||
#include <QHash>
|
||||
#include <QString>
|
||||
|
||||
TEST(EssenceTypesTest, HasExactlyFifteenCanonicalSymbols)
|
||||
{
|
||||
EXPECT_EQ(Essence::symbols(), QStringLiteral("MSOGEAQCBRLVTPN"));
|
||||
EXPECT_EQ(Essence::symbols().size(), 15);
|
||||
EXPECT_TRUE(Essence::isSymbol(QChar('N'))); // N is colorless.
|
||||
EXPECT_FALSE(Essence::isSymbol(QChar('W'))); // MTG white is not Essence.
|
||||
EXPECT_FALSE(Essence::isSymbol(QChar('U'))); // MTG blue is not Essence.
|
||||
}
|
||||
|
||||
TEST(EssenceTypesTest, ParsesAllBracedAndUnbracedTypes)
|
||||
{
|
||||
const QString raw = QStringLiteral("{M}{S}{O}{G}{E}{A}{Q}{C}{B}{R}{L}{V}{T}{P}{N}");
|
||||
EXPECT_EQ(Essence::parseCost(raw).join(QString()), Essence::symbols());
|
||||
EXPECT_EQ(Essence::parseCost(QStringLiteral("MSN")).join(QString()), QStringLiteral("MSN"));
|
||||
EXPECT_EQ(Essence::parseCost(QStringLiteral("{2}{N}{M}")).join(QStringLiteral("|")),
|
||||
QStringLiteral("2|N|M"));
|
||||
}
|
||||
|
||||
TEST(EssenceTypesTest, RejectsUnknownLegacyAndHybridCodes)
|
||||
{
|
||||
EXPECT_TRUE(Essence::parseCost(QStringLiteral("{W}{U}{Z}{M/N}")).isEmpty());
|
||||
EXPECT_EQ(Essence::parseCost(QStringLiteral("{N}")), QStringList{QStringLiteral("N")});
|
||||
}
|
||||
|
||||
TEST(EssenceTypesTest, NormalizesUniqueIdentityInCanonicalOrder)
|
||||
{
|
||||
EXPECT_EQ(Essence::normalizeIdentity(QStringLiteral("NSSMMO")), QStringLiteral("MSON"));
|
||||
EXPECT_EQ(Essence::normalizeIdentity(QStringLiteral("N")), QStringLiteral("N"));
|
||||
EXPECT_EQ(Essence::normalizeIdentity(QStringLiteral("WU")), QString());
|
||||
}
|
||||
|
||||
TEST(EssenceTypesTest, NativePropertiesTakePrecedenceOverLegacyFallbacks)
|
||||
{
|
||||
const QHash<QString, QString> props = {
|
||||
{QStringLiteral("essencecost"), QStringLiteral("{M}{N}")},
|
||||
{QStringLiteral("essence"), QStringLiteral("NM")},
|
||||
{QStringLiteral("essencevalue"), QStringLiteral("2")},
|
||||
{QStringLiteral("manacost"), QStringLiteral("{W}{U}")},
|
||||
{QStringLiteral("colors"), QStringLiteral("WU")},
|
||||
{QStringLiteral("cmc"), QStringLiteral("9")}
|
||||
};
|
||||
|
||||
const CardInfoPtr card = CardInfo::newInstance(QStringLiteral("Essence Test"),
|
||||
QString(), false, props, {}, {}, {}, {});
|
||||
ASSERT_TRUE(card);
|
||||
EXPECT_EQ(card->getManaCost(), QStringLiteral("{M}{N}"));
|
||||
EXPECT_EQ(card->getEssenceTypes(), QStringLiteral("MN"));
|
||||
EXPECT_EQ(card->getColors(), QStringLiteral("MN"));
|
||||
EXPECT_EQ(card->getCmc(), QStringLiteral("2"));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue