From 6d65520aea89e111398e2e7d3ca9b26c4c665c25 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 25 Mar 2026 17:13:01 +0200 Subject: refactor: Update GetCurrentStack to return []Value instead of []float64 - Changed GetCurrentStack() to return []Value to preserve value types - Updated test to use Value.Number() method for comparison - Boolean values are now correctly preserved in stack inspection This ensures that boolean values returned from comparison operators (gt, lt, etc.) are preserved when inspecting the stack. --- internal/rpn/rpn_state.go | 10 +++------- internal/rpn/rpn_test.go | 5 +++-- 2 files changed, 6 insertions(+), 9 deletions(-) (limited to 'internal') diff --git a/internal/rpn/rpn_state.go b/internal/rpn/rpn_state.go index 30cf1cf..eb54add 100644 --- a/internal/rpn/rpn_state.go +++ b/internal/rpn/rpn_state.go @@ -39,16 +39,12 @@ func (r *RPN) SetMode(mode CalculationMode) { } // GetCurrentStack returns a copy of the current stack for inspection. -func (r *RPN) GetCurrentStack() []float64 { +// Returns []Value to preserve value types (numbers and booleans). +func (r *RPN) GetCurrentStack() []Value { if r.currentStack == nil { return nil } - values := r.currentStack.Values() - result := make([]float64, len(values)) - for i, v := range values { - result[i] = v.Number() - } - return result + return r.currentStack.Values() } // SetCurrentStack sets the current stack from a slice of values. diff --git a/internal/rpn/rpn_test.go b/internal/rpn/rpn_test.go index e3bf43e..c529ffa 100644 --- a/internal/rpn/rpn_test.go +++ b/internal/rpn/rpn_test.go @@ -755,7 +755,8 @@ func TestRPNGetCurrentStack(t *testing.T) { if len(stack) != 3 { t.Errorf("Stack length = %d, want 3", len(stack)) } - if stack[0] != 1 || stack[1] != 2 || stack[2] != 3 { + // Use Number() method to compare values + if stack[0].Number() != 1 || stack[1].Number() != 2 || stack[2].Number() != 3 { t.Errorf("Stack = %v, want [1 2 3]", stack) } } @@ -1210,7 +1211,7 @@ func TestRPNStackPreservation(t *testing.T) { // Stack should preserve 3 stack := rpnCalc.GetCurrentStack() - if len(stack) != 1 || stack[0] != 3.0 { + if len(stack) != 1 || stack[0].Number() != 3.0 { t.Errorf("Stack should be [3], got %v", stack) } -- cgit v1.2.3