Files
Syncplay/framing_test.odin
T

38 lines
1.1 KiB
Odin
Raw Normal View History

2026-08-11 10:55:02 +02:00
package main
import "core:testing"
@(test)
framer_handles_fragmented_and_coalesced_messages :: proc(t: ^testing.T) {
framer: Line_Framer
framer_init(&framer)
defer framer_destroy(&framer)
first: string = "one\ntw"
frames, err := framer_push(&framer, transmute([]byte)first)
defer destroy_frames(frames)
testing.expect_value(t, err, Frame_Error.None)
testing.expect_value(t, len(frames), 1)
testing.expect_value(t, frames[0], "one")
second: string = "o\r\nthree\n"
frames2, err2 := framer_push(&framer, transmute([]byte)second)
defer destroy_frames(frames2)
testing.expect_value(t, err2, Frame_Error.None)
testing.expect_value(t, len(frames2), 2)
testing.expect_value(t, frames2[0], "two")
testing.expect_value(t, frames2[1], "three")
}
@(test)
framer_rejects_oversized_message :: proc(t: ^testing.T) {
framer: Line_Framer
framer_init(&framer)
defer framer_destroy(&framer)
data := make([]byte, MAX_FRAME_BYTES+1)
defer delete(data)
frames, err := framer_push(&framer, data)
defer destroy_frames(frames)
testing.expect_value(t, err, Frame_Error.Too_Large)
}