Fix tests
This commit is contained in:
parent
fd046e2ca4
commit
3d8e3601d0
4 changed files with 22 additions and 24 deletions
|
@ -21,7 +21,6 @@ import kotlin.random.Random
|
|||
*/
|
||||
class GameController {
|
||||
private val minefield: Minefield
|
||||
private val randomGenerator: Random
|
||||
private val startTime = System.currentTimeMillis()
|
||||
private var saveId = 0
|
||||
private var firstOpen: FirstOpen = FirstOpen.Unknown
|
||||
|
@ -41,7 +40,6 @@ class GameController {
|
|||
constructor(minefield: Minefield, seed: Long, saveId: Int? = null) {
|
||||
this.minefieldCreator = MinefieldCreator(minefield, Random(seed))
|
||||
this.minefield = minefield
|
||||
this.randomGenerator = Random(seed)
|
||||
this.seed = seed
|
||||
this.saveId = saveId ?: 0
|
||||
|
||||
|
@ -51,7 +49,6 @@ class GameController {
|
|||
constructor(save: Save) {
|
||||
this.minefieldCreator = MinefieldCreator(save.minefield, Random(save.seed))
|
||||
this.minefield = save.minefield
|
||||
this.randomGenerator = Random(save.seed)
|
||||
this.saveId = save.uid
|
||||
this.seed = save.seed
|
||||
this.firstOpen = save.firstOpen
|
||||
|
@ -64,10 +61,10 @@ class GameController {
|
|||
fun getArea(id: Int) = field.first { it.id == id }
|
||||
|
||||
@Deprecated("Will be removed")
|
||||
fun plantMinesExcept(safeId: Int) {
|
||||
field = minefieldCreator.create(safeId)
|
||||
fun plantMinesExcept(safeId: Int, includeSafeZone: Boolean = false) {
|
||||
field = minefieldCreator.create(safeId, includeSafeZone)
|
||||
mines = field.filter { it.hasMine }.asSequence()
|
||||
hasMines = true
|
||||
hasMines = mines.count() != 0
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -238,7 +235,7 @@ class GameController {
|
|||
val changed = when (actionResponse) {
|
||||
ActionResponse.OpenTile -> {
|
||||
if (!hasMines) {
|
||||
plantMinesExcept(id)
|
||||
plantMinesExcept(id, true)
|
||||
}
|
||||
|
||||
if (mark.isNotNone()) {
|
||||
|
@ -250,7 +247,7 @@ class GameController {
|
|||
}
|
||||
ActionResponse.SwitchMark -> {
|
||||
if (!hasMines) {
|
||||
plantMinesExcept(id)
|
||||
plantMinesExcept(id, true)
|
||||
openTile()
|
||||
} else if (isCovered) {
|
||||
switchMark()
|
||||
|
|
|
@ -31,10 +31,10 @@ class MinefieldCreator(
|
|||
return createMutableEmpty().toList()
|
||||
}
|
||||
|
||||
fun create(safeIndex: Int): List<Area> {
|
||||
fun create(safeIndex: Int, safeZone: Boolean): List<Area> {
|
||||
return createMutableEmpty().apply {
|
||||
// Plant mines and setup number tips
|
||||
filterNotNeighborsOf(safeIndex)
|
||||
if (safeZone) { filterNotNeighborsOf(safeIndex) } else { filterNot { it.id == safeIndex } }
|
||||
.shuffled(randomGenerator)
|
||||
.take(minefield.mines)
|
||||
.onEach {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package dev.lucasnlm.antimine.common.level
|
||||
|
||||
import dev.lucasnlm.antimine.common.level.logic.filterNeighborsOf
|
||||
import dev.lucasnlm.antimine.common.level.models.Area
|
||||
import dev.lucasnlm.antimine.common.level.models.Mark
|
||||
import dev.lucasnlm.antimine.common.level.models.Minefield
|
||||
|
@ -374,7 +375,7 @@ class GameControllerTest {
|
|||
field.map { if (it.isCovered) 1 else 0 }.toList()
|
||||
)
|
||||
|
||||
// It won't open any if the mines were not flagged.
|
||||
// It won't open any if the mines were flagged.
|
||||
singleClick(14)
|
||||
getArea(14).openNeighbors()
|
||||
assertEquals(
|
||||
|
@ -389,7 +390,7 @@ class GameControllerTest {
|
|||
)
|
||||
|
||||
// After flag its neighbors, it must open all clean neighbors.
|
||||
getArea(14).findNeighbors().filter { it.hasMine }.forEach { it.mark = Mark.Flag }
|
||||
field.filterNeighborsOf(getArea(14)).filter { it.hasMine }.forEach { it.mark = Mark.Flag }
|
||||
getArea(14).openNeighbors()
|
||||
assertEquals(
|
||||
listOf(
|
||||
|
@ -683,7 +684,7 @@ class GameControllerTest {
|
|||
updateGameControl(GameControl.fromControlType(ControlStyle.Standard))
|
||||
singleClick(3)
|
||||
assertFalse(at(3).isCovered)
|
||||
at(3).findNeighbors().forEach {
|
||||
field.filterNeighborsOf(at(3)).forEach {
|
||||
assertTrue(it.isCovered)
|
||||
}
|
||||
|
||||
|
@ -693,7 +694,7 @@ class GameControllerTest {
|
|||
}
|
||||
|
||||
longPress(3)
|
||||
at(3).findNeighbors().forEach {
|
||||
field.filterNeighborsOf(at(3)).forEach {
|
||||
if (it.hasMine) {
|
||||
assertTrue(it.isCovered)
|
||||
} else {
|
||||
|
@ -726,7 +727,7 @@ class GameControllerTest {
|
|||
updateGameControl(GameControl.fromControlType(ControlStyle.FastFlag))
|
||||
longPress(3)
|
||||
assertFalse(at(3).isCovered)
|
||||
at(3).findNeighbors().forEach {
|
||||
field.filterNeighborsOf(at(3)).forEach {
|
||||
assertTrue(it.isCovered)
|
||||
}
|
||||
|
||||
|
@ -736,7 +737,7 @@ class GameControllerTest {
|
|||
}
|
||||
|
||||
singleClick(3)
|
||||
at(3).findNeighbors().forEach {
|
||||
field.filterNeighborsOf(at(3)).forEach {
|
||||
if (it.hasMine) {
|
||||
assertTrue(it.isCovered)
|
||||
} else {
|
||||
|
@ -802,7 +803,7 @@ class GameControllerTest {
|
|||
updateGameControl(GameControl.fromControlType(ControlStyle.DoubleClick))
|
||||
doubleClick(3)
|
||||
assertFalse(at(3).isCovered)
|
||||
at(3).findNeighbors().forEach {
|
||||
field.filterNeighborsOf(at(3)).forEach {
|
||||
assertTrue(it.isCovered)
|
||||
}
|
||||
|
||||
|
@ -812,7 +813,7 @@ class GameControllerTest {
|
|||
}
|
||||
|
||||
doubleClick(3)
|
||||
at(3).findNeighbors().forEach {
|
||||
field.filterNeighborsOf(at(3)).forEach {
|
||||
if (it.hasMine) {
|
||||
assertTrue(it.isCovered)
|
||||
} else {
|
||||
|
@ -830,7 +831,7 @@ class GameControllerTest {
|
|||
assertEquals(0, field.filterNot { it.isCovered }.count())
|
||||
singleClick(40)
|
||||
assertTrue(hasMines)
|
||||
at(40).findNeighbors().forEach { assertFalse(it.isCovered) }
|
||||
field.filterNeighborsOf(at(40)).forEach { assertFalse(it.isCovered) }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -842,7 +843,7 @@ class GameControllerTest {
|
|||
assertEquals(0, field.filterNot { it.isCovered }.count())
|
||||
singleClick(40)
|
||||
assertTrue(hasMines)
|
||||
at(40).findNeighbors().forEach { assertFalse(it.isCovered) }
|
||||
field.filterNeighborsOf(at(40)).forEach { assertFalse(it.isCovered) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ class MinefieldCreatorTest {
|
|||
@Test
|
||||
fun testMinefieldCreation() {
|
||||
val creator = MinefieldCreator(Minefield(4, 4, 9), Random(200))
|
||||
val map = creator.create(2)
|
||||
val map = creator.create(2, true)
|
||||
assertEquals(
|
||||
listOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
|
||||
map.map { it.id }.toList()
|
||||
|
@ -19,7 +19,7 @@ class MinefieldCreatorTest {
|
|||
@Test
|
||||
fun testMinefieldCreationMines() {
|
||||
val creator = MinefieldCreator(Minefield(5, 5, 99), Random(200))
|
||||
val map = creator.create(12)
|
||||
val map = creator.create(12, true)
|
||||
assertEquals(
|
||||
listOf(
|
||||
1, 1, 1, 1, 1,
|
||||
|
@ -36,7 +36,7 @@ class MinefieldCreatorTest {
|
|||
@Test
|
||||
fun testMinefieldCreationMinesTips() {
|
||||
val creator = MinefieldCreator(Minefield(4, 4, 9), Random(200))
|
||||
val map = creator.create(2)
|
||||
val map = creator.create(2, true)
|
||||
assertEquals(
|
||||
listOf(
|
||||
0, 2, 0, 0,
|
||||
|
@ -50,7 +50,7 @@ class MinefieldCreatorTest {
|
|||
@Test
|
||||
fun testMinefieldCreationPosition() {
|
||||
val creator = MinefieldCreator(Minefield(4, 4, 9), Random(200))
|
||||
val map = creator.create(2)
|
||||
val map = creator.create(2, true)
|
||||
assertEquals(
|
||||
listOf(
|
||||
(0 to 0), (1 to 0), (2 to 0), (3 to 0),
|
||||
|
|
Loading…
Reference in a new issue