2026-08-21 07:19:34 -04:00
|
|
|
|
extends SceneTree
|
|
|
|
|
|
|
|
|
|
|
|
func _initialize() -> void:
|
|
|
|
|
|
call_deferred("_run")
|
|
|
|
|
|
|
2026-08-21 09:23:28 -04:00
|
|
|
|
|
2026-08-21 07:19:34 -04:00
|
|
|
|
func _run() -> void:
|
2026-08-21 09:23:28 -04:00
|
|
|
|
assert(NetworkChatProtocol.sanitize_body(42).is_empty())
|
|
|
|
|
|
assert(NetworkChatProtocol.sanitize_body(" a ") == "a")
|
|
|
|
|
|
assert(NetworkChatProtocol.sanitize_body("a b") == "a b")
|
|
|
|
|
|
assert(NetworkChatProtocol.sanitize_body("a\tb\nc") == "a b c")
|
|
|
|
|
|
assert(NetworkChatProtocol.sanitize_body(" !hello!? ") == "!hello!?")
|
|
|
|
|
|
assert(NetworkChatProtocol.sanitize_body("!!!") == "!!!")
|
2026-08-21 07:19:34 -04:00
|
|
|
|
|
|
|
|
|
|
const em_space := " " # U+2003 EM SPACE
|
2026-08-21 09:23:28 -04:00
|
|
|
|
const zero_width_space := "" # U+200B ZERO WIDTH SPACE
|
|
|
|
|
|
const braille_blank := "⠀" # U+2800 BRAILLE PATTERN BLANK
|
|
|
|
|
|
const invisible_padding := em_space + zero_width_space + braille_blank
|
|
|
|
|
|
assert(
|
|
|
|
|
|
NetworkChatProtocol.sanitize_body(invisible_padding + "a" + invisible_padding)
|
|
|
|
|
|
== "a"
|
|
|
|
|
|
)
|
|
|
|
|
|
assert(NetworkChatProtocol.sanitize_body(invisible_padding).is_empty())
|
|
|
|
|
|
assert(NetworkChatProtocol.sanitize_body(" \t\n" + invisible_padding).is_empty())
|
|
|
|
|
|
|
|
|
|
|
|
assert(
|
|
|
|
|
|
NetworkChatProtocol.sanitize_body("a".repeat(
|
|
|
|
|
|
NetworkChatProtocol.MAX_VISIBLE_CHARACTERS
|
|
|
|
|
|
)).length() == NetworkChatProtocol.MAX_VISIBLE_CHARACTERS
|
|
|
|
|
|
)
|
|
|
|
|
|
assert(
|
|
|
|
|
|
NetworkChatProtocol.sanitize_body("a".repeat(
|
|
|
|
|
|
NetworkChatProtocol.MAX_VISIBLE_CHARACTERS + 1
|
|
|
|
|
|
)).is_empty()
|
|
|
|
|
|
)
|
2026-08-21 07:19:34 -04:00
|
|
|
|
|
|
|
|
|
|
print("Chat validation: PASS")
|
|
|
|
|
|
quit(0)
|