diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-25 17:13:01 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-25 17:13:01 +0200 |
| commit | 6d65520aea89e111398e2e7d3ca9b26c4c665c25 (patch) | |
| tree | 9737d1eff927b53a211ba1260774e07c2e65031d /internal | |
| parent | ee989519753ba13f156a6763caa38305773fd042 (diff) | |
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.
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/rpn/rpn_state.go | 10 | ||||
| -rw-r--r-- | internal/rpn/rpn_test.go | 5 |
2 files changed, 6 insertions, 9 deletions
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) } |
