diff --git a/engine/build.gradle.kts b/engine/build.gradle.kts index d14b890d7..9b31d8c04 100644 --- a/engine/build.gradle.kts +++ b/engine/build.gradle.kts @@ -1,3 +1,5 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + plugins { `java-library` } @@ -8,4 +10,8 @@ dependencies { implementation(project(":utility")) implementation("io.github.classgraph:classgraph:4.8.65") implementation(kotlin("script-runtime")) +} +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-XXLanguage:+InlineClasses") } \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/factory/FloorItemFactory.kt b/engine/src/main/kotlin/org/redrune/engine/entity/factory/FloorItemFactory.kt index b7974ba07..00eefbf3a 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/factory/FloorItemFactory.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/factory/FloorItemFactory.kt @@ -2,7 +2,6 @@ package org.redrune.engine.entity.factory import org.redrune.engine.entity.event.Registered import org.redrune.engine.entity.model.FloorItem -import org.redrune.engine.entity.tile.Tiles import org.redrune.engine.event.EventBus import org.redrune.engine.model.Tile import org.redrune.utility.inject @@ -14,12 +13,10 @@ import org.redrune.utility.inject class FloorItemFactory { private val bus: EventBus by inject() - private val tiles: Tiles by inject() fun spawn(index: Int, x: Int, y: Int, plane: Int): FloorItem { - val floorItem = FloorItem(index) + val floorItem = FloorItem(index, Tile(x, y, plane)) bus.emit(Registered(floorItem)) - tiles[floorItem] = Tile(x, y, plane) return floorItem } } \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/factory/NPCFactory.kt b/engine/src/main/kotlin/org/redrune/engine/entity/factory/NPCFactory.kt index 52a22079a..5634a0660 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/factory/NPCFactory.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/factory/NPCFactory.kt @@ -2,7 +2,6 @@ package org.redrune.engine.entity.factory import org.redrune.engine.entity.event.Registered import org.redrune.engine.entity.model.NPC -import org.redrune.engine.entity.tile.Tiles import org.redrune.engine.event.EventBus import org.redrune.engine.model.Direction import org.redrune.engine.model.Tile @@ -15,12 +14,10 @@ import org.redrune.utility.inject class NPCFactory { private val bus: EventBus by inject() - private val tiles: Tiles by inject() fun spawn(id: Int, x: Int, y: Int, plane: Int, direction: Direction): NPC { - val npc = NPC(id) + val npc = NPC(id, Tile(x, y, plane)) bus.emit(Registered(npc)) - tiles[npc] = Tile(x, y, plane) return npc } } \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/factory/ObjectFactory.kt b/engine/src/main/kotlin/org/redrune/engine/entity/factory/ObjectFactory.kt index 19c51647a..fc227f219 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/factory/ObjectFactory.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/factory/ObjectFactory.kt @@ -2,7 +2,6 @@ package org.redrune.engine.entity.factory import org.redrune.engine.entity.event.Registered import org.redrune.engine.entity.model.IObject -import org.redrune.engine.entity.tile.Tiles import org.redrune.engine.event.EventBus import org.redrune.engine.model.Tile import org.redrune.utility.inject @@ -14,12 +13,10 @@ import org.redrune.utility.inject class ObjectFactory { private val bus: EventBus by inject() - private val tiles: Tiles by inject() fun spawn(id: Int, x: Int, y: Int, plane: Int, rotation: Int): IObject { - val obj = IObject(id) + val obj = IObject(id, Tile(x, y, plane)) bus.emit(Registered(obj)) - tiles[obj] = Tile(x, y, plane) return obj } } \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/factory/ProjectileFactory.kt b/engine/src/main/kotlin/org/redrune/engine/entity/factory/ProjectileFactory.kt index 6f2ef6c2d..fa5346390 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/factory/ProjectileFactory.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/factory/ProjectileFactory.kt @@ -3,6 +3,7 @@ package org.redrune.engine.entity.factory import org.redrune.engine.entity.event.Registered import org.redrune.engine.entity.model.Projectile import org.redrune.engine.event.EventBus +import org.redrune.engine.model.Tile import org.redrune.utility.inject /** @@ -14,7 +15,7 @@ class ProjectileFactory { private val bus: EventBus by inject() fun spawn(index: Int): Projectile { - val floorItem = Projectile(index) + val floorItem = Projectile(index, Tile(0, 0, 0)) bus.emit(Registered(floorItem)) return floorItem } diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/list/EntityListSystem.kts b/engine/src/main/kotlin/org/redrune/engine/entity/list/EntityListSystem.kts index 09e728317..fe8b82f90 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/list/EntityListSystem.kts +++ b/engine/src/main/kotlin/org/redrune/engine/entity/list/EntityListSystem.kts @@ -7,14 +7,12 @@ import org.redrune.engine.entity.list.obj.Objects import org.redrune.engine.entity.list.player.Players import org.redrune.engine.entity.list.proj.Projectiles import org.redrune.engine.entity.model.* -import org.redrune.engine.entity.tile.Tiles import org.redrune.engine.event.priority import org.redrune.engine.event.then import org.redrune.utility.inject loadKoinModules(entityListModule) -val tiles: Tiles by inject() val players: Players by inject() val npcs: NPCs by inject() val objects: Objects by inject() @@ -22,12 +20,11 @@ val items: FloorItems by inject() val projectiles: Projectiles by inject() Registered priority 9 then { - val tile = tiles[entity] when (entity) { - is Player -> players[tile] = entity - is NPC -> npcs[tile] = entity - is IObject -> objects[tile] = entity - is FloorItem -> items[tile] = entity - is Projectile -> projectiles[tile] = entity + is Player -> players[entity.tile] = entity + is NPC -> npcs[entity.tile] = entity + is IObject -> objects[entity.tile] = entity + is FloorItem -> items[entity.tile] = entity + is Projectile -> projectiles[entity.tile] = entity } } \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/model/Entity.kt b/engine/src/main/kotlin/org/redrune/engine/entity/model/Entity.kt index 1d6727bbe..a2ed95e0a 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/model/Entity.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/model/Entity.kt @@ -1,5 +1,7 @@ package org.redrune.engine.entity.model +import org.redrune.engine.model.Tile + /** * An identifiable object with a physical spatial location * @author Greg Hibberd @@ -7,4 +9,5 @@ package org.redrune.engine.entity.model */ interface Entity { val id: Int + var tile: Tile } \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/model/FloorItem.kt b/engine/src/main/kotlin/org/redrune/engine/entity/model/FloorItem.kt index caccaabb6..b0bb18472 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/model/FloorItem.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/model/FloorItem.kt @@ -1,8 +1,10 @@ package org.redrune.engine.entity.model +import org.redrune.engine.model.Tile + /** * An [Item] with physical location * @author Greg Hibberd * @since March 28, 2020 */ -data class FloorItem(override val id: Int) : Entity \ No newline at end of file +data class FloorItem(override val id: Int, override var tile: Tile) : Entity \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/model/IObject.kt b/engine/src/main/kotlin/org/redrune/engine/entity/model/IObject.kt index 0495f20ea..8e07ca040 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/model/IObject.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/model/IObject.kt @@ -1,8 +1,10 @@ package org.redrune.engine.entity.model +import org.redrune.engine.model.Tile + /** * Interactive Object * @author Greg Hibberd * @since March 28, 2020 */ -data class IObject(override val id: Int) : Entity \ No newline at end of file +data class IObject(override val id: Int, override var tile: Tile) : Entity \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/model/Movable.kt b/engine/src/main/kotlin/org/redrune/engine/entity/model/Movable.kt new file mode 100644 index 000000000..e549a4852 --- /dev/null +++ b/engine/src/main/kotlin/org/redrune/engine/entity/model/Movable.kt @@ -0,0 +1,11 @@ +package org.redrune.engine.entity.model + +import org.redrune.engine.model.Tile + +/** + * @author Greg Hibberd + * @since April 03, 2020 + */ +interface Movable { + val tile: Tile +} \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/model/NPC.kt b/engine/src/main/kotlin/org/redrune/engine/entity/model/NPC.kt index 00e9d1fba..a1d5f725a 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/model/NPC.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/model/NPC.kt @@ -1,8 +1,10 @@ package org.redrune.engine.entity.model +import org.redrune.engine.model.Tile + /** * A non-player character * @author Greg Hibberd * @since March 28, 2020 */ -data class NPC(override val id: Int) : Entity \ No newline at end of file +data class NPC(override val id: Int, override var tile: Tile) : Entity \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/model/Player.kt b/engine/src/main/kotlin/org/redrune/engine/entity/model/Player.kt index af5e9ccfb..fbff02b7b 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/model/Player.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/model/Player.kt @@ -1,8 +1,12 @@ package org.redrune.engine.entity.model +import org.redrune.engine.model.Tile + /** * A player controlled by client or bot * @author Greg Hibberd * @since March 28, 2020 */ -data class Player(override val id: Int) : Entity \ No newline at end of file +data class Player(override var id: Int, override var tile: Tile) : Entity, Movable { + +} \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/model/Projectile.kt b/engine/src/main/kotlin/org/redrune/engine/entity/model/Projectile.kt index 109280ffd..55db49efe 100644 --- a/engine/src/main/kotlin/org/redrune/engine/entity/model/Projectile.kt +++ b/engine/src/main/kotlin/org/redrune/engine/entity/model/Projectile.kt @@ -1,7 +1,9 @@ package org.redrune.engine.entity.model +import org.redrune.engine.model.Tile + /** * @author Greg Hibberd * @since March 28, 2020 */ -data class Projectile(override val id: Int) : Entity \ No newline at end of file +data class Projectile(override val id: Int, override var tile: Tile) : Entity \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/tile/TileList.kt b/engine/src/main/kotlin/org/redrune/engine/entity/tile/TileList.kt deleted file mode 100644 index 0ab9440b5..000000000 --- a/engine/src/main/kotlin/org/redrune/engine/entity/tile/TileList.kt +++ /dev/null @@ -1,24 +0,0 @@ -package org.redrune.engine.entity.tile - -import org.redrune.engine.entity.model.Entity -import org.redrune.engine.model.Tile - -/** - * @author Greg Hibberd - * @since March 29, 2020 - */ -class TileList : Tiles { - private val delegate: MutableMap = mutableMapOf() - - override fun get(entity: Entity): Tile { - return delegate[entity]!! - } - - override fun set(entity: Entity, tile: Tile) { - delegate[entity] = tile - } - - override fun contains(entity: Entity): Boolean { - return delegate.containsKey(entity) - } -} \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/tile/TileSystem.kts b/engine/src/main/kotlin/org/redrune/engine/entity/tile/TileSystem.kts deleted file mode 100644 index 1c07b8930..000000000 --- a/engine/src/main/kotlin/org/redrune/engine/entity/tile/TileSystem.kts +++ /dev/null @@ -1,30 +0,0 @@ -package org.redrune.engine.entity.tile - -import org.koin.core.context.loadKoinModules -import org.redrune.engine.entity.event.Registered -import org.redrune.engine.entity.model.Player -import org.redrune.engine.event.priority -import org.redrune.engine.event.then -import org.redrune.engine.event.where -import org.redrune.engine.model.Tile -import org.redrune.utility.getProperty -import org.redrune.utility.inject - -/** - * @author Greg Hibberd - * @since March 29, 2020 - */ - -loadKoinModules(tileModule) - -val tiles: Tiles by inject() -val x = getProperty("homeX", 0) -val y = getProperty("homeY", 0) -val plane = getProperty("homePlane", 0) - -// New player home spawn -Registered priority 10 where { entity is Player } then { - if (!tiles.contains(entity)) { - tiles[entity] = Tile(x, y, plane) - } -} \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/entity/tile/Tiles.kt b/engine/src/main/kotlin/org/redrune/engine/entity/tile/Tiles.kt deleted file mode 100644 index 585bf102b..000000000 --- a/engine/src/main/kotlin/org/redrune/engine/entity/tile/Tiles.kt +++ /dev/null @@ -1,24 +0,0 @@ -package org.redrune.engine.entity.tile - -import org.koin.dsl.module -import org.redrune.engine.entity.model.Entity -import org.redrune.engine.model.Tile -import org.redrune.utility.get - -/** - * @author Greg Hibberd - * @since March 30, 2020 - */ -interface Tiles { - operator fun get(entity: Entity): Tile - - operator fun set(entity: Entity, tile: Tile) - - fun contains(entity: Entity): Boolean -} - -val tileModule = module { - single { TileList() as Tiles } -} - -fun Entity.tile(): Tile = get()[this] \ No newline at end of file diff --git a/engine/src/main/kotlin/org/redrune/engine/model/Tile.kt b/engine/src/main/kotlin/org/redrune/engine/model/Tile.kt index d4bd3da68..f37cbc10a 100644 --- a/engine/src/main/kotlin/org/redrune/engine/model/Tile.kt +++ b/engine/src/main/kotlin/org/redrune/engine/model/Tile.kt @@ -4,7 +4,7 @@ package org.redrune.engine.model * @author Greg Hibberd * @since March 28, 2020 */ -data class Tile(val value: Int) {// FIXME #46 +inline class Tile(val value: Int) { constructor(x: Int, y: Int, plane: Int) : this(y + (x shl 14) + (plane shl 28)) diff --git a/engine/src/test/kotlin/org/redrune/engine/entity/factory/FloorItemFactoryTest.kt b/engine/src/test/kotlin/org/redrune/engine/entity/factory/FloorItemFactoryTest.kt index b58c82295..361c4381b 100644 --- a/engine/src/test/kotlin/org/redrune/engine/entity/factory/FloorItemFactoryTest.kt +++ b/engine/src/test/kotlin/org/redrune/engine/entity/factory/FloorItemFactoryTest.kt @@ -12,9 +12,6 @@ import org.junit.jupiter.api.extension.ExtendWith import org.koin.dsl.module import org.koin.test.mock.declareMock import org.redrune.engine.entity.event.Registered -import org.redrune.engine.entity.model.Entity -import org.redrune.engine.entity.tile.Tiles -import org.redrune.engine.entity.tile.tileModule import org.redrune.engine.event.EventBus import org.redrune.engine.event.eventBusModule import org.redrune.engine.model.Tile @@ -30,7 +27,7 @@ internal class FloorItemFactoryTest : KoinMock() { @BeforeEach fun setup() { - loadModules(module { single { FloorItemFactory() } }, eventBusModule, tileModule) + loadModules(module { single { FloorItemFactory() } }, eventBusModule) } @Test @@ -40,15 +37,12 @@ internal class FloorItemFactoryTest : KoinMock() { val bus: EventBus = declareMock { every { emit(any()) } just Runs } - val tiles: Tiles = declareMock { - every { this@declareMock[any()] = any() } just Runs// FIXME https://github.com/mockk/mockk/issues/152 - } // When val item = factory.spawn(1, 10, 20, 1) // Then assertEquals(1, item.id) verify { bus.emit(any()) } - verify { tiles[item] = Tile(10, 20, 1) } + assertEquals(item.tile, Tile(10, 20, 1)) } } \ No newline at end of file diff --git a/engine/src/test/kotlin/org/redrune/engine/entity/factory/NPCFactoryTest.kt b/engine/src/test/kotlin/org/redrune/engine/entity/factory/NPCFactoryTest.kt index 59eea9b7e..1715f5d1b 100644 --- a/engine/src/test/kotlin/org/redrune/engine/entity/factory/NPCFactoryTest.kt +++ b/engine/src/test/kotlin/org/redrune/engine/entity/factory/NPCFactoryTest.kt @@ -12,9 +12,6 @@ import org.junit.jupiter.api.extension.ExtendWith import org.koin.dsl.module import org.koin.test.mock.declareMock import org.redrune.engine.entity.event.Registered -import org.redrune.engine.entity.model.Entity -import org.redrune.engine.entity.tile.Tiles -import org.redrune.engine.entity.tile.tileModule import org.redrune.engine.event.EventBus import org.redrune.engine.event.eventBusModule import org.redrune.engine.model.Direction @@ -31,7 +28,7 @@ internal class NPCFactoryTest : KoinMock() { @BeforeEach fun setup() { - loadModules(module { single { NPCFactory() } }, eventBusModule, tileModule) + loadModules(module { single { NPCFactory() } }, eventBusModule) } @Test @@ -41,15 +38,12 @@ internal class NPCFactoryTest : KoinMock() { val bus: EventBus = declareMock { every { emit(any()) } just Runs } - val tiles: Tiles = declareMock { - every { this@declareMock[any()] = any() } just Runs// FIXME https://github.com/mockk/mockk/issues/152 - } // When val npc = factory.spawn(1, 10, 20, 1, Direction.NONE) // Then assertEquals(1, npc.id) verify { bus.emit(any()) } - verify { tiles[npc] = eq(Tile(10, 20, 1)) } + assertEquals(npc.tile, Tile(10, 20, 1)) } } \ No newline at end of file diff --git a/engine/src/test/kotlin/org/redrune/engine/entity/factory/ObjectFactoryTest.kt b/engine/src/test/kotlin/org/redrune/engine/entity/factory/ObjectFactoryTest.kt index 8bc549379..519c3b686 100644 --- a/engine/src/test/kotlin/org/redrune/engine/entity/factory/ObjectFactoryTest.kt +++ b/engine/src/test/kotlin/org/redrune/engine/entity/factory/ObjectFactoryTest.kt @@ -12,9 +12,6 @@ import org.junit.jupiter.api.extension.ExtendWith import org.koin.dsl.module import org.koin.test.mock.declareMock import org.redrune.engine.entity.event.Registered -import org.redrune.engine.entity.model.Entity -import org.redrune.engine.entity.tile.Tiles -import org.redrune.engine.entity.tile.tileModule import org.redrune.engine.event.EventBus import org.redrune.engine.event.eventBusModule import org.redrune.engine.model.Tile @@ -30,7 +27,7 @@ internal class ObjectFactoryTest : KoinMock() { @BeforeEach fun setup() { - loadModules(module { single { ObjectFactory() } }, eventBusModule, tileModule) + loadModules(module { single { ObjectFactory() } }, eventBusModule) } @Test @@ -40,15 +37,12 @@ internal class ObjectFactoryTest : KoinMock() { val bus: EventBus = declareMock { every { emit(any()) } just Runs } - val tiles: Tiles = declareMock { - every { this@declareMock[any()] = any() } just Runs// FIXME https://github.com/mockk/mockk/issues/152 - } // When val obj = factory.spawn(1, 10, 20, 1, 2) // Then assertEquals(1, obj.id) verify { bus.emit(any()) } - verify { tiles[obj] = eq(Tile(10, 20, 1)) } + assertEquals(obj.tile, Tile(10, 20, 1)) } } \ No newline at end of file diff --git a/engine/src/test/kotlin/org/redrune/engine/entity/tile/TileSystemTest.kt b/engine/src/test/kotlin/org/redrune/engine/entity/tile/TileSystemTest.kt deleted file mode 100644 index 7f7df17d8..000000000 --- a/engine/src/test/kotlin/org/redrune/engine/entity/tile/TileSystemTest.kt +++ /dev/null @@ -1,63 +0,0 @@ -package org.redrune.engine.entity.tile - -import io.mockk.* -import io.mockk.junit5.MockKExtension -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.koin.test.get -import org.koin.test.mock.declareMock -import org.redrune.engine.entity.event.Registered -import org.redrune.engine.entity.model.Player -import org.redrune.engine.event.EventBus -import org.redrune.engine.event.eventBusModule -import org.redrune.engine.model.Tile -import org.redrune.engine.script.ScriptMock - -/** - * @author Greg Hibberd @greghibberd.com> - * @since March 30, 2020 - */ -@ExtendWith(MockKExtension::class) -internal class TileSystemTest : ScriptMock() { - - @BeforeEach - override fun setup() { - loadModules(eventBusModule) - setProperty("homeX", 10) - setProperty("homeY", 20) - setProperty("homePlane", 2) - super.setup() - } - - @Test - fun `New player is set to home tile`() { - // Given - val bus: EventBus = get() - val entity = mockk(relaxed = true) - val tiles = declareMock { - every { contains(entity) } returns false - every { set(entity, any()) } just Runs - } - // When - bus.emit(Registered(entity)) - // Then - verify { tiles[entity] = Tile(10, 20, 2) }// FIXME https://github.com/mockk/mockk/issues/152 - } - - @Test - fun `Existing player isn't set to home tile`() { - // Given - val bus: EventBus = get() - val entity = mockk(relaxed = true) - val tiles = declareMock { - every { contains(entity) } returns true - every { set(entity, any()) } just Runs - } - // When - bus.emit(Registered(entity)) - // Then - verify(exactly = 0) { tiles[entity] = any() }// FIXME https://github.com/mockk/mockk/issues/152 - } - -} \ No newline at end of file diff --git a/engine/src/test/kotlin/org/redrune/engine/entity/tile/TilesTest.kt b/engine/src/test/kotlin/org/redrune/engine/entity/tile/TilesTest.kt deleted file mode 100644 index c5e530763..000000000 --- a/engine/src/test/kotlin/org/redrune/engine/entity/tile/TilesTest.kt +++ /dev/null @@ -1,42 +0,0 @@ -package org.redrune.engine.entity.tile - -import io.mockk.every -import io.mockk.junit5.MockKExtension -import io.mockk.mockk -import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.koin.test.mock.declareMock -import org.redrune.engine.entity.model.Entity -import org.redrune.engine.event.eventBusModule -import org.redrune.engine.model.Tile -import org.redrune.engine.script.KoinMock - -/** - * @author Greg Hibberd @greghibberd.com> - * @since March 30, 2020 - */ -@ExtendWith(MockKExtension::class) -internal class TilesTest : KoinMock() { - - @BeforeEach - fun setup() { - loadModules(eventBusModule) - } - - @Test - fun `Tile extension returns entity tile`() { - // Given - val entity = mockk(relaxed = true) - val tile = mockk(relaxed = true) - declareMock { - every { get(entity) } returns tile - } - // When - val tileResult = entity.tile() - // Then - assertEquals(tile, tileResult) - } - -} \ No newline at end of file