Add MonsterCard
This commit is contained in:
17
src/main/java/database/monsterbook/MonsterCard.java
Normal file
17
src/main/java/database/monsterbook/MonsterCard.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package database.monsterbook;
|
||||
|
||||
public record MonsterCard(int cardId, byte level) {
|
||||
|
||||
public MonsterCard {
|
||||
if (cardId / 10_000 != 238) {
|
||||
throw new IllegalArgumentException("Invalid monster card id: %d".formatted(cardId));
|
||||
}
|
||||
if (level < 0 || level > 5) {
|
||||
throw new IllegalArgumentException("Invalid monster card level: %d".formatted(level));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSpecial() {
|
||||
return cardId / 1000 == 2388;
|
||||
}
|
||||
}
|
||||
48
src/test/java/database/monsterbook/MonsterCardTest.java
Normal file
48
src/test/java/database/monsterbook/MonsterCardTest.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package database.monsterbook;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.ValueSource;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class MonsterCardTest {
|
||||
|
||||
@Test
|
||||
void invalidCardId() {
|
||||
assertThrows(IllegalArgumentException.class, () -> new MonsterCard(123456, validLevel()));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(bytes = {-1, 6})
|
||||
void invalidLevel(byte invalidLevel) {
|
||||
assertThrows(IllegalArgumentException.class, () -> new MonsterCard(validCardId(), invalidLevel));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createValidCard() {
|
||||
assertDoesNotThrow(() -> new MonsterCard(validCardId(), validLevel()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void specialCardIsSpecial() {
|
||||
var specialCard = new MonsterCard(2388000, validLevel());
|
||||
|
||||
assertTrue(specialCard.isSpecial());
|
||||
}
|
||||
|
||||
@Test
|
||||
void normalCardIsNotSpecial() {
|
||||
var normalCard = new MonsterCard(2381234, validLevel());
|
||||
|
||||
assertFalse(normalCard.isSpecial());
|
||||
}
|
||||
|
||||
private int validCardId() {
|
||||
return 2380000;
|
||||
}
|
||||
|
||||
private byte validLevel() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user