View Source AOC.Case (Advent of Code Utils v4.0.0)
ExUnit.CaseTemplate for writing advent of code test cases.
This template inserts module tags and helper functions into the unit test module. Concretely, it
inserts several module tags, which can be used to selectively test certain days using
mix test. It also inserts several helpers which make it possible to access the example and puzzle
input within the tests.
use statement expects a
day option, which are used to generate the correct
module tags and helper functions.
AOC.aoc_test/4 instead of this case template.
This case adds the following module tags:
year: the year of the puzzle
day: the day of the puzzle
aoc: the year and day of the puzzle, separated by a dash, e.g.
mix test allows you to filter tests based on tags, therefore, you can do the following:
mix test --only year:1991: will run all tests associated with year 1991.
mix test --only day:8: will run all tests associated with day 8.
--only options combines the options, i.e., running
mix test --only day:8 --year:1991 will run all tests of year 1991 and all the tests of any
day 8. This is problematic if your solution repository spans multiple years. Therefore, we
aoc tag, which uniquely identifies a day:
mix test --only aoc:1991-8: will run all the tests associated with day 8 of year 1991.
If your solution repository only contains modules for a single year, this behaves identical to
mix test --only day:8.
This template injects several helpers into the test module which can be used to access the
example and puzzle input. These helpers behave similar to those defined in
AOC.IEx, but always
fetch the input or example associated with the solution module. The following helpers are
example_string/0: Fetch the example input with trailing newlines removed.
input_string/0: Fetch the puzzle input, trailing newlines are removed.
input_path/0: Get the path to the puzzle input.
example_path/0: Get the path to the example input.