// 🧪 P2PBox基本機能テスト
// IntentBoxとP2PBoxの基本的な動作を検証

print("=== P2PBox Basic Test ===")

// 1. IntentBoxの作成
print("\n1. Creating IntentBox...")
local world
world = new IntentBox()
print("✅ IntentBox created: " + world.type())

// 2. P2PBoxノードの作成
print("\n2. Creating P2PBox nodes...")
local alice
local bob
local charlie

alice = new P2PBox("alice", world)
bob = new P2PBox("bob", world)
charlie = new P2PBox("charlie", world)

print("✅ Alice created: " + alice.getNodeId())
print("✅ Bob created: " + bob.getNodeId())
print("✅ Charlie created: " + charlie.getNodeId())

// 3. リスナー登録テスト
print("\n3. Testing listener registration...")
bob.on("greeting", "bob_greeting_handler")
charlie.on("greeting", "charlie_greeting_handler")
print("✅ Listeners registered")

// 4. 直接送信テスト
print("\n4. Testing direct send...")
alice.send("greeting", "Hello Bob!", "bob")
alice.send("greeting", "Hello Charlie!", "charlie")
print("✅ Messages sent")

// 5. ブロードキャストテスト
print("\n5. Testing broadcast...")
alice.broadcast("announcement", "Hello everyone!")
print("✅ Broadcast sent")

// 6. リスナー解除テスト
print("\n6. Testing listener removal...")
local result
result = bob.off("greeting")
print("✅ Bob's listener removed: " + result)

// 7. 解除後の送信テスト
print("\n7. Testing send after listener removal...")
alice.send("greeting", "Hello again Bob!", "bob")
print("✅ Message sent (Bob should not receive)")

// 8. 複数リスナーテスト
print("\n8. Testing multiple listeners...")
charlie.on("data", "charlie_data_handler1")
charlie.on("data", "charlie_data_handler2")
alice.send("data", "Test data", "charlie")
print("✅ Multiple listeners tested")

print("\n=== Test Complete ===")