package main import "testing" func TestProgram(t *testing.T) { tests := []struct { ops []int expected []int }{ { ops: []int{1, 0, 0, 0, 99}, expected: []int{2, 0, 0, 0, 99}, }, { ops: []int{2, 3, 0, 3, 99}, expected: []int{2, 3, 0, 6, 99}, }, { ops: []int{2, 4, 4, 5, 99, 0}, expected: []int{2, 4, 4, 5, 99, 9801}, }, { ops: []int{1, 1, 1, 4, 99, 5, 6, 0, 99}, expected: []int{30, 1, 1, 4, 2, 5, 6, 0, 99}, }, } test_loop: for _, test := range tests { got, err := ExecuteProgram(test.ops) if err != nil { t.Errorf("Error while executing test: %s", err.Error()) continue test_loop } if len(got) != len(test.expected) { t.Errorf("Got %+v, expected %+v", got, test.expected) continue test_loop } for i := range got { if test.expected[i] != got[i] { t.Errorf("Got %+v, expected %+v", got, test.expected) continue test_loop } } } }