34 lines
1.4 KiB
FSharp
34 lines
1.4 KiB
FSharp
module Snake.Tests.M05Game
|
|
|
|
open Expecto
|
|
open Snake
|
|
open Snake.Tests.Fixtures
|
|
|
|
let private replayCase () = List.head (cases "m05-replay")
|
|
let private start () = gameState (arg 0 (replayCase ()))
|
|
let private actions () = list action (arg 1 (replayCase ()))
|
|
|
|
[<Tests>]
|
|
let tests =
|
|
testList "M05 Game" [
|
|
yield! fixtureTests "m05-update" "update" (fun c ->
|
|
Expect.equal (Game.update (gameState (arg 0 c)) (action (arg 1 c))) (gameState (expected c)) "update")
|
|
|
|
yield! fixtureTests "m05-replay" "replay" (fun c ->
|
|
Expect.equal (Game.replay (gameState (arg 0 c)) (list action (arg 1 c))) (gameState (expected c)) "replay")
|
|
|
|
yield! fixtureTests "m05-history" "history" (fun c ->
|
|
Expect.equal
|
|
(Game.history (gameState (arg 0 c)) (list action (arg 1 c)))
|
|
(list gameState (expected c))
|
|
"history")
|
|
|
|
testCase "history has one more state than there are actions" (fun () ->
|
|
Expect.equal (List.length (Game.history (start ()) (actions ()))) (List.length (actions ()) + 1) "length")
|
|
|
|
testCase "history starts at the start state and ends where replay ends" (fun () ->
|
|
let states = Game.history (start ()) (actions ())
|
|
Expect.equal (List.head states) (start ()) "first"
|
|
Expect.equal (List.last states) (Game.replay (start ()) (actions ())) "last")
|
|
]
|