diff --git a/src/Mtlstats/Types.hs b/src/Mtlstats/Types.hs index 4d8f723..6403c90 100644 --- a/src/Mtlstats/Types.hs +++ b/src/Mtlstats/Types.hs @@ -1008,4 +1008,4 @@ addGoalieStats g1 g2 = GoalieStats -- | Determines a goalie's average goals allowed per game. gsAverage :: GoalieStats -> Rational -gsAverage = undefined +gsAverage gs = fromIntegral (gs^.gsGoalsAllowed) / fromIntegral (gs^.gsGames) diff --git a/test/TypesSpec.hs b/test/TypesSpec.hs index e2c6f57..294d17d 100644 --- a/test/TypesSpec.hs +++ b/test/TypesSpec.hs @@ -34,6 +34,7 @@ import Control.Monad (replicateM) import Data.Aeson (FromJSON, ToJSON, decode, encode, toJSON) import Data.Aeson.Types (Value (Object)) import qualified Data.HashMap.Strict as HM +import Data.Ratio ((%)) import Lens.Micro (Lens', (&), (^.), (.~), (?~)) import System.Random (randomRIO) import Test.Hspec (Spec, context, describe, it, shouldBe) @@ -80,6 +81,7 @@ spec = describe "Mtlstats.Types" $ do goalieSummarySpec goalieIsActiveSpec addGoalieStatsSpec + gsAverageSpec Menu.spec playerSpec :: Spec @@ -810,6 +812,17 @@ addGoalieStatsSpec = describe "addGoalieStats" $ let in it ("should be " ++ show expected) $ actual `shouldBe` expected +gsAverageSpec :: Spec +gsAverageSpec = describe "gsAverage" $ let + gs = newGoalieStats + & gsGames .~ 2 + & gsGoalsAllowed .~ 3 + + expected = 3 % 2 + + in it ("should be " ++ show expected) $ + gsAverage gs `shouldBe` expected + joe :: Player joe = newPlayer 2 "Joe" "center"