42 lines
1.4 KiB
Fennel
42 lines
1.4 KiB
Fennel
(let [{: describe
|
|
: test-end} (require :lib.test)
|
|
{: all-mills?
|
|
: toggle-player
|
|
: only-player-moves
|
|
: all-moves-are-mills?
|
|
} (require :lib.game.all-mills)]
|
|
|
|
(describe "# ALL-MILLS" (fn []
|
|
(describe "toggle-player()" (fn [t]
|
|
(t {:given "a player"
|
|
:should "return the next"
|
|
:expected 2
|
|
:actual (toggle-player 1)
|
|
})))
|
|
(describe "only-player-moves()" (fn [t]
|
|
(let [moves [ 0 2 0 2 2 2 0 0 0 0 0 0 0 2 0 0 0 2 0 2 0 1 1 1 ]
|
|
expected [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 ]
|
|
]
|
|
(t {:given "a bunch of moves and a player"
|
|
:should "filter out all the moves not belonging to the player"
|
|
: expected
|
|
:actual (only-player-moves moves 1)
|
|
}))))
|
|
(describe "all-moves-are-mills?()" (fn [t]
|
|
(let [moves [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 ]
|
|
]
|
|
(t {:given "a bunch of moves and a player"
|
|
:should "return true if all the player moves are mills"
|
|
:expected true
|
|
:actual (all-moves-are-mills? 1 moves)
|
|
}))
|
|
(let [moves [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ]
|
|
]
|
|
(t {:given "a bunch of moves and no mill and a player"
|
|
:should "return false"
|
|
:expected false
|
|
:actual (all-moves-are-mills? 1 moves)
|
|
}))))
|
|
(test-end))))
|
|
|