Added tests (WIP, failing)
This commit is contained in:
@@ -60,8 +60,10 @@ class TripletClue<C : ItemClass<C>>(val a: Item<C>, val b: Item<C>, val c: Item<
|
||||
return false
|
||||
}
|
||||
|
||||
if (ia == ib) {
|
||||
return true
|
||||
if (ia != -1 && ic != -1) {
|
||||
if (ia + 2 == ic || ia == ic + 2) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
if (isNeighbourRuleViolated(ia, ib) || isNeighbourRuleViolated(ib, ic)) {
|
||||
|
||||
@@ -32,7 +32,13 @@ fun List<List<Item<ItemClass<*>>>>.toGrid() = Grid(
|
||||
GameRow(
|
||||
category = row.first().itemType.companion,
|
||||
options = row,
|
||||
cells = row.map { GameCell(selection = null, solution = it, options = row.toMutableList()) }
|
||||
cells = row.map {
|
||||
GameCell(
|
||||
selection = null,
|
||||
solution = it,
|
||||
options = row.toMutableList()
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
@@ -48,7 +54,7 @@ class GameCell<C : ItemClass<C>>(
|
||||
|
||||
class Item<C : ItemClass<C>>(
|
||||
val itemType: C,
|
||||
val symbol: String
|
||||
val symbol: String = itemType.symbols.random()
|
||||
) {
|
||||
constructor(itemType: C) : this(itemType, itemType.symbols.random())
|
||||
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package domain
|
||||
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.feature
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.size
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.toBeLessThan
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.toEqual
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.toHaveSize
|
||||
import ch.tutteli.atrium.api.verbs.expect
|
||||
import kotlin.test.Test
|
||||
|
||||
@@ -13,6 +16,9 @@ class GameTest {
|
||||
expect(game) {
|
||||
feature(Game::areCategoriesValid).toEqual(true)
|
||||
feature(Game::areRulesViolated).toEqual(false)
|
||||
feature(Game::clues) {
|
||||
feature(List<Clue>::size).toBeLessThan(30)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
36
composeApp/src/commonTest/kotlin/domain/NeighbourClueTest.kt
Normal file
36
composeApp/src/commonTest/kotlin/domain/NeighbourClueTest.kt
Normal file
@@ -0,0 +1,36 @@
|
||||
package domain
|
||||
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.feature
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.size
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.toBeLessThan
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.toEqual
|
||||
import ch.tutteli.atrium.api.fluent.en_GB.toHaveSize
|
||||
import ch.tutteli.atrium.api.verbs.expect
|
||||
import domain.Item
|
||||
import kotlin.test.Test
|
||||
|
||||
class NeighbourClueTest {
|
||||
@Test
|
||||
fun `ensure actual neighbours are valid`() {
|
||||
val size = 5
|
||||
val grid = ItemClass.randomClasses(size)
|
||||
.map {
|
||||
it.randomItems(size).map { item -> Item(item) }
|
||||
}
|
||||
.map { row ->
|
||||
GameRow(
|
||||
category = row.first().itemType.companion,
|
||||
options = row,
|
||||
cells = row.map {
|
||||
GameCell(
|
||||
selection = it,
|
||||
solution = it,
|
||||
options = mutableListOf()
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
NeighbourClue(Item(Animals.ANT), Item(Profession.ASTRONAUT))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user