Notcurses-Native.git | xt/ | 16-direct-exhaustive.rakutest


use Test; use lib 'lib'; use lib 't/lib'; use TestHelper; use NativeCall; use Notcurses::Native::Types; use Notcurses::Native::Direct; plan 8; my $ncd = do { my ($n, $) = test-init-direct(); $n }; unless $ncd.defined { skip 'No direct mode', 8; exit 0; } LEAVE { ncdirect_stop($ncd) if $ncd.defined } subtest 'All capability queries return defined values' => { plan 14; ok ncdirect_cantruecolor($ncd).defined, 'cantruecolor is defined'; ok ncdirect_canchangecolor($ncd).defined, 'canchangecolor is defined'; ok ncdirect_canfade($ncd).defined, 'canfade is defined'; ok ncdirect_canhalfblock($ncd).defined, 'canhalfblock is defined'; ok ncdirect_canquadrant($ncd).defined, 'canquadrant is defined'; ok ncdirect_cansextant($ncd).defined, 'cansextant is defined'; ok ncdirect_canoctant($ncd).defined, 'canoctant is defined'; ok ncdirect_canbraille($ncd).defined, 'canbraille is defined'; ok ncdirect_canget_cursor($ncd).defined, 'canget_cursor is defined'; ok ncdirect_canutf8($ncd).defined, 'canutf8 is defined'; ok ncdirect_canopen_images($ncd).defined, 'canopen_images is defined'; ok ncdirect_canopen_videos($ncd).defined, 'canopen_videos is defined'; my $pixel = ncdirect_check_pixel_support($ncd); ok $pixel.defined, "check_pixel_support returned $pixel"; my $term = ncdirect_detected_terminal($ncd); ok $term.defined, "detected_terminal: $term"; }; subtest 'Color set/reset roundtrips' => { plan 8; is ncdirect_set_fg_rgb($ncd, 0xFF0000), 0, 'set_fg_rgb red returns 0'; is ncdirect_set_bg_rgb($ncd, 0x0000FF), 0, 'set_bg_rgb blue returns 0'; is ncdirect_set_fg_rgb8($ncd, 0, 255, 0), 0, 'set_fg_rgb8 green returns 0'; is ncdirect_set_bg_rgb8($ncd, 128, 128, 128), 0, 'set_bg_rgb8 gray returns 0'; is ncdirect_set_fg_palindex($ncd, 1), 0, 'set_fg_palindex(1) returns 0'; is ncdirect_set_bg_palindex($ncd, 2), 0, 'set_bg_palindex(2) returns 0'; is ncdirect_set_fg_default($ncd), 0, 'set_fg_default returns 0'; is ncdirect_set_bg_default($ncd), 0, 'set_bg_default returns 0'; }; subtest 'Cursor movement operations' => { plan 9; is ncdirect_cursor_move_yx($ncd, 0, 0), 0, 'move_yx(0,0) returns 0'; is ncdirect_cursor_down($ncd, 1), 0, 'cursor_down(1) returns 0'; is ncdirect_cursor_up($ncd, 1), 0, 'cursor_up(1) returns 0'; is ncdirect_cursor_right($ncd, 2), 0, 'cursor_right(2) returns 0'; is ncdirect_cursor_left($ncd, 2), 0, 'cursor_left(2) returns 0'; is ncdirect_cursor_enable($ncd), 0, 'cursor_enable returns 0'; is ncdirect_cursor_disable($ncd), 0, 'cursor_disable returns 0'; is ncdirect_cursor_push($ncd), 0, 'cursor_push returns 0'; is ncdirect_cursor_pop($ncd), 0, 'cursor_pop returns 0'; }; subtest 'Box drawing functions' => { plan 5; # All box functions: (handle, ul, ur, ll, lr, ylen, xlen, ctlword) # Use 0 for all channel params (default colors), 3 rows x 6 cols, ctlword 0 is ncdirect_rounded_box($ncd, 0, 0, 0, 0, 3, 6, 0), 0, 'rounded_box returns 0'; is ncdirect_double_box($ncd, 0, 0, 0, 0, 3, 6, 0), 0, 'double_box returns 0'; is ncdirect_light_box($ncd, 0, 0, 0, 0, 3, 6, 0), 0, 'light_box returns 0'; is ncdirect_heavy_box($ncd, 0, 0, 0, 0, 3, 6, 0), 0, 'heavy_box returns 0'; is ncdirect_ascii_box($ncd, 0, 0, 0, 0, 3, 6, 0), 0, 'ascii_box returns 0'; }; subtest 'Clear screen' => { plan 1; is ncdirect_clear($ncd), 0, 'clear returns 0'; }; subtest 'putegc outputs a character' => { plan 2; my int32 $sbytes = 0; my $rc = ncdirect_putegc($ncd, 0, "A", $sbytes); ok $rc > 0, "putegc returned $rc columns (> 0)"; is $sbytes, 1, 'putegc reports 1 byte consumed for "A"'; }; subtest 'Capabilities struct fields' => { plan 3; my $caps = ncdirect_capabilities($ncd); ok $caps.defined, 'ncdirect_capabilities returns defined struct'; ok $caps.colors > 0, "colors = {$caps.colors} (> 0)"; ok $caps.utf8.defined, "utf8 field is defined = {$caps.utf8}"; }; subtest 'Input ready file descriptor' => { plan 1; my $fd = ncdirect_inputready_fd($ncd); ok $fd >= 0, "inputready_fd returned valid fd ($fd)"; }; done-testing;