mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 09:33:25 -08:00
Cover merge printing preservation with a test
Base deck with 4 Mountain (DOM 250), local adds 2 Shock (M19 156), remote adds an unrelated card. Asserts the merge keeps one Mountain node with its printing and adds a single Shock node carrying M19/156.
This commit is contained in:
parent
507a80f0b2
commit
0c6d64c565
1 changed files with 44 additions and 0 deletions
|
|
@ -35,6 +35,17 @@ int countOf(const DeckList &deck, const char *zone, const char *name)
|
||||||
});
|
});
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<DecklistCardNode *> nodesOf(const DeckList &deck, const char *zone, const char *name)
|
||||||
|
{
|
||||||
|
QList<DecklistCardNode *> nodes;
|
||||||
|
deck.forEachCard([&](InnerDecklistNode *zoneNode, DecklistCardNode *card) {
|
||||||
|
if (zoneNode->getName() == zone && card->getName() == name) {
|
||||||
|
nodes.append(card);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return nodes;
|
||||||
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
TEST(DeckDiffTest, IdenticalDecksHaveEmptyDiff)
|
TEST(DeckDiffTest, IdenticalDecksHaveEmptyDiff)
|
||||||
|
|
@ -130,6 +141,39 @@ TEST(DeckDiffTest, MergeKeepsBaseMetadata)
|
||||||
EXPECT_EQ(countOf(merged, "main", "Shock"), 1);
|
EXPECT_EQ(countOf(merged, "main", "Shock"), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(DeckDiffTest, MergePreservesBasePrintingAndCollapsesNodes)
|
||||||
|
{
|
||||||
|
DeckList base;
|
||||||
|
base.addCard("Mountain", "main", -1, "DOM", "250")->setNumber(4);
|
||||||
|
base.refreshDeckHash();
|
||||||
|
|
||||||
|
DeckList local = base;
|
||||||
|
local.addCard("Shock", "main", -1, "M19", "156")->setNumber(2);
|
||||||
|
local.refreshDeckHash();
|
||||||
|
|
||||||
|
DeckList remote = base;
|
||||||
|
remote.addCard("Lightning Bolt", "main", -1, "M10", "146")->setNumber(4);
|
||||||
|
remote.refreshDeckHash();
|
||||||
|
|
||||||
|
const DeckDiffResult localChanges = DeckDiff::diff(base, local);
|
||||||
|
const DeckDiffResult remoteChanges = DeckDiff::diff(base, remote);
|
||||||
|
ASSERT_TRUE(DeckDiff::canAutoMerge(localChanges, remoteChanges));
|
||||||
|
|
||||||
|
const DeckList merged = DeckDiff::merge(base, localChanges, remoteChanges);
|
||||||
|
|
||||||
|
const QList<DecklistCardNode *> mountains = nodesOf(merged, "main", "Mountain");
|
||||||
|
ASSERT_EQ(mountains.size(), 1);
|
||||||
|
EXPECT_EQ(mountains.first()->getNumber(), 4);
|
||||||
|
EXPECT_EQ(mountains.first()->getCardSetShortName(), "DOM");
|
||||||
|
EXPECT_EQ(mountains.first()->getCardCollectorNumber(), "250");
|
||||||
|
|
||||||
|
const QList<DecklistCardNode *> shocks = nodesOf(merged, "main", "Shock");
|
||||||
|
ASSERT_EQ(shocks.size(), 1);
|
||||||
|
EXPECT_EQ(shocks.first()->getNumber(), 2);
|
||||||
|
EXPECT_EQ(shocks.first()->getCardSetShortName(), "M19");
|
||||||
|
EXPECT_EQ(shocks.first()->getCardCollectorNumber(), "156");
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
::testing::InitGoogleTest(&argc, argv);
|
::testing::InitGoogleTest(&argc, argv);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue