implemented teamPoints

This commit is contained in:
Jonathan Lamothe 2019-08-22 03:06:36 -04:00
parent 87eb2b9f16
commit ff19cd9fb5
2 changed files with 36 additions and 1 deletions

View File

@ -75,7 +75,10 @@ module Mtlstats.Types (
newPlayerStats, newPlayerStats,
newGoalie, newGoalie,
newGoalieStats, newGoalieStats,
-- * Helper functions -- * Helper Functions
-- ** ProgState Helpers
teamPoints,
-- ** Player Helpers
pPoints pPoints
) where ) where
@ -372,6 +375,15 @@ newGoalieStats = GoalieStats
, _gsTies = 0 , _gsTies = 0
} }
-- | Determines the team's points
teamPoints :: ProgState -> Maybe Int
teamPoints s = case s ^. progMode of
NewGame gs -> case gs ^. gameType of
Just HomeGame -> gs ^. homeScore
Just AwayGame -> gs ^. visitorScore
Nothing -> Nothing
_ -> Nothing
-- | Calculates a player's points -- | Calculates a player's points
pPoints :: PlayerStats -> Int pPoints :: PlayerStats -> Int
pPoints s = s^.psGoals + s^.psAssists pPoints s = s^.psGoals + s^.psAssists

View File

@ -35,6 +35,7 @@ import qualified Types.MenuSpec as Menu
spec :: Spec spec :: Spec
spec = describe "Mtlstats.Types" $ do spec = describe "Mtlstats.Types" $ do
pPointsSpec pPointsSpec
teamPointsSpec
playerSpec playerSpec
goalieSpec goalieSpec
databaseSpec databaseSpec
@ -58,6 +59,28 @@ pPointsSpec = describe "pPoints" $ mapM_
, ( 2, 3, 5 ) , ( 2, 3, 5 )
] ]
teamPointsSpec :: Spec
teamPointsSpec = describe "teamPoints" $ do
let
m t = NewGame $ newGameState
& gameType .~ Just t
& homeScore .~ Just 1
& visitorScore .~ Just 2
s t = newProgState
& progMode .~ m t
context "unexpected state" $
it "should return Nothing" $
teamPoints newProgState `shouldBe` Nothing
context "HomeGame" $
it "should return 1" $
teamPoints (s HomeGame) `shouldBe` Just 1
context "AwayGame" $
it "should return 2" $
teamPoints (s AwayGame) `shouldBe` Just 2
playerSpec :: Spec playerSpec :: Spec
playerSpec = describe "Player" $ do playerSpec = describe "Player" $ do