Day 10
This commit is contained in:
193
test/Day10Spec.hs
Normal file
193
test/Day10Spec.hs
Normal file
@@ -0,0 +1,193 @@
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
|
||||
module Day10Spec (spec) where
|
||||
|
||||
import Control.Arrow ((>>>))
|
||||
import Day10
|
||||
import Test.Hspec
|
||||
import Text.Heredoc
|
||||
|
||||
testInput :: String
|
||||
testInput = [str|noop
|
||||
|addx 3
|
||||
|addx -5
|
||||
|]
|
||||
|
||||
testProgram :: [Instruction]
|
||||
testProgram = [Noop, Addx 3, Addx (-5)]
|
||||
|
||||
testInput2 :: String
|
||||
testInput2 = [str|addx 15
|
||||
|addx -11
|
||||
|addx 6
|
||||
|addx -3
|
||||
|addx 5
|
||||
|addx -1
|
||||
|addx -8
|
||||
|addx 13
|
||||
|addx 4
|
||||
|noop
|
||||
|addx -1
|
||||
|addx 5
|
||||
|addx -1
|
||||
|addx 5
|
||||
|addx -1
|
||||
|addx 5
|
||||
|addx -1
|
||||
|addx 5
|
||||
|addx -1
|
||||
|addx -35
|
||||
|addx 1
|
||||
|addx 24
|
||||
|addx -19
|
||||
|addx 1
|
||||
|addx 16
|
||||
|addx -11
|
||||
|noop
|
||||
|noop
|
||||
|addx 21
|
||||
|addx -15
|
||||
|noop
|
||||
|noop
|
||||
|addx -3
|
||||
|addx 9
|
||||
|addx 1
|
||||
|addx -3
|
||||
|addx 8
|
||||
|addx 1
|
||||
|addx 5
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|addx -36
|
||||
|noop
|
||||
|addx 1
|
||||
|addx 7
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|addx 2
|
||||
|addx 6
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|addx 1
|
||||
|noop
|
||||
|noop
|
||||
|addx 7
|
||||
|addx 1
|
||||
|noop
|
||||
|addx -13
|
||||
|addx 13
|
||||
|addx 7
|
||||
|noop
|
||||
|addx 1
|
||||
|addx -33
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|addx 2
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|addx 8
|
||||
|noop
|
||||
|addx -1
|
||||
|addx 2
|
||||
|addx 1
|
||||
|noop
|
||||
|addx 17
|
||||
|addx -9
|
||||
|addx 1
|
||||
|addx 1
|
||||
|addx -3
|
||||
|addx 11
|
||||
|noop
|
||||
|noop
|
||||
|addx 1
|
||||
|noop
|
||||
|addx 1
|
||||
|noop
|
||||
|noop
|
||||
|addx -13
|
||||
|addx -19
|
||||
|addx 1
|
||||
|addx 3
|
||||
|addx 26
|
||||
|addx -30
|
||||
|addx 12
|
||||
|addx -1
|
||||
|addx 3
|
||||
|addx 1
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|addx -9
|
||||
|addx 18
|
||||
|addx 1
|
||||
|addx 2
|
||||
|noop
|
||||
|noop
|
||||
|addx 9
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|addx -1
|
||||
|addx 2
|
||||
|addx -37
|
||||
|addx 1
|
||||
|addx 3
|
||||
|noop
|
||||
|addx 15
|
||||
|addx -21
|
||||
|addx 22
|
||||
|addx -6
|
||||
|addx 1
|
||||
|noop
|
||||
|addx 2
|
||||
|addx 1
|
||||
|noop
|
||||
|addx -10
|
||||
|noop
|
||||
|noop
|
||||
|addx 20
|
||||
|addx 1
|
||||
|addx 2
|
||||
|addx 2
|
||||
|addx -6
|
||||
|addx -11
|
||||
|noop
|
||||
|noop
|
||||
|noop
|
||||
|]
|
||||
|
||||
spec :: Spec
|
||||
spec =
|
||||
describe "Day10" $ do
|
||||
describe "Part1" $ do
|
||||
it "parses" $ do
|
||||
parseProgram testInput `shouldBe` testProgram
|
||||
it "executes" $ do
|
||||
executeProgram testProgram `shouldBe` [1,1,1,4,4,-1]
|
||||
it "executes larger program" $ do
|
||||
let registerValues = parseProgram >>> executeProgram $ testInput2
|
||||
registerValues !! 20 `shouldBe` 21
|
||||
registerValues !! 60 `shouldBe` 19
|
||||
registerValues !! 100 `shouldBe` 18
|
||||
registerValues !! 140 `shouldBe` 21
|
||||
registerValues !! 180 `shouldBe` 16
|
||||
registerValues !! 220 `shouldBe` 18
|
||||
it "computes signal strength" $ do
|
||||
let registerValues = parseProgram >>> executeProgram $ testInput2
|
||||
signalStrength registerValues `shouldBe` 13140
|
||||
it "prints a crt" $ do
|
||||
let registerValues = parseProgram >>> executeProgram $ testInput2
|
||||
putStrLn $ draw registerValues
|
||||
it "sprites drawn" $ do
|
||||
isSpriteDrawn 1 1 `shouldBe` True
|
||||
isSpriteDrawn 1 1 `shouldBe` True
|
||||
|
||||
Reference in New Issue
Block a user