mirror of
https://github.com/bertptrs/adventofcode.git
synced 2025-12-25 21:00:31 +01:00
Implement day 05.
This commit is contained in:
54
2019/tests/test_intcode.cpp
Normal file
54
2019/tests/test_intcode.cpp
Normal file
@@ -0,0 +1,54 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include "utils.hpp"
|
||||
|
||||
using aoc2019::run_intcode;
|
||||
|
||||
auto run_program(std::vector<int> program, std::deque<int> input) {
|
||||
return run_intcode(program, std::move(input));
|
||||
}
|
||||
|
||||
TEST(Intcode, TestPositionEquality) {
|
||||
const std::vector<int> program = {3, 9, 8, 9, 10, 9, 4, 9, 99, -1, 8};
|
||||
|
||||
ASSERT_EQ(1, run_program(program, {8}).front());
|
||||
ASSERT_EQ(0, run_program(program, {9}).front());
|
||||
}
|
||||
|
||||
TEST(Intcode, TestPositionLess) {
|
||||
const std::vector<int> program = {3, 9, 7, 9, 10, 9, 4, 9, 99, -1, 8};
|
||||
|
||||
ASSERT_EQ(1, run_program(program, {7}).front());
|
||||
ASSERT_EQ(0, run_program(program, {9}).front());
|
||||
}
|
||||
|
||||
TEST(Intcode, TestImmediateEquality) {
|
||||
const std::vector<int> program = {3, 3, 1108, -1, 8, 3, 4, 3, 99};
|
||||
|
||||
ASSERT_EQ(1, run_program(program, {8}).front());
|
||||
ASSERT_EQ(0, run_program(program, {9}).front());
|
||||
}
|
||||
|
||||
TEST(Intcode, TestImmediateLess) {
|
||||
const std::vector<int> program = {3, 3, 1107, -1, 8, 3, 4, 3, 99};
|
||||
|
||||
ASSERT_EQ(1, run_program(program, {7}).front());
|
||||
ASSERT_EQ(0, run_program(program, {9}).front());
|
||||
}
|
||||
|
||||
TEST(Intcode, TestComplicatedConditional) {
|
||||
const std::vector<int> program = {3, 21, 1008, 21, 8, 20, 1005, 20, 22, 107, 8, 21, 20, 1006, 20, 31,
|
||||
1106, 0, 36, 98, 0, 0, 1002, 21, 125, 20, 4, 20, 1105, 1, 46, 104,
|
||||
999, 1105, 1, 46, 1101, 1000, 1, 20, 4, 20, 1105, 1, 46, 98, 99};
|
||||
auto pcopy = program;
|
||||
|
||||
auto output = run_intcode(pcopy, {7});
|
||||
ASSERT_EQ(999, output.front());
|
||||
|
||||
pcopy = program;
|
||||
output = run_intcode(pcopy, {9});
|
||||
ASSERT_EQ(1001, output.front());
|
||||
|
||||
pcopy = program;
|
||||
output = run_intcode(pcopy, {8});
|
||||
ASSERT_EQ(1000, output.front());
|
||||
}
|
||||
Reference in New Issue
Block a user