53 lines
1.7 KiB
V
53 lines
1.7 KiB
V
// vtest build: !docker-ubuntu-musl // needs GL/gl.h
|
|
module gg
|
|
|
|
import encoding.base64
|
|
import time
|
|
|
|
fn test_swap_interval_frame_budget() {
|
|
assert swap_interval_frame_budget(-1) == time.Duration(0)
|
|
assert swap_interval_frame_budget(0) == time.Duration(0)
|
|
assert swap_interval_frame_budget(1) == time.second / 60
|
|
assert swap_interval_frame_budget(2) == time.second / 30
|
|
assert swap_interval_frame_budget(3) == time.second / 20
|
|
}
|
|
|
|
fn test_parse_screenshot_frames_ignores_blank_entries() {
|
|
assert parse_screenshot_frames('') == []u64{}
|
|
assert parse_screenshot_frames('1, 2,,4 ') == [u64(1), 2, 4]
|
|
}
|
|
|
|
fn test_new_gg_recorder_settings_stdout_defaults_to_first_frame() {
|
|
settings := new_gg_recorder_settings_from_env({
|
|
'VGG_SCREENSHOT_OUTPUT': 'stdout'
|
|
}, '/tmp/minimal_demo')
|
|
assert settings.screenshot_output == .stdout
|
|
assert settings.screenshot_frames == [u64(1)]
|
|
assert settings.stop_at_frame == 1
|
|
}
|
|
|
|
fn test_new_gg_recorder_settings_stdout_uses_last_frame_as_default_stop() {
|
|
settings := new_gg_recorder_settings_from_env({
|
|
'VGG_SCREENSHOT_OUTPUT': 'stdout'
|
|
'VGG_SCREENSHOT_FRAMES': '2, 4'
|
|
}, '/tmp/minimal_demo')
|
|
assert settings.screenshot_frames == [u64(2), 4]
|
|
assert settings.stop_at_frame == 4
|
|
}
|
|
|
|
fn test_new_gg_recorder_settings_preserves_explicit_stop_frame() {
|
|
settings := new_gg_recorder_settings_from_env({
|
|
'VGG_SCREENSHOT_OUTPUT': 'stdout'
|
|
'VGG_SCREENSHOT_FRAMES': '3'
|
|
'VGG_STOP_AT_FRAME': '9'
|
|
}, '/tmp/minimal_demo')
|
|
assert settings.stop_at_frame == 9
|
|
}
|
|
|
|
fn test_screenshot_stdout_payload_contains_expected_marker() {
|
|
png := [u8(0x89), `P`, `N`, `G`]
|
|
encoded := base64.encode(png)
|
|
payload := screenshot_stdout_payload(7, png)
|
|
assert payload == '${gg_record_stdout_prefix} frame=7 format=png encoding=base64 data=${encoded}'
|
|
}
|