| 1 | // vtest build: !docker-ubuntu-musl // needs GL/gl.h |
| 2 | module gg |
| 3 | |
| 4 | import encoding.base64 |
| 5 | import time |
| 6 | |
| 7 | fn test_swap_interval_frame_budget() { |
| 8 | assert swap_interval_frame_budget(-1) == time.Duration(0) |
| 9 | assert swap_interval_frame_budget(0) == time.Duration(0) |
| 10 | assert swap_interval_frame_budget(1) == time.second / 60 |
| 11 | assert swap_interval_frame_budget(2) == time.second / 30 |
| 12 | assert swap_interval_frame_budget(3) == time.second / 20 |
| 13 | } |
| 14 | |
| 15 | fn test_parse_screenshot_frames_ignores_blank_entries() { |
| 16 | assert parse_screenshot_frames('') == []u64{} |
| 17 | assert parse_screenshot_frames('1, 2,,4 ') == [u64(1), 2, 4] |
| 18 | } |
| 19 | |
| 20 | fn test_new_gg_recorder_settings_stdout_defaults_to_first_frame() { |
| 21 | settings := new_gg_recorder_settings_from_env({ |
| 22 | 'VGG_SCREENSHOT_OUTPUT': 'stdout' |
| 23 | }, '/tmp/minimal_demo') |
| 24 | assert settings.screenshot_output == .stdout |
| 25 | assert settings.screenshot_frames == [u64(1)] |
| 26 | assert settings.stop_at_frame == 1 |
| 27 | } |
| 28 | |
| 29 | fn test_new_gg_recorder_settings_stdout_uses_last_frame_as_default_stop() { |
| 30 | settings := new_gg_recorder_settings_from_env({ |
| 31 | 'VGG_SCREENSHOT_OUTPUT': 'stdout' |
| 32 | 'VGG_SCREENSHOT_FRAMES': '2, 4' |
| 33 | }, '/tmp/minimal_demo') |
| 34 | assert settings.screenshot_frames == [u64(2), 4] |
| 35 | assert settings.stop_at_frame == 4 |
| 36 | } |
| 37 | |
| 38 | fn test_new_gg_recorder_settings_preserves_explicit_stop_frame() { |
| 39 | settings := new_gg_recorder_settings_from_env({ |
| 40 | 'VGG_SCREENSHOT_OUTPUT': 'stdout' |
| 41 | 'VGG_SCREENSHOT_FRAMES': '3' |
| 42 | 'VGG_STOP_AT_FRAME': '9' |
| 43 | }, '/tmp/minimal_demo') |
| 44 | assert settings.stop_at_frame == 9 |
| 45 | } |
| 46 | |
| 47 | fn test_screenshot_stdout_payload_contains_expected_marker() { |
| 48 | png := [u8(0x89), `P`, `N`, `G`] |
| 49 | encoded := base64.encode(png) |
| 50 | payload := screenshot_stdout_payload(7, png) |
| 51 | assert payload == '${gg_record_stdout_prefix} frame=7 format=png encoding=base64 data=${encoded}' |
| 52 | } |
| 53 | |