summaryrefslogtreecommitdiff
path: root/internal/rpn/rpn_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rpn/rpn_test.go')
-rw-r--r--internal/rpn/rpn_test.go62
1 files changed, 31 insertions, 31 deletions
diff --git a/internal/rpn/rpn_test.go b/internal/rpn/rpn_test.go
index bd8e0fa..085eb1c 100644
--- a/internal/rpn/rpn_test.go
+++ b/internal/rpn/rpn_test.go
@@ -11,7 +11,7 @@ import (
func TestNewRPN(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
if r == nil {
t.Fatal("NewRPN() returned nil")
}
@@ -102,7 +102,7 @@ func TestParseAndEvaluateSimple(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
result, err := r.ParseAndEvaluate(tt.input)
if err != nil {
t.Fatalf("ParseAndEvaluate(%q) returned error: %v", tt.input, err)
@@ -140,7 +140,7 @@ func TestParseAndEvaluateChain(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
result, err := r.ParseAndEvaluate(tt.input)
if err != nil {
t.Fatalf("ParseAndEvaluate(%q) returned error: %v", tt.input, err)
@@ -178,7 +178,7 @@ func TestParseAndEvaluateStackOps(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
result, err := r.ParseAndEvaluate(tt.input)
if err != nil {
t.Fatalf("ParseAndEvaluate(%q) returned error: %v", tt.input, err)
@@ -192,7 +192,7 @@ func TestParseAndEvaluateStackOps(t *testing.T) {
func TestParseAndEvaluateVariables(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
// Test variable assignment and reuse
// First assign a variable
@@ -216,7 +216,7 @@ func TestParseAndEvaluateVariables(t *testing.T) {
func TestParseAndEvaluateEmpty(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate("")
if err == nil {
@@ -249,7 +249,7 @@ func TestParseAndEvaluateAssignment(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
result, err := r.ParseAndEvaluate(tt.input)
if err != nil {
t.Fatalf("ParseAndEvaluate(%q) returned error: %v", tt.input, err)
@@ -263,7 +263,7 @@ func TestParseAndEvaluateAssignment(t *testing.T) {
func TestParseAndEvaluateDivisionByZero(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate("5 0 /")
if err == nil {
@@ -276,7 +276,7 @@ func TestParseAndEvaluateDivisionByZero(t *testing.T) {
func TestParseAndEvaluateUndefinedVariable(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate("undefined +")
if err == nil {
@@ -290,7 +290,7 @@ func TestParseAndEvaluateUndefinedVariable(t *testing.T) {
func TestParseAndEvaluateUnknownToken(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate("1 2 + hello")
if err == nil {
@@ -314,7 +314,7 @@ func TestParseAndEvaluateInsufficientOperands(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate(tt.input)
if err == nil {
t.Errorf("%q should return error for insufficient operands", tt.input)
@@ -325,7 +325,7 @@ func TestParseAndEvaluateInsufficientOperands(t *testing.T) {
func TestParseAndEvaluateShow(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
result, err := r.ParseAndEvaluate("1 2 3 show")
if err != nil {
@@ -338,7 +338,7 @@ func TestParseAndEvaluateShow(t *testing.T) {
func TestParseAndEvaluateVars(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
// Set some variables using new format: "name = value"
if _, err := r.ParseAndEvaluate("x = 5"); err != nil {
@@ -359,7 +359,7 @@ func TestParseAndEvaluateVars(t *testing.T) {
func TestParseAndEvaluateClear(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
// Set and clear
if _, err := r.ParseAndEvaluate("x 5 ="); err != nil {
@@ -376,7 +376,7 @@ func TestParseAndEvaluateClear(t *testing.T) {
func TestRPNConcurrency(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
done := make(chan bool, 10)
for i := 0; i < 5; i++ {
@@ -399,7 +399,7 @@ func TestRPNConcurrency(t *testing.T) {
func TestResultStack(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
tokens := []string{"1", "2", "3", "+"}
result, err := r.ResultStack(tokens)
@@ -413,7 +413,7 @@ func TestResultStack(t *testing.T) {
func TestResultStackEmpty(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
tokens := []string{}
result, err := r.ResultStack(tokens)
@@ -452,7 +452,7 @@ func TestParseAndEvaluateAssignmentExpression(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
result, err := r.ParseAndEvaluate(tt.input)
if err != nil {
t.Fatalf("ParseAndEvaluate(%q) returned error: %v", tt.input, err)
@@ -496,7 +496,7 @@ func TestParseAndEvaluateAssignmentErrors(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate(tt.input)
if err == nil {
t.Errorf("ParseAndEvaluate(%q) expected error, got nil", tt.input)
@@ -546,7 +546,7 @@ func TestParseAndEvaluateEvaluateErrors(t *testing.T) {
}
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate(tt.input)
if err == nil {
t.Errorf("ParseAndEvaluate(%q) expected error, got nil", tt.input)
@@ -561,7 +561,7 @@ func TestParseAndEvaluateEvaluateErrors(t *testing.T) {
func TestResultStackErrors(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
// Test error cases in ResultStack function
tests := []struct {
@@ -612,7 +612,7 @@ func TestResultStackErrors(t *testing.T) {
func TestResultStackMultipleValues(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
// Test Case where stack has multiple values at the end
tests := []struct {
@@ -659,7 +659,7 @@ func TestResultStackMultipleValues(t *testing.T) {
func TestRPNIncrementalOperations(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
// Test: 1 2 3 + then +
// First evaluate "1 2 3 +"
@@ -684,7 +684,7 @@ func TestRPNIncrementalOperations(t *testing.T) {
// TestIncrementalAssignmentRPN tests x =: with value on stack in ParseAndEvaluate
func TestIncrementalAssignmentRPN(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
// First, put 2 on the stack
result, err := r.ParseAndEvaluate("2")
@@ -753,7 +753,7 @@ func TestParseAndEvaluateAssignmentLeftRight(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
v := NewVariables()
- r := NewRPN(v)
+ r := NewRPN(v, nil)
_, err := r.ParseAndEvaluate(tt.input)
if err != nil {
@@ -775,7 +775,7 @@ func TestParseAndEvaluateAssignmentLeftRight(t *testing.T) {
// TestSymbolPush verifies that :x syntax pushes a symbol
func TestSymbolPush(t *testing.T) {
vars := NewVariables()
- r := NewRPN(vars)
+ r := NewRPN(vars, nil)
// Test :x syntax
result, err := r.ParseAndEvaluate(":x")
@@ -807,7 +807,7 @@ func TestSymbolPush(t *testing.T) {
// TestUnboundIdentifierAsSymbol verifies that unbound identifiers push symbols
func TestUnboundIdentifierAsSymbol(t *testing.T) {
vars := NewVariables()
- r := NewRPN(vars)
+ r := NewRPN(vars, nil)
// Use bare identifier x (unbound)
result, err := r.ParseAndEvaluate("x")
@@ -824,7 +824,7 @@ func TestUnboundIdentifierAsSymbol(t *testing.T) {
// TestBoundIdentifierPushesValue verifies that bound identifiers push values
func TestBoundIdentifierPushesValue(t *testing.T) {
vars := NewVariables()
- r := NewRPN(vars)
+ r := NewRPN(vars, nil)
// First bind x to 5
if _, err := r.ParseAndEvaluate("x = 5"); err != nil {
@@ -847,7 +847,7 @@ func TestBoundIdentifierPushesValue(t *testing.T) {
func TestSymbolWithAssignment(t *testing.T) {
// Test :x 10 := (symbol then value with right assignment)
vars := NewVariables()
- r := NewRPN(vars)
+ r := NewRPN(vars, nil)
_, err := r.ParseAndEvaluate(":x 10 :=")
if err != nil {
@@ -865,7 +865,7 @@ func TestSymbolWithAssignment(t *testing.T) {
// Test 10 :x =: (value then symbol with left assignment)
vars2 := NewVariables()
- r2 := NewRPN(vars2)
+ r2 := NewRPN(vars2, nil)
_, err = r2.ParseAndEvaluate("10 :x =:")
if err != nil {
@@ -884,7 +884,7 @@ func TestSymbolWithAssignment(t *testing.T) {
// TestStackBasedAssignmentWithSymbol verifies stack-based assignment with symbol
func TestStackBasedAssignmentWithSymbol(t *testing.T) {
vars := NewVariables()
- r := NewRPN(vars)
+ r := NewRPN(vars, nil)
// Push 42 onto stack
_, err := r.ParseAndEvaluate("42")