From 21aaaede8ee3232182c660d34c1de8fbdb7e4a73 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Sun, 28 Aug 2022 18:26:44 -0400 Subject: [PATCH] Fixed issue with pushing to stack --- creature.go | 3 ++- creature_test.go | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/creature.go b/creature.go index f080a83..72b2e68 100644 --- a/creature.go +++ b/creature.go @@ -207,7 +207,7 @@ func (machine *Machine) instruction() (instruction int) { // should be called then the stack pointer is really small compared to the // actual stack size, or the stack pointer is bigger than the stack. func (machine *Machine) reallocateStack() { - reallocatedStack := make([]int, machine.pointer*3/2) + reallocatedStack := make([]int, machine.pointer*2) copy(reallocatedStack, machine.stack) machine.stack = reallocatedStack } @@ -219,6 +219,7 @@ func (machine *Machine) Push(word int) { if len(machine.stack) <= machine.pointer { machine.reallocateStack() } + machine.stack[machine.pointer] = word } // Pop pops the last word off of the stack, and returns it, decreasing the stack diff --git a/creature_test.go b/creature_test.go index 617a47b..20f3940 100644 --- a/creature_test.go +++ b/creature_test.go @@ -2,6 +2,28 @@ package creature import "testing" +func TestPush(test *testing.T) { + machine := Machine { + Program: []int { + 0x0, 654, + }, + } + + err := machine.Execute(0) + if err != nil { + test.Log("machine exited with error:", err) + test.Fail() + } + + result := machine.Pop() + test.Log("popped:", result) + + if result != 654 { + test.Log("result should be", 654) + test.Fail() + } +} + func TestArithmetic(test *testing.T) { machine := Machine { Program: []int {