This commit is contained in:
Jens Kadenbach
2022-12-05 12:01:00 +01:00
parent d740f2de7f
commit 2023211beb
10 changed files with 479 additions and 3 deletions

51
test/Day3Spec.hs Normal file
View File

@@ -0,0 +1,51 @@
{-# LANGUAGE QuasiQuotes #-}
module Day3Spec (spec) where
import Test.Hspec
import Text.Heredoc
import Day3.Part1
import Day3.Part2
inputPart1 :: String
inputPart1 = [str|vJrwpWtwJgWrhcsFMMfFFhFp
|jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|PmmdzqPrVvPwwTWBwg
|wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|ttgJtRGJQctTZtZT
|CrZsJsPPZsGzwwsLwLmpwMDw
|]
inputPart2 :: String
inputPart2 = [str|vJrwpWtwJgWrhcsFMMfFFhFp
|jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|PmmdzqPrVvPwwTWBwg
|wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|ttgJtRGJQctTZtZT
|CrZsJsPPZsGzwwsLwLmpwMDw
|]
spec :: Spec
spec =
describe "Day2" $ do
describe "Part1" $ do
it "can determine Rucksack compartment contents" $ do
splitContents simpleContents `shouldBe` ("abc", "dec")
it "can find items that are in both compartments" $ do
itemsInBoth simpleContents `shouldBe` "c"
it "determines item priority" $ do
itemPriority 'a' `shouldBe` Just 1
it "determines priority of contents" $ do
priority "abc" `shouldBe` 1 + 2 + 3
it "determines rearangement priority" $ do
rearrangementPriority inputPart1 `shouldBe` 157
describe "Part2" $ do
it "can split into groups" $ do
length groups `shouldBe` 2
it "can determine the badge of each group" $ do
map badgeOfGroup groups `shouldBe` "rZ"
it "determine the sum of badge priorities" $ do
sumOfBadgePriorities inputPart2 `shouldBe` 70
where
simpleContents = "abcdec"
groups = splitIntoGroups inputPart2