Add unit tests for slayer

Kill server networking as soon as shutdown process starts
This commit is contained in:
Ceikry
2022-04-24 15:08:08 +00:00
committed by Ryan
parent 75f1e092d5
commit eab32ccef8
3 changed files with 106 additions and 2 deletions
@@ -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
}
}
+95
View File
@@ -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())
}
}