Files
hakorune/tests/development/test_p2p_phase3_user_delegation.hako

150 lines
4.9 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

// 🔥 P2PBox Phase 3B: ユーザー定義Box間デリゲーション実証
// 目標: ユーザー定義Box同士のデリゲーション・override完全実証
local console
console = new ConsoleBox()
console.log("🔥 Phase 3B: ユーザー定義デリゲーション革命!")
// 3B.1 BaseNodeBoxユーザー定義作成
console.log("\n📦 3B.1 BaseNodeBoxユーザー定義実装")
box BaseNodeBox {
init { nodeId, messageCount }
pack(id) {
me.nodeId = id
me.messageCount = 0
}
getId() {
return me.nodeId
}
sendMessage(target, message) {
me.messageCount = me.messageCount + 1
return "BaseNode sent: " + message + " to " + target
}
getMessageCount() {
return me.messageCount
}
}
// 3B.2 ChatNodeBoxBaseNodeBoxからデリゲーション
console.log("\n🔄 3B.2 ChatNodeBoxBaseNodeBoxデリゲーション実装")
box ChatNodeBox from BaseNodeBox {
init { chatHistory, specialFeature }
pack(id, feature) {
from BaseNodeBox.pack(id) // 親の初期化
me.chatHistory = new ArrayBox()
me.specialFeature = feature
}
// 3B.3 sendMessage()のoverride - ログ機能追加
override sendMessage(target, message) {
local logEntry
logEntry = "[CHAT] " + message + " -> " + target
me.chatHistory.push(logEntry)
console = new ConsoleBox()
console.log("📤 ChatNode override: " + logEntry)
// 親のsendMessage()を呼び出し
return from BaseNodeBox.sendMessage(target, message)
}
// 3B.4 getId()のoverride - 拡張情報付き
override getId() {
local baseId
baseId = from BaseNodeBox.getId()
return "[" + me.specialFeature + "]" + baseId + "(" + me.getMessageCount() + ")"
}
// 3B.5 独自メソッド追加
getChatHistory() {
return me.chatHistory.length() + " chat messages logged"
}
getLastChat() {
if me.chatHistory.length() > 0 {
return me.chatHistory.get(me.chatHistory.length() - 1)
} else {
return "No chats yet"
}
}
}
// 3B.6 デリゲーション動作テスト
console.log("\n🚀 3B.6 ユーザー定義デリゲーション動作テスト")
local baseNode
local chatNode
baseNode = new BaseNodeBox("base_alice")
chatNode = new ChatNodeBox("chat_bob", "AdvancedChat")
console.log("✅ ノード作成完了")
console.log("BaseNode ID: " + baseNode.getId())
console.log("ChatNode ID: " + chatNode.getId()) // override版
// 3B.7 Override機能テスト
console.log("\n🔄 3B.7 Override sendMessage()テスト")
local result1
local result2
result1 = baseNode.sendMessage("target1", "Hello from base")
console.log("Base送信結果: " + result1)
result2 = chatNode.sendMessage("target2", "Hello from chat") // override版
console.log("Chat送信結果: " + result2)
// 3B.8 複数メッセージテスト
console.log("\n📨 3B.8 複数メッセージ送信テスト")
local result3
local result4
result3 = chatNode.sendMessage("alice", "First chat message")
result4 = chatNode.sendMessage("bob", "Second chat message")
console.log("結果3: " + result3)
console.log("結果4: " + result4)
// 3B.9 独自メソッド・継承メソッドテスト
console.log("\n📊 3B.9 独自メソッド・継承機能テスト")
console.log("Chat履歴: " + chatNode.getChatHistory())
console.log("最新Chat: " + chatNode.getLastChat())
console.log("更新されたID: " + chatNode.getId()) // カウント更新確認
// 継承されたメソッドの動作確認
console.log("継承されたカウント: " + chatNode.getMessageCount())
// 3B.10 ベースノードとの比較
console.log("\n⚖ 3B.10 BaseNode vs ChatNode比較")
console.log("BaseNode カウント: " + baseNode.getMessageCount())
console.log("ChatNode カウント: " + chatNode.getMessageCount())
console.log("BaseNode ID: " + baseNode.getId())
console.log("ChatNode ID: " + chatNode.getId())
// 3B.11 Revolution成果確認
console.log("\n🎉 3B.11 ユーザー定義デリゲーション革命成果")
console.log("✅ ユーザー定義Boxデリゲーション: 完全成功")
console.log("✅ Override機能: sendMessage()・getId()正常動作")
console.log("✅ 独自メソッド: getChatHistory()・getLastChat()追加")
console.log("✅ 親機能継承: getMessageCount()正常動作")
console.log("✅ from構文: 親メソッド呼び出し成功")
console.log("\n🌟 最終統計:")
console.log("- ChatNode送信数: " + chatNode.getMessageCount())
console.log("- Chat履歴統計: " + chatNode.getChatHistory())
console.log("- 最新Chatログ: " + chatNode.getLastChat())
console.log("\n🔥🔥🔥 Phase 3B: ユーザー定義デリゲーション革命完全達成! 🔥🔥🔥")
console.log("Everything is Box + デリゲーション + Override = 完全動作実証!")