From 09c63da8bfedfc25f0f414c5f3e430fd57be81c5 Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Thu, 24 Oct 2019 01:40:53 -0400 Subject: [PATCH] refactored createPlayerStateLSpec to use lensSpec --- test/TypesSpec.hs | 45 +++++++++++++++++++-------------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/test/TypesSpec.hs b/test/TypesSpec.hs index 807a0e1..f9fe798 100644 --- a/test/TypesSpec.hs +++ b/test/TypesSpec.hs @@ -96,32 +96,25 @@ gameStateLSpec = describe "gameStateL" $ lensSpec gameStateL where gs t = newGameState & gameType ?~ t createPlayerStateLSpec :: Spec -createPlayerStateLSpec = describe "createPlayerStateL" $ do - context "getters" $ do - context "state missing" $ let - pm = MainMenu - cps = pm^.createPlayerStateL - in it "should not have a number" $ - cps^.cpsNumber `shouldBe` Nothing - - context "existing state" $ let - pm = CreatePlayer $ newCreatePlayerState & cpsNumber ?~ 1 - cps = pm^.createPlayerStateL - in it "should have a number of 1" $ - cps^.cpsNumber `shouldBe` Just 1 - - context "setters" $ do - context "state missing" $ let - pm = MainMenu - pm' = pm & createPlayerStateL.cpsNumber ?~ 1 - in it "should set the player number to 1" $ - pm'^.createPlayerStateL.cpsNumber `shouldBe` Just 1 - - context "existing state" $ let - pm = CreatePlayer $ newCreatePlayerState & cpsNumber ?~ 1 - pm' = pm & createPlayerStateL.cpsNumber ?~ 2 - in it "should set the player number to 2" $ - pm'^.createPlayerStateL.cpsNumber `shouldBe` Just 2 +createPlayerStateLSpec = describe "createPlayerStateL" $ lensSpec createPlayerStateL + -- getters + [ ( "missing state", MainMenu, newCreatePlayerState ) + , ( "with state", CreatePlayer cps1, cps1 ) + ] + -- setters + [ ( "missing state", MainMenu, cps1 ) + , ( "change state", CreatePlayer cps1, cps2 ) + , ( "clear state", CreatePlayer cps1, newCreatePlayerState ) + ] + where + cps1 = newCreatePlayerState + & cpsNumber ?~ 1 + & cpsName .~ "Joe" + & cpsPosition .~ "centre" + cps2 = newCreatePlayerState + & cpsNumber ?~ 2 + & cpsName .~ "Bob" + & cpsPosition .~ "defense" teamScoreSpec :: Spec teamScoreSpec = describe "teamScore" $ do