Files
hakorune/tests/development/test_delegation_edge_cases.hako

79 lines
1.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// デリゲーション・overrideの詳細テストエッジケース
local console
console = new ConsoleBox()
// === 基本デリゲーション ===
box BaseBox {
init { value, count }
pack(val) {
me.value = val
me.count = 0
}
getValue() {
return me.value
}
increment() {
me.count = me.count + 1
return me.count
}
}
box ExtendedBox from BaseBox {
init { multiplier }
pack(val, mult) {
from BaseBox.pack(val)
me.multiplier = mult
}
// override without calling parent
override getValue() {
return me.value + " (Extended)"
}
// override with parent call
override increment() {
local result
result = from BaseBox.increment()
return result * me.multiplier
}
}
// === テスト実行 ===
console.log("=== Basic delegation test ===")
local base
base = new BaseBox("Hello")
console.log("Base value: " + base.getValue())
console.log("Base increment: " + base.increment())
console.log("=== Extended delegation test ===")
local ext
ext = new ExtendedBox("World", 2)
console.log("Extended value: " + ext.getValue())
console.log("Extended increment: " + ext.increment())
console.log("Extended increment again: " + ext.increment())
// === 多重デリゲーション ===
console.log("=== Multiple delegation test ===")
box SuperExtendedBox from ExtendedBox {
init { suffix }
pack(val, mult, suf) {
from ExtendedBox.pack(val, mult)
me.suffix = suf
}
override getValue() {
local parentValue
parentValue = from ExtendedBox.getValue()
return parentValue + me.suffix
}
}
local super
super = new SuperExtendedBox("Chain", 3, "!!!")
console.log("Super value: " + super.getValue())
console.log("Super increment: " + super.increment())