From 8b1e93386a210da3130a71d9e5c1698c447bf640 Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Fri, 1 Nov 2019 03:42:51 -0400 Subject: [PATCH] implemented editPlayerStateL --- src/Mtlstats/Types.hs | 8 ++++++++ test/TypesSpec.hs | 25 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/Mtlstats/Types.hs b/src/Mtlstats/Types.hs index ae597c8..6a4f1d4 100644 --- a/src/Mtlstats/Types.hs +++ b/src/Mtlstats/Types.hs @@ -50,6 +50,7 @@ module Mtlstats.Types ( gameStateL, createPlayerStateL, createGoalieStateL, + editPlayerStateL, -- ** GameState Lenses gameYear, gameMonth, @@ -584,6 +585,13 @@ createGoalieStateL = lens _ -> newCreateGoalieState) (\_ cgs -> CreateGoalie cgs) +editPlayerStateL :: Lens' ProgMode EditPlayerState +editPlayerStateL = lens + (\case + EditPlayer eps -> eps + _ -> newEditPlayerState) + (\_ eps -> EditPlayer eps) + -- | Constructor for a 'ProgState' newProgState :: ProgState newProgState = ProgState diff --git a/test/TypesSpec.hs b/test/TypesSpec.hs index 27ea3f6..75f66aa 100644 --- a/test/TypesSpec.hs +++ b/test/TypesSpec.hs @@ -47,6 +47,7 @@ spec = describe "Mtlstats.Types" $ do gameStateLSpec createPlayerStateLSpec createGoalieStateLSpec + editPlayerStateLSpec teamScoreSpec otherScoreSpec homeTeamSpec @@ -141,6 +142,24 @@ createGoalieStateLSpec = describe "createGoalieStateL" $ & cgsNumber ?~ 2 & cgsName .~ "Bob" +editPlayerStateLSpec :: Spec +editPlayerStateLSpec = describe "editPlayerStateL" $ + lensSpec editPlayerStateL + -- getters + [ ( "missing state", MainMenu, newEditPlayerState ) + , ( "withState", EditPlayer eps1, eps1 ) + ] + -- setters + [ ( "set state", MainMenu, eps1 ) + , ( "change state", EditPlayer eps1, eps2 ) + , ( "clear state", EditPlayer eps1, newEditPlayerState ) + ] + where + eps1 = newEditPlayerState + & epsSelectedPlayer ?~ 1 + eps2 = newEditPlayerState + & epsSelectedPlayer ?~ 2 + teamScoreSpec :: Spec teamScoreSpec = describe "teamScore" $ do let @@ -734,6 +753,12 @@ instance Comparable CreatePlayerState where it ("should be " ++ expected^.cpsPosition) $ actual^.cpsPosition `shouldBe` expected^.cpsPosition +instance Comparable EditPlayerState where + compareTest actual expected = + describe "epsSelectedPlayer" $ + it ("should be " ++ show (expected^.epsSelectedPlayer)) $ + actual^.epsSelectedPlayer `shouldBe` expected^.epsSelectedPlayer + instance Comparable CreateGoalieState where compareTest actual expected = do