Skip to content

Commit

Permalink
tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Benjamin Berman committed Jan 25, 2025
1 parent 02bcd8c commit 85e221a
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ public Set<String> getHardRemovalCardIds() {
@Override
@NotNull
public CardList getAll() {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
CardList result = new CardArrayList();
for (var card : cards.values()) {
result.addCard(card.clone());
Expand All @@ -86,8 +86,8 @@ public CardList getAll() {

@Override
public @NotNull Map<String, Card> getCards() {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
return cards;
} finally {
lock.readLock().unlock();
Expand All @@ -96,8 +96,8 @@ public CardList getAll() {

@Override
public @NotNull Card getCardById(@NotNull String id) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
var card = cards.getOrDefault(id, null);
if (card != null) {
card = card.getCopy();
Expand All @@ -113,8 +113,8 @@ public CardList getAll() {
@Override
@Nullable
public Card getCardByName(String name) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
var namedCard = cardsByName.get(name).stream().filter(ccr -> ccr.getDesc().isCollectible()).findFirst().orElse(cardsByName.get(name).stream().findFirst().orElse(null));
if (namedCard != null) {
return getCardById(namedCard.getCardId());
Expand All @@ -128,8 +128,8 @@ public Card getCardByName(String name) {
@Override
@NotNull
public Card getCardByName(String name, String heroClass) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
var namedCards = cardsByName.get(name).stream().filter(ccr -> ccr.getDesc().isCollectible()).toList();
if (!namedCards.isEmpty()) {
if (namedCards.size() > 1) {
Expand All @@ -151,8 +151,8 @@ public Card getCardByName(String name, String heroClass) {
@Override
@NotNull
public CardList query(DeckFormat deckFormat, Spellsource.CardTypeMessage.CardType cardType, Spellsource.RarityMessage.Rarity rarity, String heroClass, Attribute tag, boolean clone) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
CardList result = new CardArrayList();
for (var card : cards.values()) {

Expand Down Expand Up @@ -198,8 +198,8 @@ public CardList query(DeckFormat deckFormat, Spellsource.CardTypeMessage.CardTyp
}

public void removeCard(String id) {
lock.writeLock().lock();
try {
lock.writeLock().lock();
try {
var res = cards.remove(id);
if (res != null) {
cardsByName.remove(res.getDesc().getName(), res);
Expand All @@ -211,7 +211,7 @@ public void removeCard(String id) {
case CLASS -> {
classCards.remove(res.getDesc().getHeroClass());
for (var format : classCardsForFormat.keySet()) {
classCardsForFormat.get(format).removeIf(c -> c.getDesc().getId().equals(res.getId()));
classCardsForFormat.get(format).removeIf(c -> c.getDesc().getId().equals(res.getCardId()));
}
}
case HERO -> heroCards.remove(res.getCardId());
Expand All @@ -224,8 +224,8 @@ public void removeCard(String id) {

@Override
public Card getFormatCard(String name) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
return formatCardsByName.getOrDefault(name, null);
} finally {
lock.readLock().unlock();
Expand All @@ -234,8 +234,8 @@ public Card getFormatCard(String name) {

@Override
public Card getHeroCard(String heroClass) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
var heroCard = heroCards.getOrDefault(heroClass, null);
if (heroCard == null) {
return getCardById(this.getNeutralHero());
Expand All @@ -248,8 +248,8 @@ public Card getHeroCard(String heroClass) {

@Override
public CardList getClassCards(DeckFormat format) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
return new CardArrayList(classCardsForFormat.get(format));
} finally {
lock.readLock().unlock();
Expand All @@ -258,17 +258,17 @@ public CardList getClassCards(DeckFormat format) {

@Override
public List<String> getBaseClasses(DeckFormat deckFormat) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
return new ArrayList<>(baseClassesForFormat.get(deckFormat));
} finally {
lock.readLock().unlock();
}
}

public CardList query(DeckFormat deckFormat, Predicate<Card> filter) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
CardList result = new CardArrayList();
for (var card : cards.values()) {
if (GameLogic.isCardType(card.getCardType(), Spellsource.CardTypeMessage.CardType.CLASS) || GameLogic.isCardType(card.getCardType(), Spellsource.CardTypeMessage.CardType.FORMAT)) {
Expand Down Expand Up @@ -296,8 +296,8 @@ public Stream<Card> stream() {

@Override
public CardList queryClassCards(DeckFormat format, String hero, Set<String> bannedCards, Spellsource.RarityMessage.Rarity rarity, Set<Spellsource.CardTypeMessage.CardType> validCardTypes) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
return query(format, c -> c.hasHeroClass(hero) && !bannedCards.contains(c.getCardId()) && c.getRarity() == rarity && validCardTypes.contains(c.getCardType()) && c.isCollectible());
} finally {
lock.readLock().unlock();
Expand All @@ -306,8 +306,8 @@ public CardList queryClassCards(DeckFormat format, String hero, Set<String> bann

@Override
public CardList queryNeutrals(DeckFormat format, Set<String> bannedCards, Spellsource.RarityMessage.Rarity rarity, Set<Spellsource.CardTypeMessage.CardType> validCardTypes) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
return query(format,
c -> c.hasHeroClass(HeroClass.ANY) && !bannedCards.contains(c.getCardId()) && c.getRarity() == rarity && validCardTypes.contains(c.getCardType()) && c.isCollectible());
} finally {
Expand All @@ -317,8 +317,8 @@ public CardList queryNeutrals(DeckFormat format, Set<String> bannedCards, Spells

@Override
public CardList queryUncollectible(DeckFormat deckFormat) {
lock.readLock().lock();
try {
lock.readLock().lock();
try {
return query(deckFormat, always -> true);
} finally {
lock.readLock().unlock();
Expand Down Expand Up @@ -356,8 +356,8 @@ public String addOrReplaceCard(CardDesc cardDesc) {
* Clears all the cards in this catalogue.
*/
public void clear() {
lock.writeLock().lock();
try {
lock.writeLock().lock();
try {
formatsByName.clear();
bannedCardIds.clear();
hardRemovalCardIds.clear();
Expand All @@ -383,8 +383,7 @@ public void loadCards(List<CardDesc> cardDescs) {
}

/**
* Loads all the cards from the specified {@link ResourceInputStream} instances, which can be a mix of files and
* resources.
* Loads all the cards from the specified {@link ResourceInputStream} instances, which can be a mix of files and resources.
*
* @param inputStreams
*/
Expand Down Expand Up @@ -413,8 +412,8 @@ public void loadCards(Collection<ResourceInputStream> inputStreams) {
* @param cardDescs
*/
protected void updatedWith(Map<String, CardDesc> cardDescs) {
lock.writeLock().lock();
try {
lock.writeLock().lock();
try {
var newCards = new ArrayList<Card>(cardDescs.size());
// sort so that this is more consistent
List<CardDesc> values = new ArrayList<>(cardDescs.values());
Expand Down Expand Up @@ -503,8 +502,8 @@ protected void updatedWith(Map<String, CardDesc> cardDescs) {
* @param directories
*/
public void loadCardsFromFilesystemDirectories(String... directories) {
lock.writeLock().lock();
try {
lock.writeLock().lock();
try {
var inputStreams = new ArrayList<ResourceInputStream>();

try {
Expand Down
2 changes: 1 addition & 1 deletion spellsource-private/src/secrets
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
import net.demilich.metastone.game.cards.Attribute;
import net.demilich.metastone.game.cards.CardCatalogue;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;

import static com.hiddenswitch.framework.schema.spellsource.tables.Cards.CARDS;
import static io.vertx.await.Async.await;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.*;

public class SqlCardCatalogueTests extends FrameworkTestBase {

Expand All @@ -39,11 +40,17 @@ public void startVirtual() throws Exception {
public void testGetFormats(Vertx vertx, VertxTestContext vertxTestContext) {
testCachedCardCatalogue(vertx, vertxTestContext, catalogue -> {
var formats = catalogue.formats();
assertTrue(formats.size() > 0);
assertFalse(formats.isEmpty());
assertTrue(formats.containsKey("Spellsource"));
});
}

@ParameterizedTest
@ValueSource(strings = {"hero_neutral"})
public void testGetCards(Vertx vertx, VertxTestContext vertxTestContext, String cardId) {
testCachedCardCatalogue(vertx, vertxTestContext, catalogue -> assertNotNull(catalogue.getCardById(cardId)));
}

@Test
public void testInvalidatesOnChange(Vertx vertx, VertxTestContext vertxTestContext) {
testCachedCardCatalogue(vertx, vertxTestContext, catalogue -> {
Expand Down

0 comments on commit 85e221a

Please sign in to comment.