파일
advent-of-code-2022/test/Day1Spec.hs
T

35 라인
1.1 KiB
Haskell

{-# LANGUAGE OverloadedStrings #-}
module Day1Spec (spec) where
import Test.Hspec
import Day1
import Day1.Internal
import qualified Data.Text as T
readTestFile :: IO String
readTestFile = readFile "ressources/day01-input-test"
equals :: (HasCallStack, Show a, Eq a) => a -> a -> Expectation
equals = flip shouldBe
spec :: Spec
spec =
describe "Day1" $ do
it "sorts elves" $ do
let input = [ elf 6000, elf 4000, elf 11000]
sortElves input `shouldBe` [ elf 11000, elf 6000, elf 4000]
it "converts a list of strings to a list of either int or caloriecount" $ do
readTestFile >>=
equals [ elf 6000, elf 4000, elf 11000, elf 24000, elf 10000 ]
. (parseElfInput . T.pack)
it "parser text to int" $ do
intOrZero "1000" `shouldBe` 1000
it "finds the elf with the highest calorie count" $ do
readTestFile >>=
equals (elf 24000) . (findElfWithHighestCalorieCount . T.pack)
it "sums the calorie counts" $ do
readTestFile >>=
equals (calories 45000) . (findCaloriesOfTop3Elves . T.pack)