Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ data class PlayerSave(
colours = colours,
variables = variables,
inventories = inventories,
friends = friends,
friends = friends.toMap(),
ignores = ignores,
offers = offers,
history = history,
Expand All @@ -410,8 +410,8 @@ internal fun Player.copy() = PlayerSave(
colours = body.colours.copyOf(),
variables = variables.data.toMap(),
inventories = inventories.instances.mapValues { it.value.items.map { itm -> itm.copy() }.toTypedArray() },
friends = friends,
friends = friends.toMap(),
ignores = ignores.toList(),
offers = offers.copyOf(),
offers = Array(offers.size) { offers[it].copy() },
history = history.toList(),
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package world.gregs.voidps.engine.data

import org.junit.jupiter.api.Test
import world.gregs.voidps.engine.data.exchange.ExchangeOffer
import world.gregs.voidps.engine.entity.character.player.Player
import world.gregs.voidps.engine.entity.character.player.chat.clan.ClanRank
import kotlin.test.assertEquals

internal class PlayerSaveTest {

@Test
fun `Snapshot doesn't share the player's friends`() {
val player = Player(accountName = "name")
player.friends["first"] = ClanRank.Friend

val save = player.copy()
player.friends["second"] = ClanRank.Friend

assertEquals(mapOf("first" to ClanRank.Friend), save.friends, "Snapshot changed after the player edited their friends list")
}

@Test
fun `Snapshot doesn't share the player's exchange offers`() {
val player = Player(accountName = "name")
player.offers[0] = ExchangeOffer(id = 1, item = "coins", amount = 10, price = 5)

val save = player.copy()
player.offers[0].completed = 7

assertEquals(0, save.offers[0].completed, "Snapshot changed after the player's offer progressed")
}
}
Loading