@ -85,6 +85,16 @@ TEST_CASE("[InputEventKey] Key correctly stores and retrieves unicode") {
CHECK ( key . get_unicode ( ) ! = ' y ' ) ;
}
TEST_CASE ( " [InputEventKey] Key correctly stores and retrieves location " ) {
InputEventKey key ;
CHECK ( key . get_location ( ) = = KeyLocation : : UNSPECIFIED ) ;
key . set_location ( KeyLocation : : LEFT ) ;
CHECK ( key . get_location ( ) = = KeyLocation : : LEFT ) ;
CHECK ( key . get_location ( ) ! = KeyLocation : : RIGHT ) ;
}
TEST_CASE ( " [InputEventKey] Key correctly stores and checks echo " ) {
InputEventKey key ;
@ -144,32 +154,36 @@ TEST_CASE("[InputEventKey] Key correctly converts itself to text") {
TEST_CASE ( " [InputEventKey] Key correctly converts its state to a string representation " ) {
InputEventKey none_key ;
CHECK ( none_key . to_string ( ) = = " InputEventKey: keycode=(Unset), mods=none, physical=false, pressed=false, echo=false" ) ;
CHECK ( none_key . to_string ( ) = = " InputEventKey: keycode=(Unset), mods=none, physical=false, location=unspecified, pressed=false, echo=false" ) ;
// Set physical key to Escape.
none_key . set_physical_keycode ( Key : : ESCAPE ) ;
CHECK ( none_key . to_string ( ) = = " InputEventKey: keycode=4194305 (Escape), mods=none, physical=true, pressed=false, echo=false" ) ;
CHECK ( none_key . to_string ( ) = = " InputEventKey: keycode=4194305 (Escape), mods=none, physical=true, location=unspecified, pressed=false, echo=false" ) ;
InputEventKey key ;
// Set physical to None, set keycode to Space.
key . set_keycode ( Key : : SPACE ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=none, physical=false, pressed=false, echo=false " ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=none, physical=false, location=unspecified, pressed=false, echo=false " ) ;
// Set location
key . set_location ( KeyLocation : : RIGHT ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=none, physical=false, location=right, pressed=false, echo=false " ) ;
// Set pressed to true.
key . set_pressed ( true ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=none, physical=false, pressed=true, echo=false " ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=none, physical=false, location=right, pressed=true, echo=false" ) ;
// set echo to true.
key . set_echo ( true ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=none, physical=false, pressed=true, echo=true" ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=none, physical=false, location=right, pressed=true, echo=true" ) ;
// Press Ctrl and Alt.
key . set_ctrl_pressed ( true ) ;
key . set_alt_pressed ( true ) ;
# ifdef MACOS_ENABLED
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=Ctrl+Option, physical=false, pressed=true, echo=true" ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=Ctrl+Option, physical=false, location=right, pressed=true, echo=true" ) ;
# else
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=Ctrl+Alt, physical=false, pressed=true, echo=true" ) ;
CHECK ( key . to_string ( ) = = " InputEventKey: keycode=32 (Space), mods=Ctrl+Alt, physical=false, location=right, pressed=true, echo=true" ) ;
# endif
}
@ -291,6 +305,34 @@ TEST_CASE("[IsMatch] Keys are correctly matched") {
CHECK ( key2 . is_match ( match , true ) = = true ) ;
CHECK ( key2 . is_match ( no_match , true ) = = false ) ;
// Physical key with location.
InputEventKey key3 ;
key3 . set_keycode ( Key : : NONE ) ;
key3 . set_physical_keycode ( Key : : SHIFT ) ;
Ref < InputEventKey > loc_ref = key . create_reference ( Key : : NONE ) ;
loc_ref - > set_keycode ( Key : : SHIFT ) ;
loc_ref - > set_physical_keycode ( Key : : SHIFT ) ;
CHECK ( key3 . is_match ( loc_ref , false ) = = true ) ;
key3 . set_location ( KeyLocation : : UNSPECIFIED ) ;
CHECK ( key3 . is_match ( loc_ref , false ) = = true ) ;
loc_ref - > set_location ( KeyLocation : : LEFT ) ;
CHECK ( key3 . is_match ( loc_ref , false ) = = true ) ;
key3 . set_location ( KeyLocation : : LEFT ) ;
CHECK ( key3 . is_match ( loc_ref , false ) = = true ) ;
key3 . set_location ( KeyLocation : : RIGHT ) ;
CHECK ( key3 . is_match ( loc_ref , false ) = = false ) ;
// Keycode key with location.
key3 . set_physical_keycode ( Key : : NONE ) ;
key3 . set_keycode ( Key : : SHIFT ) ;
CHECK ( key3 . is_match ( loc_ref , false ) = = true ) ;
}
} // namespace TestInputEventKey