Add tests for MobSkillFactory

This commit is contained in:
P0nk
2022-09-07 18:58:19 +02:00
parent fd793d6b04
commit 319d65a0c3
3 changed files with 603 additions and 1 deletions

12
pom.xml
View File

@@ -28,11 +28,12 @@
<log4j.version>2.18.0</log4j.version> <!-- Slf4j implementation -->
<graalvm.version>22.2.0</graalvm.version> <!-- ScriptEngine implementation -->
<netty.version>4.1.79.Final</netty.version> <!-- Networking -->
<junit.version>5.9.0</junit.version> <!-- Unit test -->
<yamlbeans.version>1.15</yamlbeans.version> <!-- Config file -->
<jcip-annotations.version>1.0</jcip-annotations.version> <!-- Annotations for concurrency documentation -->
<HikariCP.version>5.0.1</HikariCP.version> <!-- Database connection pool -->
<mysql-connector-java.version>8.0.30</mysql-connector-java.version> <!-- MySQL JDBC driver -->
<junit.version>5.9.0</junit.version> <!-- Unit test -->
<mockito.version>4.7.0</mockito.version> <!-- Unit test -->
</properties>
<dependencies>
@@ -120,16 +121,25 @@
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -0,0 +1,70 @@
package server.life;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.mockito.MockitoAnnotations;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import static org.junit.jupiter.api.Assertions.*;
class MobSkillFactoryTest {
@TempDir
private Path wzPath;
@BeforeEach
void setWzPath() {
MockitoAnnotations.openMocks(this);
writeTestFileToTempDir();
System.setProperty("wz-path", "%s/wz".formatted(wzPath.toString()));
}
private void writeTestFileToTempDir() {
try {
String testFileContents = readTestFileContents();
writeTempDirFile(testFileContents);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private String readTestFileContents() throws IOException {
return new String(getClass()
.getClassLoader()
.getResourceAsStream("MobSkill-test.img.xml")
.readAllBytes()
);
}
private void writeTempDirFile(String fileContents) throws IOException {
Path tempDirDirectory = wzPath.resolve("wz/Skill.wz");
Files.createDirectories(tempDirDirectory);
Path tempDirFile = Files.createFile(tempDirDirectory.resolve("MobSkill.img.xml"));
Files.writeString(tempDirFile, fileContents);
}
@Test
void shouldLoadExistingMobSkill() {
MobSkill mobSkill = MobSkillFactory.getMobSkill(MobSkillType.ATTACK_UP, 1);
assertNotNull(mobSkill);
assertAll("MobSkill",
() -> assertEquals(115, mobSkill.getX()),
() -> assertEquals(5, mobSkill.getMpCon()),
() -> assertEquals(40_000, mobSkill.getCoolTime()),
() -> assertEquals(30_000, mobSkill.getDuration())
);
}
@Test
void shouldReturnNullForNonExistingMobSkill() {
MobSkill mobSkill = MobSkillFactory.getMobSkill(MobSkillType.DEFENSE_UP, 1);
assertNull(mobSkill);
}
}

View File

@@ -0,0 +1,522 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<imgdir name="MobSkill.img">
<imgdir name="100">
<imgdir name="level">
<imgdir name="1">
<int name="x" value="115"/>
<int name="mpCon" value="5"/>
<int name="interval" value="40"/>
<int name="time" value="30"/>
<imgdir name="effect">
<canvas name="0" width="128" height="128">
<vector name="origin" x="62" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="1" width="128" height="127">
<vector name="origin" x="61" y="64"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="2" width="131" height="130">
<vector name="origin" x="65" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="3" width="141" height="140">
<vector name="origin" x="68" y="70"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="4" width="123" height="123">
<vector name="origin" x="58" y="62"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="5" width="126" height="122">
<vector name="origin" x="63" y="63"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="6" width="111" height="112">
<vector name="origin" x="54" y="57"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="7" width="24" height="23">
<vector name="origin" x="9" y="15"/>
<int name="delay" value="100"/>
<int name="a0" value="255"/>
<int name="a1" value="0"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="2">
<int name="x" value="130"/>
<int name="mpCon" value="5"/>
<int name="interval" value="40"/>
<int name="time" value="30"/>
<imgdir name="effect">
<canvas name="0" width="128" height="128">
<vector name="origin" x="62" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="1" width="128" height="127">
<vector name="origin" x="61" y="64"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="2" width="131" height="130">
<vector name="origin" x="65" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="3" width="141" height="140">
<vector name="origin" x="68" y="70"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="4" width="123" height="123">
<vector name="origin" x="58" y="62"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="5" width="126" height="122">
<vector name="origin" x="63" y="63"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="6" width="111" height="112">
<vector name="origin" x="54" y="57"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="7" width="24" height="23">
<vector name="origin" x="9" y="15"/>
<int name="delay" value="100"/>
<int name="a0" value="255"/>
<int name="a1" value="0"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="3">
<int name="x" value="130"/>
<int name="hp" value="50"/>
<int name="mpCon" value="5"/>
<int name="interval" value="40"/>
<int name="time" value="30"/>
<imgdir name="effect">
<canvas name="0" width="128" height="128">
<vector name="origin" x="62" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="1" width="128" height="127">
<vector name="origin" x="61" y="64"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="2" width="131" height="130">
<vector name="origin" x="65" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="3" width="141" height="140">
<vector name="origin" x="68" y="70"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="4" width="123" height="123">
<vector name="origin" x="58" y="62"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="5" width="126" height="122">
<vector name="origin" x="63" y="63"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="6" width="111" height="112">
<vector name="origin" x="54" y="57"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="7" width="24" height="23">
<vector name="origin" x="9" y="15"/>
<int name="delay" value="100"/>
<int name="a0" value="255"/>
<int name="a1" value="0"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="4">
<int name="x" value="100"/>
<int name="mpCon" value="5"/>
<int name="interval" value="30"/>
<int name="time" value="60"/>
<imgdir name="mob">
<canvas name="0" width="84" height="74">
<vector name="origin" x="42" y="37"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="1" width="84" height="75">
<vector name="origin" x="43" y="36"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="2" width="84" height="75">
<vector name="origin" x="43" y="36"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="3" width="85" height="75">
<vector name="origin" x="44" y="35"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="4" width="84" height="74">
<vector name="origin" x="42" y="37"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="5" width="85" height="73">
<vector name="origin" x="43" y="38"/>
<int name="delay" value="120"/>
</canvas>
<int name="pos" value="2"/>
<int name="repeat" value="1"/>
</imgdir>
</imgdir>
<imgdir name="5">
<int name="x" value="100"/>
<int name="mpCon" value="5"/>
<int name="interval" value="30"/>
<int name="time" value="60"/>
<imgdir name="mob">
<canvas name="0" width="84" height="74">
<vector name="origin" x="42" y="37"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="1" width="84" height="75">
<vector name="origin" x="43" y="36"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="2" width="84" height="75">
<vector name="origin" x="43" y="36"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="3" width="85" height="75">
<vector name="origin" x="44" y="35"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="4" width="84" height="74">
<vector name="origin" x="42" y="37"/>
<int name="delay" value="120"/>
</canvas>
<canvas name="5" width="85" height="73">
<vector name="origin" x="43" y="38"/>
<int name="delay" value="120"/>
</canvas>
<int name="pos" value="2"/>
<int name="repeat" value="1"/>
</imgdir>
</imgdir>
<imgdir name="6">
<int name="x" value="100"/>
<int name="mpCon" value="1"/>
<int name="interval" value="5"/>
<int name="time" value="1"/>
</imgdir>
<imgdir name="7">
<int name="x" value="1"/>
<int name="mpCon" value="1"/>
<int name="interval" value="8"/>
<int name="time" value="1"/>
</imgdir>
<imgdir name="8">
<int name="x" value="100"/>
<int name="mpCon" value="1"/>
<int name="interval" value="90"/>
<int name="time" value="10"/>
</imgdir>
<imgdir name="9">
<int name="x" value="110"/>
<int name="time" value="6000"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="10">
<int name="x" value="120"/>
<int name="time" value="6000"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="11">
<int name="x" value="130"/>
<int name="time" value="6000"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="12">
<int name="x" value="140"/>
<int name="time" value="6000"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="13">
<int name="x" value="150"/>
<int name="time" value="6000"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="14">
<int name="x" value="160"/>
<int name="time" value="6000"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="15">
<int name="x" value="170"/>
<int name="time" value="6000"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="16">
<int name="x" value="170"/>
<int name="time" value="15"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="17">
<int name="x" value="100"/>
<int name="mpCon" value="1"/>
<int name="interval" value="15"/>
<int name="time" value="1"/>
</imgdir>
<imgdir name="18">
<int name="x" value="100"/>
<int name="mpCon" value="1"/>
<int name="interval" value="5"/>
<int name="time" value="1"/>
</imgdir>
<imgdir name="19">
<int name="x" value="170"/>
<int name="time" value="15"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="20">
<int name="x" value="115"/>
<int name="mpCon" value="5"/>
<int name="interval" value="40"/>
<int name="time" value="30"/>
<imgdir name="effect">
<canvas name="0" width="128" height="128">
<vector name="origin" x="62" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="1" width="128" height="127">
<vector name="origin" x="61" y="64"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="2" width="131" height="130">
<vector name="origin" x="65" y="65"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="3" width="141" height="140">
<vector name="origin" x="68" y="70"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="4" width="123" height="123">
<vector name="origin" x="58" y="62"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="5" width="126" height="122">
<vector name="origin" x="63" y="63"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="6" width="111" height="112">
<vector name="origin" x="54" y="57"/>
<int name="delay" value="100"/>
</canvas>
<canvas name="7" width="24" height="23">
<vector name="origin" x="9" y="15"/>
<int name="delay" value="100"/>
<int name="a0" value="255"/>
<int name="a1" value="0"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="49" height="54">
<vector name="origin" x="22" y="72"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="21">
<string name="info" value="넥스1/넥스2"/>
<int name="x" value="120"/>
<int name="time" value="15"/>
<int name="mpCon" value="20"/>
<int name="interval" value="30"/>
<int name="hp" value="70"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="22">
<string name="info" value="넥스3/넥스4"/>
<int name="x" value="140"/>
<int name="time" value="15"/>
<int name="mpCon" value="20"/>
<int name="interval" value="30"/>
<int name="hp" value="70"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
<imgdir name="23">
<string name="info" value="넥스5/넥스6"/>
<int name="x" value="160"/>
<int name="time" value="15"/>
<int name="mpCon" value="20"/>
<int name="interval" value="30"/>
<int name="hp" value="70"/>
<imgdir name="effect">
<canvas name="0" width="10" height="10">
<vector name="origin" x="-2" y="32"/>
</canvas>
<int name="pos" value="3"/>
</imgdir>
<imgdir name="mob">
<canvas name="0" width="19" height="23">
<vector name="origin" x="9" y="44"/>
</canvas>
<int name="pos" value="2"/>
<int name="icon" value="1"/>
</imgdir>
</imgdir>
</imgdir>
</imgdir>
</imgdir>