package intcodeprocessor

import (
	"testing"
)

func TestNewAddProgram(t *testing.T) {
	strt := []int{1, 0, 0, 0, 99}
	want := []int{2, 0, 0, 0, 99}
	p := NewProgram(strt)
	p.Run()
	if !intSliceEquals(p.GetCode(), want) {
		t.Errorf("Program.GetCode() = %q, want %q", p.GetCode(), want)
	}
}

func TestNewMultProgram(t *testing.T) {
	strt := []int{2, 3, 0, 3, 99}
	want := []int{2, 3, 0, 6, 99}
	p := NewProgram(strt)
	p.Run()
	if !intSliceEquals(p.GetCode(), want) {
		t.Errorf("Program.GetCode() = %q, want %q", p.GetCode(), want)
	}
}

func intSliceEquals(s1, s2 []int) bool {
	for k := range s1 {
		if s1[k] != s2[k] {
			return false
		}
	}
	return true
}
