Add unit tests for slayer
Kill server networking as soon as shutdown process starts
This commit is contained in:
@@ -39,6 +39,7 @@ public final class SystemTermination {
|
|||||||
SystemLogger.logInfo("[SystemTerminator] Initializing termination sequence - do not shutdown!");
|
SystemLogger.logInfo("[SystemTerminator] Initializing termination sequence - do not shutdown!");
|
||||||
try {
|
try {
|
||||||
Server.setRunning(false);
|
Server.setRunning(false);
|
||||||
|
Server.getReactor().terminate();
|
||||||
for (Iterator<Player> it = Repository.getPlayers().iterator(); it.hasNext();) {
|
for (Iterator<Player> it = Repository.getPlayers().iterator(); it.hasNext();) {
|
||||||
try {
|
try {
|
||||||
Player p = it.next();
|
Player p = it.next();
|
||||||
|
|||||||
@@ -74,11 +74,11 @@ class SlayerFlags {
|
|||||||
* Get/Set canEarnPoints flag
|
* Get/Set canEarnPoints flag
|
||||||
*/
|
*/
|
||||||
fun canEarnPoints(): Boolean {
|
fun canEarnPoints(): Boolean {
|
||||||
return (taskFlags shr 16) and 1 == 1
|
return (taskFlags shr 20) and 1 == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
fun flagCanEarnPoints() {
|
fun flagCanEarnPoints() {
|
||||||
taskFlags = taskFlags or (1 shl 16)
|
taskFlags = taskFlags or (1 shl 20)
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*==============================================
|
*==============================================
|
||||||
@@ -148,4 +148,12 @@ class SlayerFlags {
|
|||||||
return getTaskAmount() != 0
|
return getTaskAmount() != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun fullClear() {
|
||||||
|
taskFlags = 0
|
||||||
|
rewardFlags = 0
|
||||||
|
equipmentFlags = 0
|
||||||
|
completedTasks = 0
|
||||||
|
taskStreak = 0
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,21 @@
|
|||||||
import api.IfaceSettingsBuilder
|
import api.IfaceSettingsBuilder
|
||||||
|
import core.game.node.entity.player.Player
|
||||||
|
import core.game.node.entity.player.info.PlayerDetails
|
||||||
|
import core.game.node.entity.skill.slayer.Master
|
||||||
|
import core.game.node.entity.skill.slayer.Tasks
|
||||||
|
import org.json.simple.JSONObject
|
||||||
|
import org.json.simple.parser.JSONParser
|
||||||
|
import org.junit.Assert
|
||||||
import org.junit.jupiter.api.Assertions
|
import org.junit.jupiter.api.Assertions
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
|
import rs09.game.node.entity.skill.slayer.SlayerFlags
|
||||||
|
import rs09.game.node.entity.skill.slayer.SlayerManager
|
||||||
|
import rs09.game.system.SystemLogger
|
||||||
|
|
||||||
object APITests {
|
object APITests {
|
||||||
|
val testPlayer = Player(PlayerDetails("test", "testing"))
|
||||||
|
val testPlayer2 = Player(PlayerDetails("test2", "testing"))
|
||||||
|
|
||||||
@Test fun testIfaceSettings(){
|
@Test fun testIfaceSettings(){
|
||||||
var builder = IfaceSettingsBuilder()
|
var builder = IfaceSettingsBuilder()
|
||||||
val testOptions = builder.enableOptions(0..9).build()
|
val testOptions = builder.enableOptions(0..9).build()
|
||||||
@@ -46,5 +59,87 @@ object APITests {
|
|||||||
Assertions.assertEquals(15466494, testAllOptions, "Testing all options")
|
Assertions.assertEquals(15466494, testAllOptions, "Testing all options")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test fun testSlayerManagerSaveAndLoadAndSaveProducesEquivalentJSON() {
|
||||||
|
var manager = SlayerManager()
|
||||||
|
manager.login(testPlayer)
|
||||||
|
manager.login(testPlayer2)
|
||||||
|
manager = SlayerManager.getInstance(testPlayer)
|
||||||
|
manager.flags.setPoints(20)
|
||||||
|
manager.flags.setMaster(Master.CHAELDAR)
|
||||||
|
manager.flags.setTask(Tasks.SKELETAL_WYVERN)
|
||||||
|
manager.flags.setTaskAmount(500)
|
||||||
|
|
||||||
|
val manager2 = SlayerManager.getInstance(testPlayer2)
|
||||||
|
|
||||||
|
val jsonFirst = JSONObject()
|
||||||
|
manager.savePlayer(testPlayer, jsonFirst)
|
||||||
|
manager.parsePlayer(testPlayer2, jsonFirst)
|
||||||
|
|
||||||
|
val jsonSecond = JSONObject()
|
||||||
|
manager2.savePlayer(testPlayer2, jsonSecond)
|
||||||
|
Assertions.assertEquals(jsonFirst.toJSONString(), jsonSecond.toJSONString())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test fun testSlayerSaveAndParseProducesEquivalent() {
|
||||||
|
var manager = SlayerManager()
|
||||||
|
manager.login(testPlayer)
|
||||||
|
manager = SlayerManager.getInstance(testPlayer)
|
||||||
|
manager.flags.setPoints(500)
|
||||||
|
manager.flags.unlockHelm()
|
||||||
|
manager.flags.unlockBroads()
|
||||||
|
manager.flags.unlockRing()
|
||||||
|
|
||||||
|
val json = JSONObject()
|
||||||
|
manager.savePlayer(testPlayer, json)
|
||||||
|
manager.flags.fullClear()
|
||||||
|
manager.parsePlayer(testPlayer, json)
|
||||||
|
Assertions.assertEquals(500, manager.flags.getPoints(), "Points were not 500!")
|
||||||
|
Assertions.assertEquals(true, manager.flags.isHelmUnlocked(), "Helm was not unlocked!")
|
||||||
|
Assertions.assertEquals(true, manager.flags.isBroadsUnlocked(), "Broads were not unlocked!")
|
||||||
|
Assertions.assertEquals(true, manager.flags.isRingUnlocked(), "Ring was not unlocked!")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test fun testSlayerDecrementTaskAmountHasNoSideEffects() {
|
||||||
|
var manager = SlayerManager()
|
||||||
|
manager.login(testPlayer)
|
||||||
|
manager = SlayerManager.getInstance(testPlayer)
|
||||||
|
manager.flags.setTask(Tasks.CAVE_BUG)
|
||||||
|
manager.flags.setTaskAmount(100)
|
||||||
|
manager.flags.taskStreak = 4
|
||||||
|
manager.flags.completedTasks = 4
|
||||||
|
manager.flags.setMaster(Master.MAZCHNA)
|
||||||
|
|
||||||
|
while(manager.hasTask()) manager.decrementAmount(1)
|
||||||
|
manager.flags.taskStreak += 1
|
||||||
|
manager.flags.completedTasks += 1
|
||||||
|
manager.flags.flagCanEarnPoints()
|
||||||
|
|
||||||
|
Assertions.assertEquals(0, manager.flags.getTaskAmount(), "Task amount was not 0!")
|
||||||
|
Assertions.assertEquals(5, manager.flags.taskStreak, "Task streak was not 5!")
|
||||||
|
Assertions.assertEquals(Tasks.CAVE_BUG, manager.flags.getTask(), "Task was not cave bugs!")
|
||||||
|
Assertions.assertEquals(Master.MAZCHNA, manager.flags.getMaster(), "Master was not Mazchna!")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test fun testKnownProblemSaveParsesCorrectly() {
|
||||||
|
val jsonString = "{\"slayer\": {\n" +
|
||||||
|
" \"taskStreak\": \"21\",\n" +
|
||||||
|
" \"rewardFlags\": 17301511,\n" +
|
||||||
|
" \"equipmentFlags\": 31,\n" +
|
||||||
|
" \"taskFlags\": 307220,\n" +
|
||||||
|
" \"removedTasks\": [\n" +
|
||||||
|
" \"73\"\n" +
|
||||||
|
" ],\n" +
|
||||||
|
" \"totalTasks\": \"108\"\n" +
|
||||||
|
" }}"
|
||||||
|
|
||||||
|
val slayerData = JSONParser().parse(jsonString) as JSONObject
|
||||||
|
var manager = SlayerManager()
|
||||||
|
manager.login(testPlayer)
|
||||||
|
manager = SlayerManager.getInstance(testPlayer)
|
||||||
|
manager.parsePlayer(testPlayer, slayerData)
|
||||||
|
|
||||||
|
Assertions.assertEquals(21, manager.flags.taskStreak)
|
||||||
|
Assertions.assertNotEquals(0, manager.flags.getPoints())
|
||||||
|
Assertions.assertEquals(true, manager.flags.isHelmUnlocked())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user