From 9c66e1477920fe3696155ee33d92f7587dcfb4d7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 11 Aug 2025 19:42:30 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20ALL=20PHASES=20COMPLETE:=20Compr?= =?UTF-8?q?ehensive=20staged=20Box=20implementation=20with=20operators?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com> --- test_operators.nyash | 100 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 test_operators.nyash diff --git a/test_operators.nyash b/test_operators.nyash new file mode 100644 index 00000000..6d28e9d0 --- /dev/null +++ b/test_operators.nyash @@ -0,0 +1,100 @@ +// test_operators.nyash - Operator Phase 3 comprehensive test +// Testing: comparison operators (<, >, <=, >=, ==, !=) with mixed types + +print("⚖️ Testing comprehensive operator support...") + +local f1, f2, i1, i2, result + +print("=== Setup: Creating test values ===") +f1 = new FloatBox(3.14) +f2 = new FloatBox(2.86) +i1 = 5 +i2 = 3 +print("f1 = " + f1.toString() + " (FloatBox)") +print("f2 = " + f2.toString() + " (FloatBox)") +print("i1 = " + i1.toString() + " (IntegerBox)") +print("i2 = " + i2.toString() + " (IntegerBox)") + +print("\n=== Test 1: Equality operators (==, !=) ===") +result = f1 == new FloatBox(3.14) +print("f1 == 3.14: " + result.toString()) // Expected: true + +result = f1 != f2 +print("f1 != f2: " + result.toString()) // Expected: true + +result = i1 == 5 +print("i1 == 5: " + result.toString()) // Expected: true + +result = i1 != i2 +print("i1 != i2: " + result.toString()) // Expected: true + +print("\n=== Test 2: Mixed type equality ===") +result = f1 == 3 // FloatBox vs IntegerBox +print("f1 == 3: " + result.toString()) // Expected: false (3.14 != 3) + +result = new FloatBox(5.0) == i1 // FloatBox vs IntegerBox +print("5.0 == i1: " + result.toString()) // Expected: true + +print("\n=== Test 3: Less than (<) ===") +result = f2 < f1 // FloatBox < FloatBox +print("f2 < f1: " + result.toString()) // Expected: true (2.86 < 3.14) + +result = i2 < i1 // IntegerBox < IntegerBox +print("i2 < i1: " + result.toString()) // Expected: true (3 < 5) + +result = f2 < i1 // FloatBox < IntegerBox +print("f2 < i1: " + result.toString()) // Expected: true (2.86 < 5) + +result = i2 < f1 // IntegerBox < FloatBox +print("i2 < f1: " + result.toString()) // Expected: true (3 < 3.14) + +print("\n=== Test 4: Greater than (>) ===") +result = f1 > f2 // FloatBox > FloatBox +print("f1 > f2: " + result.toString()) // Expected: true (3.14 > 2.86) + +result = i1 > i2 // IntegerBox > IntegerBox +print("i1 > i2: " + result.toString()) // Expected: true (5 > 3) + +result = i1 > f1 // IntegerBox > FloatBox +print("i1 > f1: " + result.toString()) // Expected: true (5 > 3.14) + +result = f1 > i2 // FloatBox > IntegerBox +print("f1 > i2: " + result.toString()) // Expected: true (3.14 > 3) + +print("\n=== Test 5: Less than or equal (<=) ===") +result = f2 <= f1 // FloatBox <= FloatBox +print("f2 <= f1: " + result.toString()) // Expected: true (2.86 <= 3.14) + +result = f1 <= f1 // FloatBox <= FloatBox (equal) +print("f1 <= f1: " + result.toString()) // Expected: true (3.14 <= 3.14) + +result = i2 <= i1 // IntegerBox <= IntegerBox +print("i2 <= i1: " + result.toString()) // Expected: true (3 <= 5) + +result = new FloatBox(5.0) <= i1 // FloatBox <= IntegerBox (equal) +print("5.0 <= i1: " + result.toString()) // Expected: true (5.0 <= 5) + +print("\n=== Test 6: Greater than or equal (>=) ===") +result = f1 >= f2 // FloatBox >= FloatBox +print("f1 >= f2: " + result.toString()) // Expected: true (3.14 >= 2.86) + +result = f1 >= f1 // FloatBox >= FloatBox (equal) +print("f1 >= f1: " + result.toString()) // Expected: true (3.14 >= 3.14) + +result = i1 >= i2 // IntegerBox >= IntegerBox +print("i1 >= i2: " + result.toString()) // Expected: true (5 >= 3) + +result = i1 >= new FloatBox(5.0) // IntegerBox >= FloatBox (equal) +print("i1 >= 5.0: " + result.toString()) // Expected: true (5 >= 5.0) + +print("\n=== Test 7: Complex expression chains ===") +result = (f1 > f2) and (i1 > i2) +print("(f1 > f2) and (i1 > i2): " + result.toString()) // Expected: true + +result = (f1 < i1) and (f2 > 1) +print("(f1 < i1) and (f2 > 1): " + result.toString()) // Expected: true + +result = not (f1 == f2) +print("not (f1 == f2): " + result.toString()) // Expected: true + +print("\n✅ Comprehensive operator tests completed!") \ No newline at end of file