Files
hakorune/local_tests/test_p2p_edge_cases.hako

86 lines
2.6 KiB
Plaintext
Raw 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.

// 🧪 P2PBox エッジケーステスト
// エラーハンドリングと異常系の動作検証
print("=== P2PBox Edge Cases Test ===")
// 基本セットアップ
local world
world = new IntentBox()
local node1
node1 = new P2PBox("node1", world)
print("\n1. Testing invalid target send")
// 存在しないノードへの送信
local result
result = node1.send("test", "data", "non_existent_node")
print("Send to non-existent node: " + result)
print("\n2. Testing empty intent string")
// 空のintent文字列
node1.on("", "empty_handler")
result = node1.send("", "test data", "node1")
print("Empty intent handled: " + result)
print("\n3. Testing duplicate listener removal")
// 同じintentを2回削除
node1.on("test_event", "handler1")
result = node1.off("test_event")
print("First removal: " + result)
result = node1.off("test_event")
print("Second removal: " + result)
print("\n4. Testing self-messaging")
// 自分自身へのメッセージ送信
node1.on("self_msg", "self_handler")
result = node1.send("self_msg", "Hello myself!", "node1")
print("Self message sent: " + result)
print("\n5. Testing very long intent names")
// 非常に長いintent名
local longIntent
longIntent = "this_is_a_very_long_intent_name_that_tests_the_system_limits_1234567890_abcdefghijklmnopqrstuvwxyz"
node1.on(longIntent, "long_handler")
result = node1.send(longIntent, "test", "node1")
print("Long intent handled: " + result)
print("\n6. Testing special characters in node ID")
// 特殊文字を含むードID新規作成時
local specialNode
specialNode = new P2PBox("node-with-special_chars.123", world)
print("Special node created: " + specialNode.getNodeId())
print("\n7. Testing rapid fire messages")
// 高速連続メッセージ送信
local node2
node2 = new P2PBox("node2", world)
node2.on("rapid", "rapid_handler")
local i
i = 0
loop(i < 10) {
node1.send("rapid", "Message " + i, "node2")
i = i + 1
}
print("Sent 10 rapid messages")
print("\n8. Testing null data send")
// nullデータの送信
local nullData
nullData = new NullBox()
result = node1.send("null_test", nullData, "node2")
print("Null data sent: " + result)
print("\n9. Testing listener with same intent multiple times")
// 同じintentに複数のリスナー登録
node1.on("multi", "handler1")
node1.on("multi", "handler2")
node1.on("multi", "handler3")
print("Multiple handlers registered for same intent")
print("\n10. Testing IntentBox message processing")
// IntentBoxの内部メッセージ処理
result = world.processMessages()
print("IntentBox processed messages: " + result)
print("\n=== Edge Cases Test Complete ===")