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!");
|
||||
try {
|
||||
Server.setRunning(false);
|
||||
Server.getReactor().terminate();
|
||||
for (Iterator<Player> it = Repository.getPlayers().iterator(); it.hasNext();) {
|
||||
try {
|
||||
Player p = it.next();
|
||||
|
||||
@@ -74,11 +74,11 @@ class SlayerFlags {
|
||||
* Get/Set canEarnPoints flag
|
||||
*/
|
||||
fun canEarnPoints(): Boolean {
|
||||
return (taskFlags shr 16) and 1 == 1
|
||||
return (taskFlags shr 20) and 1 == 1
|
||||
}
|
||||
|
||||
fun flagCanEarnPoints() {
|
||||
taskFlags = taskFlags or (1 shl 16)
|
||||
taskFlags = taskFlags or (1 shl 20)
|
||||
}
|
||||
/**
|
||||
*==============================================
|
||||
@@ -148,4 +148,12 @@ class SlayerFlags {
|
||||
return getTaskAmount() != 0
|
||||
}
|
||||
|
||||
fun fullClear() {
|
||||
taskFlags = 0
|
||||
rewardFlags = 0
|
||||
equipmentFlags = 0
|
||||
completedTasks = 0
|
||||
taskStreak = 0
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,8 +1,21 @@
|
||||
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.Test
|
||||
import rs09.game.node.entity.skill.slayer.SlayerFlags
|
||||
import rs09.game.node.entity.skill.slayer.SlayerManager
|
||||
import rs09.game.system.SystemLogger
|
||||
|
||||
object APITests {
|
||||
val testPlayer = Player(PlayerDetails("test", "testing"))
|
||||
val testPlayer2 = Player(PlayerDetails("test2", "testing"))
|
||||
|
||||
@Test fun testIfaceSettings(){
|
||||
var builder = IfaceSettingsBuilder()
|
||||
val testOptions = builder.enableOptions(0..9).build()
|
||||
@@ -46,5 +59,87 @@ object APITests {
|
||||
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