Files
hakorune/local_tests/test_operators.hako

100 lines
3.7 KiB
Plaintext
Raw Permalink Normal View History

// test_operators.hako - 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!")