(let [{: no-moves?} (require :lib.no-moves) {: neighbors} (require :lib.constants) {: describe :end test-end} (require :lib.test) with-neighbors (partial no-moves? neighbors) ] (describe "no-moves()" (fn [t] (let [moves [ 1 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 ] player 1 ] (t {:given "one move with no moves" :should "return true" :expected true :actual (with-neighbors moves player) })) (let [moves [ 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] player 1 ] (t {:given "one move with one move" :should "return false" :expected false :actual (with-neighbors moves player) })) (let [moves [ 1 1 1 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 ] player 1 ] (t {:given "several moves with no moves" :should "return true" :expected true :actual (with-neighbors moves player) })) (let [moves [ 0 2 0 2 1 2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] player 1 ] (t {:given "four occupied neighbors" :should "return true" :expected true :actual (with-neighbors moves player) })) (let [moves [ 1 2 1 2 0 2 1 2 1 2 1 0 1 2 1 2 2 2 0 1 0 0 0 0 0 ] player 2 ] (t {:given "this turn that is giving me trouble" :should "return true" :expected true :actual (with-neighbors moves player) })) (test-end))))