mirror of
https://github.com/correl/mage.git
synced 2024-11-28 19:19:55 +00:00
Tests: added serialization test for all cards (run manually);
This commit is contained in:
parent
615ab2d97e
commit
7a3521b02b
1 changed files with 80 additions and 11 deletions
|
@ -2,6 +2,8 @@ package org.mage.test.serverside.performance;
|
||||||
|
|
||||||
import mage.abilities.keyword.InfectAbility;
|
import mage.abilities.keyword.InfectAbility;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
|
import mage.cards.ExpansionSet;
|
||||||
|
import mage.cards.Sets;
|
||||||
import mage.cards.repository.CardInfo;
|
import mage.cards.repository.CardInfo;
|
||||||
import mage.cards.repository.CardRepository;
|
import mage.cards.repository.CardRepository;
|
||||||
import mage.constants.PhaseStep;
|
import mage.constants.PhaseStep;
|
||||||
|
@ -15,9 +17,14 @@ import mage.util.CardUtil;
|
||||||
import mage.utils.CompressUtil;
|
import mage.utils.CompressUtil;
|
||||||
import mage.view.GameView;
|
import mage.view.GameView;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
|
import org.junit.Ignore;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author JayDi85
|
* @author JayDi85
|
||||||
*/
|
*/
|
||||||
|
@ -60,19 +67,81 @@ public class SerializationTest extends CardTestPlayerBase {
|
||||||
Assert.assertEquals("Must get infected counter", 1, permanent.getCounters(currentGame).getCount(CounterType.M1M1));
|
Assert.assertEquals("Must get infected counter", 1, permanent.getCounters(currentGame).getCount(CounterType.M1M1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void processSingleCard(CardInfo cardInfo) {
|
||||||
|
// compress each card's part
|
||||||
|
Card newCard = cardInfo.getCard();
|
||||||
|
CardUtil.getObjectPartsAsObjects(newCard).stream()
|
||||||
|
.map(Card.class::cast)
|
||||||
|
.forEach(card -> {
|
||||||
|
Card testCard = CardUtil.getDefaultCardSideForBattlefield(newCard);
|
||||||
|
Card testPermanent = null;
|
||||||
|
if (!testCard.isInstantOrSorcery()) {
|
||||||
|
testPermanent = new PermanentCard(testCard, playerA.getId(), currentGame);
|
||||||
|
}
|
||||||
|
|
||||||
|
// card
|
||||||
|
{
|
||||||
|
Object compressed = CompressUtil.compress(testCard);
|
||||||
|
Assert.assertTrue("Must be zip", compressed instanceof ZippedObjectImpl);
|
||||||
|
Card uncompressed = (Card) CompressUtil.decompress(compressed);
|
||||||
|
Assert.assertEquals("Must be same", testCard.getName(), uncompressed.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
// permanent
|
||||||
|
if (testPermanent != null) {
|
||||||
|
Object compressed = CompressUtil.compress(testPermanent);
|
||||||
|
Assert.assertTrue("Must be zip", compressed instanceof ZippedObjectImpl);
|
||||||
|
Card uncompressed = (Card) CompressUtil.decompress(compressed);
|
||||||
|
Assert.assertEquals("Must be same", testPermanent.getName(), uncompressed.getName());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processSingleCard(String cardName) {
|
||||||
|
CardInfo cardInfo = CardRepository.instance.findCard(cardName);
|
||||||
|
processSingleCard(cardInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore // WARNING, debug only, needs few minutes to execute, so run it manually
|
||||||
|
@Test
|
||||||
|
public void test_Single_AllCards() {
|
||||||
|
// checking FULL cards list for serialization errors
|
||||||
|
String filterSet = "";
|
||||||
|
String filterCard = "";
|
||||||
|
|
||||||
|
List<String> errorsList = new ArrayList<>();
|
||||||
|
int checkedCount = 0;
|
||||||
|
for (ExpansionSet set : Sets.getInstance().values()) {
|
||||||
|
if (!filterSet.isEmpty() && !set.getCode().equals(filterSet)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
checkedCount++;
|
||||||
|
System.out.printf("Checking set %d of %d (%s)%n", checkedCount, Sets.getInstance().size(), set.getName());
|
||||||
|
|
||||||
|
for (ExpansionSet.SetCardInfo info : set.getSetCardInfo()) {
|
||||||
|
if (!filterCard.isEmpty() && !info.getName().equals(filterCard)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
CardInfo cardInfo = CardRepository.instance.findCardsByClass(info.getCardClass().getCanonicalName()).stream().findFirst().orElse(null);
|
||||||
|
try {
|
||||||
|
processSingleCard(cardInfo);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
System.out.println("Broken card: " + info.getName());
|
||||||
|
//e.printStackTrace(); // search exception errors in the logs
|
||||||
|
errorsList.add(info.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!errorsList.isEmpty()) {
|
||||||
|
Assert.fail("Found broken cards: " + errorsList.size() + "\n"
|
||||||
|
+ errorsList.stream().sorted().collect(Collectors.joining("\n")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_Single_KentaroTheSmilingCat() {
|
public void test_Single_KentaroTheSmilingCat() {
|
||||||
CardInfo cardInfo = CardRepository.instance.findCard("Kentaro, the Smiling Cat");
|
processSingleCard("Kentaro, the Smiling Cat");
|
||||||
Card newCard = cardInfo.getCard();
|
|
||||||
Card permCard = CardUtil.getDefaultCardSideForBattlefield(newCard);
|
|
||||||
PermanentImpl permanent = new PermanentCard(permCard, playerA.getId(), currentGame);
|
|
||||||
currentGame.addPermanent(permanent, 0);
|
|
||||||
|
|
||||||
// test compress (it uses default java serialization)
|
|
||||||
Object compressed = CompressUtil.compress(permanent);
|
|
||||||
Assert.assertTrue("Must be zip", compressed instanceof ZippedObjectImpl);
|
|
||||||
PermanentImpl uncompressed = (PermanentImpl) CompressUtil.decompress(compressed);
|
|
||||||
Assert.assertEquals("Must be same", permanent.getName(), uncompressed.getName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in a new issue