mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-01-04 00:57:12 -08:00
Smarter Clipboard Pasting/Parsing (#2706)
This commit is contained in:
@@ -39,28 +39,33 @@ struct DecklistBuilder {
|
||||
};
|
||||
|
||||
namespace {
|
||||
TEST(LoadingFromClipboardTest, EmptyDeck) {
|
||||
TEST(LoadingFromClipboardTest, EmptyDeck)
|
||||
{
|
||||
DeckList *deckList = fromClipboard(new QString(""));
|
||||
ASSERT_TRUE(deckList->getCardList().isEmpty()) << "Deck should be empty";
|
||||
ASSERT_TRUE(deckList->getCardList().isEmpty());
|
||||
}
|
||||
|
||||
TEST(LoadingFromClipboardTest, EmptySideboard) {
|
||||
DeckList *deckList = fromClipboard(new QString("Sideboard"));
|
||||
ASSERT_TRUE(deckList->getCardList().isEmpty()) << "Deck should be empty";
|
||||
ASSERT_TRUE(deckList->getCardList().isEmpty());
|
||||
}
|
||||
|
||||
TEST(LoadingFromClipboardTest, QuantityPrefixed) {
|
||||
QString *clipboard = new QString(
|
||||
"1 Mountain\n"
|
||||
"2x Island\n"
|
||||
"2x Island\n"
|
||||
"3X FOREST\n"
|
||||
);
|
||||
DeckList *deckList = fromClipboard(clipboard);
|
||||
|
||||
DecklistBuilder decklistBuilder = DecklistBuilder();
|
||||
deckList->forEachCard(decklistBuilder);
|
||||
|
||||
CardRows expectedMainboard = CardRows({{"Mountain", 1},
|
||||
{"Island", 2}});
|
||||
CardRows expectedMainboard = CardRows({
|
||||
{"mountain", 1},
|
||||
{"island", 2},
|
||||
{"forest", 3}
|
||||
});
|
||||
CardRows expectedSideboard = CardRows({});
|
||||
|
||||
ASSERT_EQ(expectedMainboard, decklistBuilder.mainboard());
|
||||
@@ -70,8 +75,8 @@ namespace {
|
||||
TEST(LoadingFromClipboardTest, CommentsAreIgnored) {
|
||||
QString *clipboard = new QString(
|
||||
"//1 Mountain\n"
|
||||
"//2x Island\n"
|
||||
"//SB:2x Island\n"
|
||||
"//2x Island\n"
|
||||
"//SB:2x Island\n"
|
||||
);
|
||||
|
||||
DeckList *deckList = fromClipboard(clipboard);
|
||||
@@ -89,17 +94,21 @@ namespace {
|
||||
TEST(LoadingFromClipboardTest, SideboardPrefix) {
|
||||
QString *clipboard = new QString(
|
||||
"1 Mountain\n"
|
||||
"SB: 1 Mountain\n"
|
||||
"SB: 2x Island\n"
|
||||
"SB: 1 Mountain\n"
|
||||
"SB: 2x Island\n"
|
||||
);
|
||||
DeckList *deckList = fromClipboard(clipboard);
|
||||
|
||||
DecklistBuilder decklistBuilder = DecklistBuilder();
|
||||
deckList->forEachCard(decklistBuilder);
|
||||
|
||||
CardRows expectedMainboard = CardRows({{"Mountain", 1}});
|
||||
CardRows expectedSideboard = CardRows({{"Mountain", 1},
|
||||
{"Island", 2}});
|
||||
CardRows expectedMainboard = CardRows({
|
||||
{"mountain", 1}
|
||||
});
|
||||
CardRows expectedSideboard = CardRows({
|
||||
{"mountain", 1},
|
||||
{"island", 2}
|
||||
});
|
||||
|
||||
ASSERT_EQ(expectedMainboard, decklistBuilder.mainboard());
|
||||
ASSERT_EQ(expectedSideboard, decklistBuilder.sideboard());
|
||||
@@ -114,12 +123,142 @@ namespace {
|
||||
DecklistBuilder decklistBuilder = DecklistBuilder();
|
||||
deckList->forEachCard(decklistBuilder);
|
||||
|
||||
CardRows expectedMainboard = CardRows({{"CardThatDoesNotExistInCardsXml", 1}});
|
||||
CardRows expectedMainboard = CardRows({
|
||||
{"cardthatdoesnotexistincardsxml", 1}
|
||||
});
|
||||
CardRows expectedSideboard = CardRows({});
|
||||
|
||||
ASSERT_EQ(expectedMainboard, decklistBuilder.mainboard());
|
||||
ASSERT_EQ(expectedSideboard, decklistBuilder.sideboard());
|
||||
}
|
||||
|
||||
TEST(LoadingFromClipboardTest, RemoveBlankEntriesFromBeginningAndEnd) {
|
||||
QString *clipboard = new QString(
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"1x Algae Gharial\n"
|
||||
"3x CardThatDoesNotExistInCardsXml\n"
|
||||
"2x Phelddagrif\n"
|
||||
"\n"
|
||||
"\n"
|
||||
);
|
||||
|
||||
DeckList *deckList = fromClipboard(clipboard);
|
||||
|
||||
DecklistBuilder decklistBuilder = DecklistBuilder();
|
||||
deckList->forEachCard(decklistBuilder);
|
||||
|
||||
CardRows expectedMainboard = CardRows({
|
||||
{"algae gharial", 1},
|
||||
{"cardthatdoesnotexistincardsxml", 3},
|
||||
{"phelddagrif", 2}
|
||||
});
|
||||
CardRows expectedSideboard = CardRows({});
|
||||
|
||||
ASSERT_EQ(expectedMainboard, decklistBuilder.mainboard());
|
||||
ASSERT_EQ(expectedSideboard, decklistBuilder.sideboard());
|
||||
}
|
||||
|
||||
TEST(LoadingFromClipboardTest, UseFirstBlankIfOnlyOneBlankToSplitSideboard) {
|
||||
QString *clipboard = new QString(
|
||||
"1x Algae Gharial\n"
|
||||
"3x CardThatDoesNotExistInCardsXml\n"
|
||||
"\n"
|
||||
"2x Phelddagrif\n"
|
||||
);
|
||||
|
||||
DeckList *deckList = fromClipboard(clipboard);
|
||||
|
||||
DecklistBuilder decklistBuilder = DecklistBuilder();
|
||||
deckList->forEachCard(decklistBuilder);
|
||||
|
||||
CardRows expectedMainboard = CardRows({
|
||||
{"algae gharial", 1},
|
||||
{"cardthatdoesnotexistincardsxml", 3}
|
||||
});
|
||||
CardRows expectedSideboard = CardRows({
|
||||
{"phelddagrif", 2}
|
||||
});
|
||||
|
||||
ASSERT_EQ(expectedMainboard, decklistBuilder.mainboard());
|
||||
ASSERT_EQ(expectedSideboard, decklistBuilder.sideboard());
|
||||
}
|
||||
|
||||
TEST(LoadingFromClipboardTest, IfMultipleScatteredBlanksAllMainBoard) {
|
||||
QString *clipboard = new QString(
|
||||
"1x Algae Gharial\n"
|
||||
"3x CardThatDoesNotExistInCardsXml\n"
|
||||
"\n"
|
||||
"2x Phelddagrif\n"
|
||||
"\n"
|
||||
"3 Giant Growth\n"
|
||||
);
|
||||
|
||||
DeckList *deckList = fromClipboard(clipboard);
|
||||
|
||||
DecklistBuilder decklistBuilder = DecklistBuilder();
|
||||
deckList->forEachCard(decklistBuilder);
|
||||
|
||||
CardRows expectedMainboard = CardRows({
|
||||
{"algae gharial", 1},
|
||||
{"cardthatdoesnotexistincardsxml", 3},
|
||||
{"phelddagrif", 2},
|
||||
{"giant growth", 3}
|
||||
});
|
||||
CardRows expectedSideboard = CardRows({});
|
||||
|
||||
ASSERT_EQ(expectedMainboard, decklistBuilder.mainboard());
|
||||
ASSERT_EQ(expectedSideboard, decklistBuilder.sideboard());
|
||||
}
|
||||
|
||||
TEST(LoadingFromClipboardTest, LotsOfStuffInBulkTesting) {
|
||||
QString *clipboard = new QString(
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"1x test1\n"
|
||||
"testNoValueMB\n"
|
||||
"2x test2\n"
|
||||
"SB: 10 testSB\n"
|
||||
"3 test3\n"
|
||||
"4X test4\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"5x test5\n"
|
||||
"6X test6\n"
|
||||
"testNoValueSB\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"\n"
|
||||
);
|
||||
|
||||
DeckList *deckList = fromClipboard(clipboard);
|
||||
|
||||
DecklistBuilder decklistBuilder = DecklistBuilder();
|
||||
deckList->forEachCard(decklistBuilder);
|
||||
|
||||
CardRows expectedMainboard = CardRows({
|
||||
{"test1", 1},
|
||||
{"test2", 2},
|
||||
{"test3", 3},
|
||||
{"test4", 4},
|
||||
{"testnovaluemb", 1}
|
||||
|
||||
});
|
||||
CardRows expectedSideboard = CardRows({
|
||||
{"testsb", 10},
|
||||
{"test5", 5},
|
||||
{"test6", 6},
|
||||
{"testnovaluesb", 1}
|
||||
|
||||
});
|
||||
ASSERT_EQ(expectedMainboard, decklistBuilder.mainboard());
|
||||
ASSERT_EQ(expectedSideboard, decklistBuilder.sideboard());
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
Reference in New Issue
Block a user