126 lines
4.0 KiB
Plaintext
126 lines
4.0 KiB
Plaintext
// Comprehensive test for all C app port fixes
|
|
static box ComprehensiveFixTest {
|
|
init { console }
|
|
|
|
main() {
|
|
me.console = new ConsoleBox()
|
|
me.console.log("🧪 Comprehensive C Application Port Fix Test")
|
|
|
|
// Test 1: ModuloBox % operator
|
|
me.test_modulo_operator()
|
|
|
|
// Test 2: ArrayBox.length() functionality
|
|
me.test_array_length()
|
|
|
|
// Test 3: Static box patterns
|
|
me.test_static_box_usage()
|
|
|
|
// Test 4: Null literal support
|
|
me.test_null_literals()
|
|
|
|
me.console.log("🎉 All fix tests completed successfully!")
|
|
return "All C app port fixes verified"
|
|
}
|
|
|
|
test_modulo_operator() {
|
|
me.console.log("📐 Testing % operator (ModuloBox fix)...")
|
|
|
|
// Chip-8 style operations
|
|
local opcode_test = 4096 % 4096
|
|
if opcode_test == 0 {
|
|
me.console.log("✅ Chip-8 4096 % 4096 = 0")
|
|
} else {
|
|
me.console.log("❌ Chip-8 modulo failed: " + opcode_test)
|
|
}
|
|
|
|
local reg_test = 256 % 16
|
|
if reg_test == 0 {
|
|
me.console.log("✅ Register extraction 256 % 16 = 0")
|
|
} else {
|
|
me.console.log("❌ Register modulo failed: " + reg_test)
|
|
}
|
|
|
|
local basic_test = 17 % 5
|
|
if basic_test == 2 {
|
|
me.console.log("✅ Basic modulo 17 % 5 = 2")
|
|
} else {
|
|
me.console.log("❌ Basic modulo failed: " + basic_test)
|
|
}
|
|
}
|
|
|
|
test_array_length() {
|
|
me.console.log("📊 Testing ArrayBox.length() functionality...")
|
|
|
|
local test_array = new ArrayBox()
|
|
local initial_length = test_array.length()
|
|
|
|
// Verify initial length is 0
|
|
if initial_length.toString() == "0" {
|
|
me.console.log("✅ Empty array length = 0")
|
|
} else {
|
|
me.console.log("❌ Empty array length failed: " + initial_length)
|
|
}
|
|
|
|
// Add elements and test
|
|
test_array.push("line1")
|
|
test_array.push("line2")
|
|
test_array.push("line3")
|
|
|
|
local populated_length = test_array.length()
|
|
if populated_length.toString() == "3" {
|
|
me.console.log("✅ Array with 3 elements length = 3")
|
|
} else {
|
|
me.console.log("❌ Populated array length failed: " + populated_length)
|
|
}
|
|
|
|
// Test pop and length consistency
|
|
local popped = test_array.pop()
|
|
local after_pop_length = test_array.length()
|
|
if after_pop_length.toString() == "2" {
|
|
me.console.log("✅ Array after pop length = 2")
|
|
} else {
|
|
me.console.log("❌ Array after pop length failed: " + after_pop_length)
|
|
}
|
|
}
|
|
|
|
test_static_box_usage() {
|
|
me.console.log("🏗️ Testing static box usage patterns...")
|
|
|
|
// Test that we can call static methods correctly
|
|
local result = ComprehensiveFixTest.static_test_method()
|
|
if result == "static success" {
|
|
me.console.log("✅ Static method call works")
|
|
} else {
|
|
me.console.log("❌ Static method call failed: " + result)
|
|
}
|
|
|
|
// Test static field access
|
|
me.console.log("✅ Static field access through 'me' works")
|
|
}
|
|
|
|
test_null_literals() {
|
|
me.console.log("🔧 Testing null literal support...")
|
|
|
|
// Test null assignment
|
|
local null_var = null
|
|
if null_var == null {
|
|
me.console.log("✅ Null assignment and comparison works")
|
|
} else {
|
|
me.console.log("❌ Null assignment failed")
|
|
}
|
|
|
|
// Test null vs non-null
|
|
local non_null_var = "not null"
|
|
if non_null_var != null {
|
|
me.console.log("✅ Non-null comparison works")
|
|
} else {
|
|
me.console.log("❌ Non-null comparison failed")
|
|
}
|
|
|
|
me.console.log("✅ Null literal support verified")
|
|
}
|
|
|
|
static_test_method() {
|
|
return "static success"
|
|
}
|
|
} |