60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
|
|
// Advanced Multi-Delegation Test Cases
|
||
|
|
// Testing complex scenarios and edge cases
|
||
|
|
|
||
|
|
local console = new ConsoleBox()
|
||
|
|
console.log("=== Advanced Multi-Delegation Tests ===")
|
||
|
|
|
||
|
|
// Test 1: Three-way delegation
|
||
|
|
console.log("Testing three-way delegation...")
|
||
|
|
box TripleChild from StringBox, IntegerBox, BoolBox {
|
||
|
|
init { strVal, intVal, boolVal }
|
||
|
|
|
||
|
|
pack(s, i, b) {
|
||
|
|
me.strVal = s
|
||
|
|
me.intVal = i
|
||
|
|
me.boolVal = b
|
||
|
|
}
|
||
|
|
|
||
|
|
getAll() {
|
||
|
|
return me.strVal + " | " + me.intVal + " | " + me.boolVal
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
local triple = new TripleChild("Hello", 42, true)
|
||
|
|
console.log("Triple delegation: " + triple.getAll())
|
||
|
|
|
||
|
|
// Test 2: No delegation (should still work)
|
||
|
|
console.log("Testing no delegation...")
|
||
|
|
box StandaloneBox {
|
||
|
|
init { data }
|
||
|
|
|
||
|
|
pack(value) {
|
||
|
|
me.data = value
|
||
|
|
}
|
||
|
|
|
||
|
|
getData() {
|
||
|
|
return "Standalone: " + me.data
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
local standalone = new StandaloneBox("Independent")
|
||
|
|
console.log(standalone.getData())
|
||
|
|
|
||
|
|
// Test 3: Single delegation (backward compatibility)
|
||
|
|
console.log("Testing single delegation backward compatibility...")
|
||
|
|
box SingleBox from StringBox {
|
||
|
|
init { value }
|
||
|
|
|
||
|
|
pack(val) {
|
||
|
|
me.value = val
|
||
|
|
}
|
||
|
|
|
||
|
|
getValue() {
|
||
|
|
return "Single: " + me.value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
local single = new SingleBox("OnlyOne")
|
||
|
|
console.log(single.getValue())
|
||
|
|
|
||
|
|
console.log("=== All Multi-Delegation Tests Passed! ===")
|