Notcurses-Native.git | xt/ | 14-input-exhaustive.rakutest


use Test; use lib 'lib'; use NativeCall; use Notcurses::Native::Types; use Notcurses::Native::Input; plan 5; # Ncinput CStruct fields are read-only (no `is rw`), so we can only test with # default-constructed instances where modifiers=0 and id=0. subtest 'Modifier predicates on default Ncinput (all false)' => { plan 8; my $ni = Ncinput.new; # With modifiers=0, every individual modifier predicate should be False nok ncinput_shift_p($ni), 'shift not set on default Ncinput'; nok ncinput_ctrl_p($ni), 'ctrl not set on default Ncinput'; nok ncinput_alt_p($ni), 'alt not set on default Ncinput'; nok ncinput_meta_p($ni), 'meta not set on default Ncinput'; nok ncinput_super_p($ni), 'super not set on default Ncinput'; nok ncinput_hyper_p($ni), 'hyper not set on default Ncinput'; nok ncinput_capslock_p($ni), 'capslock not set on default Ncinput'; nok ncinput_numlock_p($ni), 'numlock not set on default Ncinput'; }; subtest 'ncinput_nomod_p on default Ncinput' => { plan 1; my $ni = Ncinput.new; # With modifiers=0, nomod should be True ok ncinput_nomod_p($ni), 'nomod is true when no modifiers set'; }; subtest 'ncinput_equal_p with identical default inputs' => { plan 2; my $a = Ncinput.new; my $b = Ncinput.new; # Two freshly created Ncinput with identical defaults should be equal ok ncinput_equal_p($a, $b), 'two default Ncinput are equal'; # Same object compared to itself ok ncinput_equal_p($a, $a), 'Ncinput is equal to itself'; }; subtest 'nckey_mouse_p with non-mouse id' => { plan 2; # id=0 is not a mouse event nok nckey_mouse_p(0), 'id 0 is not a mouse event'; # ASCII character 'A' (65) is not a mouse event nok nckey_mouse_p(65), 'id 65 (A) is not a mouse event'; }; subtest 'Modifier predicates return defined boolean values' => { plan 9; my $ni = Ncinput.new; # Verify each predicate returns a defined value (not Nil) ok ncinput_shift_p($ni).defined, 'ncinput_shift_p returns defined value'; ok ncinput_ctrl_p($ni).defined, 'ncinput_ctrl_p returns defined value'; ok ncinput_alt_p($ni).defined, 'ncinput_alt_p returns defined value'; ok ncinput_meta_p($ni).defined, 'ncinput_meta_p returns defined value'; ok ncinput_super_p($ni).defined, 'ncinput_super_p returns defined value'; ok ncinput_hyper_p($ni).defined, 'ncinput_hyper_p returns defined value'; ok ncinput_capslock_p($ni).defined, 'ncinput_capslock_p returns defined value'; ok ncinput_numlock_p($ni).defined, 'ncinput_numlock_p returns defined value'; ok ncinput_nomod_p($ni).defined, 'ncinput_nomod_p returns defined value'; }; done-testing;