Files
hakorune/local_tests/test_pack_syntax.hako

108 lines
2.3 KiB
Plaintext
Raw Normal View History

// 🎁 pack構文の包括的テスト
// 1. 基本的なpack構文
box Animal {
init { name, age }
pack(animalName, animalAge) {
me.name = animalName
me.age = animalAge
}
speak() {
return me.name + " (age " + me.age + ") makes a sound"
}
}
// 2. fromデリゲーションでのpack
box Dog from Animal {
init { breed }
pack(dogName, dogAge, dogBreed) {
from Animal.pack(dogName, dogAge) // 親のpackを呼び出し
me.breed = dogBreed
}
override speak() {
return me.name + " (age " + me.age + ", " + me.breed + ") barks: Woof!"
}
}
// 3. 混在形式packと従来形式の共存
box Cat from Animal {
init { color }
Cat(catName, catAge, catColor) { // 従来形式
from Animal.pack(catName, catAge) // 親はpack使用
me.color = catColor
}
override speak() {
return me.name + " (age " + me.age + ", " + me.color + ") meows: Meow!"
}
}
// 4. pack単独使用テスト
box Bird {
init { species, canFly }
// pack単独 - Box哲学に最適
pack(birdSpecies, flying) {
me.species = birdSpecies + " (pack使用)"
me.canFly = flying
}
describe() {
local flyText
if me.canFly {
flyText = "can fly"
} else {
flyText = "cannot fly"
}
return me.species + " - " + flyText
}
}
// テスト実行
print("=== 🎁 pack構文テスト ===")
// 1. 基本的なpack
local animal
animal = new Animal("Generic", 5)
print("Animal: " + animal.speak())
// 2. デリゲーションでのpack
local dog
dog = new Dog("Buddy", 3, "Golden Retriever")
print("Dog: " + dog.speak())
// 3. 混在形式
local cat
cat = new Cat("Whiskers", 2, "Black")
print("Cat: " + cat.speak())
// 4. pack単独使用確認
local bird
bird = new Bird("Eagle", true)
print("Bird: " + bird.describe())
// 5. 引数なしpack
box SimpleBox {
init { message }
pack() { // 引数なしpack
me.message = "Packed with love! 🎁"
}
getMessage() {
return me.message
}
}
local simple
simple = new SimpleBox()
print("SimpleBox: " + simple.getMessage())
print("")
print("✅ pack構文テスト完了")
print("🎉 Everything is Box - Now Everything is Packed!")