From 8f35c2dc6516303ae0786d08cc7912ccb8218f78 Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Tue, 10 Dec 2019 09:29:12 -0300 Subject: Initial commit --- t/01-basic.t | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 t/01-basic.t (limited to 't/01-basic.t') diff --git a/t/01-basic.t b/t/01-basic.t new file mode 100644 index 0000000..cebebd8 --- /dev/null +++ b/t/01-basic.t @@ -0,0 +1,62 @@ +use v6.c; +use Test; +use AdventOfCode; + +plan 8; + +my $test-vm = IntcodeVM.new(slurp("./data/day2-a.txt")); + +sub check-vm($input, $output, $name) { + my $vm = IntcodeVM.new($input); + $vm.run; + is $vm.memory.join(','), $output, $name; +} + +check-vm "1,0,0,0,99", "2,0,0,0,99", 'first example'; +check-vm "2,3,0,3,99", "2,3,0,6,99", 'second example'; +check-vm '2,4,4,5,99,0', '2,4,4,5,99,9801', 'third example'; +check-vm '1,1,1,4,99,5,6,0,99', '30,1,1,4,2,5,6,0,99', 'last example'; + +{ + my $input = slurp("./data/day2-a.txt"); + my $vm = IntcodeVM.new($input); + $vm.memory[1] = 12; + $vm.memory[2] = 2; + + $vm.run(); + + is $vm.output, 3760627, "day 2 first problem output"; +} + +subtest "VM don't change program after run", { + my $input = '1,1,1,4,99,5,6,0,99'; + my $vm = IntcodeVM.new($input); + $vm.run; + is $vm.program, $input.split(','), 'simple input'; +} + +subtest "VM resets memory", { + my $input = '1,1,1,4,99,5,6,0,99'; + my $vm = IntcodeVM.new($input); + $vm.run; + isnt $vm.memory, $vm.program, 'Run changes memory'; + my $memory = $vm.memory; + $vm.reset-memory(); + is $vm.memory, $vm.program, '.reset-memory() resets memory to program'; + + $test-vm.memory[1] = 12; + $test-vm.memory[2] = 2; + $test-vm.run; + is $test-vm.output, 3760627, "day 2 first problem output"; + $test-vm.reset-memory; + isnt $test-vm.output, 3760627, "day2 first problem resets memory"; +} + +subtest "day2 example", { + my $input = slurp("./data/day2-a.txt"); + my $vm = IntcodeVM.new($input); + $vm.run(); +} + + +done-testing; -- cgit v1.2.3-70-g09d2