36 lines
927 B
Haskell
36 lines
927 B
Haskell
{-# LANGUAGE QuasiQuotes #-}
|
|
module Day4Spec (spec) where
|
|
|
|
import Test.Hspec
|
|
import Text.Heredoc
|
|
import Day4.Part1
|
|
import Day4.Part2
|
|
import Day4.Shared
|
|
|
|
inputPart1 :: String
|
|
inputPart1 = [str|2-4,6-8
|
|
|2-3,4-5
|
|
|5-7,7-9
|
|
|2-8,3-7
|
|
|6-6,4-6
|
|
|2-6,4-8
|
|
|]
|
|
|
|
|
|
spec :: Spec
|
|
spec =
|
|
describe "Day4" $ do
|
|
describe "Part 1" $ do
|
|
it "parses section" $ do
|
|
section "2-4" `shouldBe` 2 +=+ 4
|
|
it "parses section pair" $ do
|
|
elfPair "2-4,6-8" ` shouldBe` (2 +=+ 4, 6 +=+ 8)
|
|
it "finds fully overlapping sections" $ do
|
|
isFullyOverlapping (3 +=+ 6, 4 +=+ 6) `shouldBe` True
|
|
it "counts fully overlapping pairs" $ do
|
|
countFullyOverlappingPairs inputPart1 `shouldBe` 2
|
|
describe "Part 2" $ do
|
|
it "counts overlapping pairs" $ do
|
|
countOverlappingPairs inputPart1 `shouldBe` 4
|
|
|