extends SceneTree const EDGE_PADDING: String = " \t\nā€ƒā€‹ā €" func _initialize() -> void: call_deferred("_validate_protocol") func _validate_protocol() -> void: _validate_type_and_empty_handling() _validate_message_cleanup() _validate_roleplay_commands() _validate_protocol_limits() print("Network chat protocol validation: PASS") quit() func _validate_type_and_empty_handling() -> void: assert(NetworkChatProtocol.sanitize_body(null) == "") assert(NetworkChatProtocol.sanitize_body(42) == "") assert(NetworkChatProtocol.sanitize_body(EDGE_PADDING) == "") assert(NetworkChatProtocol.sanitize_body("\u0001") == "") func _validate_message_cleanup() -> void: assert(NetworkChatProtocol.sanitize_body(" hello ") == "hello") assert(NetworkChatProtocol.sanitize_body("a\tb\nc") == "a b c") assert(NetworkChatProtocol.sanitize_body("word word") == "word word") assert(NetworkChatProtocol.sanitize_body(" !!! ") == "!!!") assert( NetworkChatProtocol.sanitize_body( EDGE_PADDING + "visible" + EDGE_PADDING ) == "visible" ) func _validate_roleplay_commands() -> void: assert(NetworkChatProtocol.is_roleplay_body("/me waves")) assert(NetworkChatProtocol.is_roleplay_body("/ME waves")) assert(NetworkChatProtocol.is_roleplay_body("/me")) assert(not NetworkChatProtocol.is_roleplay_body("/meow")) assert(NetworkChatProtocol.roleplay_action("/me waves") == "waves") assert(NetworkChatProtocol.roleplay_action( "/me [color=red]waves[/color]" ) == "[color=red]waves[/color]") assert(NetworkChatProtocol.valid_user_body("/me waves")) assert(not NetworkChatProtocol.valid_user_body("/me")) assert(not NetworkChatProtocol.valid_user_body("/me ")) assert(NetworkChatProtocol.valid_user_body("/meow")) var signed_fields: Array = NetworkChatProtocol.signature_fields({ "session_id": "session", "request_id": "request", "sender_fingerprint": "fingerprint", "body": "/me waves", }) assert(signed_fields.back() == "/me waves") func _validate_protocol_limits() -> void: var maximum_body: String = "a".repeat( NetworkChatProtocol.MAX_VISIBLE_CHARACTERS ) assert(NetworkChatProtocol.sanitize_body(maximum_body) == maximum_body) assert( NetworkChatProtocol.sanitize_body(maximum_body + "a") == "" ) var maximum_utf8_body: String = "🐟".repeat( NetworkChatProtocol.MAX_VISIBLE_CHARACTERS ) assert( maximum_utf8_body.to_utf8_buffer().size() == NetworkChatProtocol.MAX_UTF8_BYTES ) assert( NetworkChatProtocol.sanitize_body(maximum_utf8_body) == maximum_utf8_body )