🎉 Phase 10: Classic C Applications Migration Complete - All Three Apps Implemented
Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com>
This commit is contained in:
79
test_simple_weak_ref.nyash
Normal file
79
test_simple_weak_ref.nyash
Normal file
@ -0,0 +1,79 @@
|
||||
// Simple weak reference test for Phase 10.2
|
||||
|
||||
// Test CPU with fini
|
||||
box TestCPU {
|
||||
init { memory, name }
|
||||
|
||||
TestCPU() {
|
||||
me.name = "TestCPU"
|
||||
print("CPU initialized: " + me.name)
|
||||
}
|
||||
|
||||
fini() {
|
||||
print("CPU fini called - cleaning up memory")
|
||||
if (me.memory != null) {
|
||||
me.memory.cleanup()
|
||||
}
|
||||
print("CPU fini complete")
|
||||
}
|
||||
}
|
||||
|
||||
// Test Memory with weak reference
|
||||
box TestMemory {
|
||||
init { data, weak cpu_ref }
|
||||
|
||||
TestMemory(cpu_instance) {
|
||||
me.data = new ArrayBox()
|
||||
me.data.push("test_data")
|
||||
me.cpu_ref = cpu_instance // This will be automatically downgraded to weak
|
||||
print("Memory initialized with weak CPU reference")
|
||||
}
|
||||
|
||||
read_data() {
|
||||
if (me.cpu_ref != null) {
|
||||
print("CPU is alive - returning data")
|
||||
return me.data.get(0)
|
||||
} else {
|
||||
print("CPU is destroyed - access blocked")
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
print("Memory cleanup called")
|
||||
me.data.clear()
|
||||
}
|
||||
}
|
||||
|
||||
// Main test
|
||||
static box Main {
|
||||
init { console }
|
||||
|
||||
main() {
|
||||
me.console = new ConsoleBox()
|
||||
me.console.log("🧪 Testing weak references and fini propagation")
|
||||
|
||||
// Create CPU and Memory
|
||||
local cpu = new TestCPU()
|
||||
|
||||
local memory = new TestMemory(cpu)
|
||||
|
||||
// Link memory to CPU for fini propagation
|
||||
cpu.memory = memory
|
||||
|
||||
// Test 1: Normal operation
|
||||
me.console.log("Test 1: Normal operation")
|
||||
local result1 = memory.read_data()
|
||||
me.console.log("Read result: " + result1)
|
||||
|
||||
// Test 2: After CPU destruction
|
||||
me.console.log("Test 2: Destroying CPU...")
|
||||
cpu.fini()
|
||||
cpu = null
|
||||
|
||||
local result2 = memory.read_data()
|
||||
me.console.log("Read after CPU destruction: " + result2)
|
||||
|
||||
return "Test complete"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user