make gameWon and gameTied return Maybe Bool instead of Bool
This commit is contained in:
parent
45427a050e
commit
3fe2ff10f6
|
@ -30,6 +30,7 @@ module Mtlstats.Actions
|
|||
, overtimeCheck
|
||||
) where
|
||||
|
||||
import Data.Maybe (fromMaybe)
|
||||
import Lens.Micro (over, (^.), (&), (.~), (?~), (%~))
|
||||
|
||||
import Mtlstats.Types
|
||||
|
@ -63,10 +64,10 @@ removeChar = inputBuffer %~ \case
|
|||
-- | Determines whether or not to perform a check for overtime
|
||||
overtimeCheck :: ProgState -> ProgState
|
||||
overtimeCheck s
|
||||
| gameTied (s^.progMode.gameStateL) =
|
||||
| fromMaybe False $ gameTied $ s^.progMode.gameStateL =
|
||||
s & progMode.gameStateL
|
||||
%~ (homeScore .~ Nothing)
|
||||
. (awayScore .~ Nothing)
|
||||
| gameWon (s^.progMode.gameStateL) =
|
||||
| fromMaybe False $ gameWon $ s^.progMode.gameStateL =
|
||||
s & progMode.gameStateL.overtimeFlag ?~ False
|
||||
| otherwise = s
|
||||
|
|
|
@ -493,17 +493,13 @@ otherScore s = case s ^. gameType of
|
|||
Just AwayGame -> s ^. homeScore
|
||||
Nothing -> Nothing
|
||||
|
||||
-- | Checks if the game was won (returns 'False' if unknown)
|
||||
gameWon :: GameState -> Bool
|
||||
gameWon gs = case (,) <$> teamScore gs <*> otherScore gs of
|
||||
Just (team, other) -> team > other
|
||||
Nothing -> False
|
||||
-- | Checks if the game was won
|
||||
gameWon :: GameState -> Maybe Bool
|
||||
gameWon gs = (>) <$> teamScore gs <*> otherScore gs
|
||||
|
||||
-- | Checks if the game has tied (retuns 'False' if unknown)
|
||||
gameTied :: GameState -> Bool
|
||||
gameTied gs = case (,) <$> gs^.homeScore <*> gs^.awayScore of
|
||||
Just (home, away) -> home == away
|
||||
Nothing -> False
|
||||
-- | Checks if the game has tied
|
||||
gameTied :: GameState -> Maybe Bool
|
||||
gameTied gs = (==) <$> gs^.homeScore <*> gs^.awayScore
|
||||
|
||||
-- | Calculates a player's points
|
||||
pPoints :: PlayerStats -> Int
|
||||
|
|
|
@ -259,20 +259,21 @@ gameWonSpec = describe "gameWon" $ mapM_
|
|||
it ("should be " ++ show expected) $
|
||||
gameWon gs `shouldBe` expected)
|
||||
-- gameType, homeScore, awayScore, expected
|
||||
[ ( Just HomeGame, Just 1, Just 1, False )
|
||||
, ( Just HomeGame, Just 1, Just 2, False )
|
||||
, ( Just HomeGame, Just 2, Just 1, True )
|
||||
, ( Just AwayGame, Just 1, Just 1, False )
|
||||
, ( Just AwayGame, Just 1, Just 2, True )
|
||||
, ( Just AwayGame, Just 2, Just 1, False )
|
||||
, ( Nothing, Just 1, Just 2, False )
|
||||
, ( Just HomeGame, Nothing, Just 1, False )
|
||||
, ( Just AwayGame, Nothing, Just 1, False )
|
||||
, ( Just HomeGame, Just 1, Nothing, False )
|
||||
, ( Just AwayGame, Just 1, Nothing, False )
|
||||
, ( Nothing, Nothing, Nothing, False )
|
||||
[ ( Just HomeGame, Just 1, Just 1, Just False )
|
||||
, ( Just HomeGame, Just 1, Just 2, Just False )
|
||||
, ( Just HomeGame, Just 2, Just 1, Just True )
|
||||
, ( Just AwayGame, Just 1, Just 1, Just False )
|
||||
, ( Just AwayGame, Just 1, Just 2, Just True )
|
||||
, ( Just AwayGame, Just 2, Just 1, Just False )
|
||||
, ( Nothing, Just 1, Just 2, Nothing )
|
||||
, ( Just HomeGame, Nothing, Just 1, Nothing )
|
||||
, ( Just AwayGame, Nothing, Just 1, Nothing )
|
||||
, ( Just HomeGame, Just 1, Nothing, Nothing )
|
||||
, ( Just AwayGame, Just 1, Nothing, Nothing )
|
||||
, ( Nothing, Nothing, Nothing, Nothing )
|
||||
]
|
||||
|
||||
gameTiedSpec :: Spec
|
||||
gameTiedSpec = describe "gameTied" $ mapM_
|
||||
(\(home, away, expected) -> let
|
||||
desc = "home score: " ++ show home ++
|
||||
|
@ -283,11 +284,11 @@ gameTiedSpec = describe "gameTied" $ mapM_
|
|||
in context desc $
|
||||
it ("should be " ++ show expected) $
|
||||
gameTied gs `shouldBe` expected)
|
||||
[ ( Nothing, Nothing, False )
|
||||
, ( Nothing, Just 1, False )
|
||||
, ( Just 1, Nothing, False )
|
||||
, ( Just 1, Just 1, True )
|
||||
, ( Just 1, Just 2, False )
|
||||
[ ( Nothing, Nothing, Nothing )
|
||||
, ( Nothing, Just 1, Nothing )
|
||||
, ( Just 1, Nothing, Nothing )
|
||||
, ( Just 1, Just 1, Just True )
|
||||
, ( Just 1, Just 2, Just False )
|
||||
]
|
||||
|
||||
pPointsSpec :: Spec
|
||||
|
|
Loading…
Reference in New Issue
Block a user