diff options
Diffstat (limited to 'tests/11strfkey.c')
-rw-r--r-- | tests/11strfkey.c | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/tests/11strfkey.c b/tests/11strfkey.c new file mode 100644 index 0000000..4c77bdf --- /dev/null +++ b/tests/11strfkey.c @@ -0,0 +1,151 @@ +#include "../termkey.h" +#include "taplib.h" + +int +main (int argc, char *argv[]) +{ + termkey_t *tk; + termkey_key_t key; + char buffer[16]; + size_t len; + + plan_tests (44); + + tk = termkey_new_abstract ("vt100", NULL, 0); + + key.type = TERMKEY_TYPE_KEY; + key.code.codepoint = 'A'; + key.modifiers = 0; + key.multibyte[0] = 0; + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, 0); + is_int (len, 1, "length for unicode/A/0"); + is_str (buffer, "A", "buffer for unicode/A/0"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_WRAPBRACKET); + is_int (len, 1, "length for unicode/A/0 wrapbracket"); + is_str (buffer, "A", "buffer for unicode/A/0 wrapbracket"); + + key.type = TERMKEY_TYPE_KEY; + key.code.codepoint = 'b'; + key.modifiers = TERMKEY_KEYMOD_CTRL; + key.multibyte[0] = 0; + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, 0); + is_int (len, 3, "length for unicode/b/CTRL"); + is_str (buffer, "C-b", "buffer for unicode/b/CTRL"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LONGMOD); + is_int (len, 6, "length for unicode/b/CTRL longmod"); + is_str (buffer, "Ctrl-b", "buffer for unicode/b/CTRL longmod"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LONGMOD | TERMKEY_FORMAT_SPACEMOD); + is_int (len, 6, "length for unicode/b/CTRL longmod|spacemod"); + is_str (buffer, "Ctrl b", "buffer for unicode/b/CTRL longmod|spacemod"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LONGMOD | TERMKEY_FORMAT_LOWERMOD); + is_int (len, 6, "length for unicode/b/CTRL longmod|lowermod"); + is_str (buffer, "ctrl-b", "buffer for unicode/b/CTRL longmod|lowermod"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LONGMOD | TERMKEY_FORMAT_SPACEMOD + | TERMKEY_FORMAT_LOWERMOD); + is_int (len, 6, "length for unicode/b/CTRL longmod|spacemod|lowermode"); + is_str (buffer, "ctrl b", + "buffer for unicode/b/CTRL longmod|spacemod|lowermode"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_CARETCTRL); + is_int (len, 2, "length for unicode/b/CTRL caretctrl"); + is_str (buffer, "^B", "buffer for unicode/b/CTRL caretctrl"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_WRAPBRACKET); + is_int (len, 5, "length for unicode/b/CTRL wrapbracket"); + is_str (buffer, "<C-b>", "buffer for unicode/b/CTRL wrapbracket"); + + key.type = TERMKEY_TYPE_KEY; + key.code.codepoint = 'c'; + key.modifiers = TERMKEY_KEYMOD_ALT; + key.multibyte[0] = 0; + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, 0); + is_int (len, 3, "length for unicode/c/ALT"); + is_str (buffer, "A-c", "buffer for unicode/c/ALT"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LONGMOD); + is_int (len, 5, "length for unicode/c/ALT longmod"); + is_str (buffer, "Alt-c", "buffer for unicode/c/ALT longmod"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_ALTISMETA); + is_int (len, 3, "length for unicode/c/ALT altismeta"); + is_str (buffer, "M-c", "buffer for unicode/c/ALT altismeta"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LONGMOD|TERMKEY_FORMAT_ALTISMETA); + is_int (len, 6, "length for unicode/c/ALT longmod|altismeta"); + is_str (buffer, "Meta-c", "buffer for unicode/c/ALT longmod|altismeta"); + + key.type = TERMKEY_TYPE_KEYSYM; + key.code.sym = TERMKEY_SYM_UP; + key.modifiers = 0; + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, 0); + is_int (len, 2, "length for sym/Up/0"); + is_str (buffer, "Up", "buffer for sym/Up/0"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_WRAPBRACKET); + is_int (len, 4, "length for sym/Up/0 wrapbracket"); + is_str (buffer, "<Up>", "buffer for sym/Up/0 wrapbracket"); + + key.type = TERMKEY_TYPE_KEYSYM; + key.code.sym = TERMKEY_SYM_PAGEUP; + key.modifiers = 0; + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, 0); + is_int (len, 6, "length for sym/PageUp/0"); + is_str (buffer, "PageUp", "buffer for sym/PageUp/0"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LOWERSPACE); + is_int (len, 7, "length for sym/PageUp/0 lowerspace"); + is_str (buffer, "page up", "buffer for sym/PageUp/0 lowerspace"); + + /* If size of buffer is too small, + * strfkey should return something consistent */ + len = termkey_strfkey (tk, buffer, 4, &key, 0); + is_int (len, 6, "length for sym/PageUp/0"); + is_str (buffer, "Pag", "buffer of len 4 for sym/PageUp/0"); + + len = termkey_strfkey (tk, buffer, 4, &key, TERMKEY_FORMAT_LOWERSPACE); + is_int (len, 7, "length for sym/PageUp/0 lowerspace"); + is_str (buffer, "pag", "buffer of len 4 for sym/PageUp/0 lowerspace"); + + key.type = TERMKEY_TYPE_FUNCTION; + key.code.number = 5; + key.modifiers = 0; + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, 0); + is_int (len, 2, "length for func/5/0"); + is_str (buffer, "F5", "buffer for func/5/0"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_WRAPBRACKET); + is_int (len, 4, "length for func/5/0 wrapbracket"); + is_str (buffer, "<F5>", "buffer for func/5/0 wrapbracket"); + + len = termkey_strfkey (tk, buffer, sizeof buffer, &key, + TERMKEY_FORMAT_LOWERSPACE); + is_int (len, 2, "length for func/5/0 lowerspace"); + is_str (buffer, "f5", "buffer for func/5/0 lowerspace"); + + termkey_destroy (tk); + return exit_status (); +} |