Added unit tests for regions (now requires cache at Server/src/resources/cache)

Reverted some really old changes (2019) to house loading code (Might fix construction? Probably not.)
This commit is contained in:
Ceikry
2022-04-25 12:15:56 +00:00
committed by Ryan
parent eab32ccef8
commit 933dc72a48
2 changed files with 122 additions and 6 deletions
@@ -378,12 +378,11 @@ public final class HouseManager {
Region.load(from, true);
RegionChunk defaultChunk = from.getPlanes()[style.getPlane()].getRegionChunk(1, 0);
RegionChunk defaultSkyChunk = from.getPlanes()[1].getRegionChunk(0,0);
ZoneBorders borders;
//DynamicRegion[] regions = DynamicRegion.create(borders);
region = DynamicRegion.create(style.getRegionId());
/* region.setBorders(borders);
ZoneBorders borders = DynamicRegion.reserveArea(8,8);
region = new DynamicRegion(-1, borders.getSouthWestX() >> 6, borders.getSouthWestY() >> 6);
region.setBorders(borders);
region.setUpdateAllPlanes(true);
RegionManager.addRegion(region.getId(), region);*/
RegionManager.addRegion(region.getId(), region);
configureRoofs();
for (int z = 0; z < 4; z++) {
for (int x = 0; x < 8; x++) {
@@ -401,7 +400,7 @@ public final class HouseManager {
region.replaceChunk(z, x, y, copy, from);
room.loadDecorations(z, copy, this);
} else {
region.replaceChunk(z, x, y, z != 0 ? defaultSkyChunk.copy(region.getPlanes()[z]) : defaultChunk.copy(region.getPlanes()[0]), from);
region.replaceChunk(z, x, y, z != 0 ? null : defaultChunk.copy(region.getPlanes()[0]), from);
}
}
}
+117
View File
@@ -0,0 +1,117 @@
import core.cache.Cache
import core.game.world.map.Region
import core.game.world.map.RegionChunk
import core.game.world.map.RegionManager
import core.game.world.map.build.DynamicRegion
import core.game.world.map.build.LandscapeParser
import org.junit.Assert
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import rs09.game.system.config.ServerConfigParser
import rs09.game.system.config.XteaParser
class RegionTests {
companion object {
init {
ServerConfigParser.parse("worldprops/default.conf")
XteaParser().load()
Cache.init(this::class.java.getResource("cache")?.path.toString())
}
}
@Test fun testRegionLoad() {
val region = RegionManager.forId(12850)
Region.load(region)
Assertions.assertNotEquals(0, region.objectCount, "Region has no objects! (Failed to parse?)")
}
@Test fun shouldHaveDifferentIdForDynamicCopy() {
val region = RegionManager.forId(12850)
val dynamic = DynamicRegion.create(12850)
Assertions.assertNotEquals(region.regionId, (dynamic.x shl 8) or dynamic.y)
}
@Test fun dynamicRegionCreationShouldNotReplaceOriginal() {
val region = RegionManager.forId(12850)
val dynamic = DynamicRegion.create(12850)
Assertions.assertEquals(false, RegionManager.forId(12850) is DynamicRegion)
}
@Test fun testDynamicRegionHasSameObjects() {
val base = RegionManager.forId(12850)
Region.load(base)
val dynamic = DynamicRegion.create(12850)
Region.load(dynamic)
Assertions.assertEquals(base.objectCount, dynamic.objectCount, "Dynamic and standard have differing object counts!")
}
@Test fun testObjectExistsInStandardRegion() {
val base = RegionManager.forId(12850)
Region.load(base)
val targetLoc = base.baseLocation.transform(23, 17, 0) //location of a bush
Assertions.assertEquals(36782, RegionManager.getObject(targetLoc)?.id ?: -1, "Object does not exist at expected location!")
}
@Test fun testObjectExistsInDynamicRegion() {
val base = RegionManager.forId(12850)
val dynamic = DynamicRegion.create(12850)
Region.load(base)
Region.load(dynamic)
val targetLoc = dynamic.baseLocation.transform(23, 17, 0)
Assertions.assertEquals(36782, RegionManager.getObject(targetLoc)?.id ?: -1, "Object does not exist at expected location!")
}
@Test fun testObjectExistsInCopiedChunk() {
val base = RegionManager.forId(12850)
val dynamic = DynamicRegion.create(12851)
Region.load(base)
Region.load(dynamic)
val targetLoc = dynamic.baseLocation.transform(23, 17, 0)
Assertions.assertEquals(null, RegionManager.getObject(targetLoc), "Object exists pre-copy?")
val replacement = base.planes[0].getRegionChunk(2, 2)
dynamic.replaceChunk(0, 2, 2, replacement.copy(dynamic.planes[0]), base)
Assertions.assertEquals(36782, RegionManager.getObject(targetLoc)?.id ?: -1, "Object does not exist at expected location!")
}
@Test fun testObjectExistsInCopiedChunkUsingBuildFlag() {
val base = RegionManager.forId(12850)
val dynamic = DynamicRegion.create(12851)
Region.load(base, true)
Region.load(dynamic, true)
val targetLoc = dynamic.baseLocation.transform(23, 17, 0)
Assertions.assertEquals(null, RegionManager.getObject(targetLoc), "Object exists pre-copy?")
val replacement = base.planes[0].getRegionChunk(2, 2)
dynamic.replaceChunk(0, 2, 2, replacement.copy(dynamic.planes[0]), base)
Assertions.assertEquals(36782, RegionManager.getObject(targetLoc)?.id ?: -1, "Object does not exist at expected location!")
}
@Test fun testObjectExistsInCopiedChunkCopiedIntoBlankRegion() {
val base = RegionManager.forId(12850)
val borders = DynamicRegion.reserveArea(8,8)
val dynamic = DynamicRegion(-1, borders.southWestX shr 6, borders.southWestY shr 6)
dynamic.borders = borders
dynamic.isUpdateAllPlanes = true
RegionManager.addRegion(dynamic.id, dynamic)
val targetLoc = dynamic.baseLocation.transform(23, 17, 0)
val replacement = base.planes[0].getRegionChunk(2,2)
dynamic.replaceChunk(0, 2, 2, replacement.copy(dynamic.planes[0]), base)
Assertions.assertEquals(36782, RegionManager.getObject(targetLoc)?.id ?: -1, "Object does not exist at expected location!")
}
@Test fun testObjectExistsInCopiedChunkInLinkedRegion() {
val base = DynamicRegion.create(12850)
val borders = DynamicRegion.reserveArea(8,8)
val dynamic = DynamicRegion(-1, borders.southWestX shr 6, borders.southWestY shr 6)
dynamic.borders = borders
dynamic.isUpdateAllPlanes = true
RegionManager.addRegion(dynamic.id, dynamic)
val targetLoc = dynamic.baseLocation.transform(23, 17, 0)
val replacement = base.planes[0].getRegionChunk(2,2)
dynamic.replaceChunk(0, 2, 2, replacement.copy(dynamic.planes[0]), base)
base.link(dynamic)
Assertions.assertEquals(36782, RegionManager.getObject(targetLoc)?.id ?: -1, "Object does not exist at expected location!")
}
}