X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=test%2Fcommon.c;h=cb911e8027dea886e342161661f09a67acdda65d;hb=399aa888e0e5b2fc37bde5ec002211094f0c0448;hp=c371272bd817ffed77110092a8692086dd56f1eb;hpb=45496c33f1b6ed35701625bfb0de3598c7ebe7b4;p=platform%2Fupstream%2Flibxkbcommon.git diff --git a/test/common.c b/test/common.c index c371272..cb911e8 100644 --- a/test/common.c +++ b/test/common.c @@ -30,14 +30,23 @@ * Ran Benita */ +#include "config.h" + #include #include -#include +#include #include #include +#ifdef _WIN32 +#include +#include +#else +#include #include +#endif #include "test.h" +#include "utils.h" /* * Test a sequence of keysyms, resulting from a sequence of key presses, @@ -155,27 +164,70 @@ test_key_seq(struct xkb_keymap *keymap, ...) } char * +test_makedir(const char *parent, const char *path) +{ + char *dirname; + int err; + + dirname = asprintf_safe("%s/%s", parent, path); + assert(dirname); +#ifdef _WIN32 + err = _mkdir(dirname); +#else + err = mkdir(dirname, 0777); +#endif + assert(err == 0); + + return dirname; +} + +char * +test_maketempdir(const char *template) +{ +#ifdef _WIN32 + const char *basetmp = getenv("TMP"); + if (basetmp == NULL) { + basetmp = getenv("TEMP"); + } + if (basetmp == NULL) { + basetmp = getenv("top_builddir"); + } + assert(basetmp != NULL); + char *tmpdir = asprintf_safe("%s/%s", basetmp, template); + assert(tmpdir != NULL); + char *tmp = _mktemp(tmpdir); + assert(tmp == tmpdir); + int ret = _mkdir(tmp); + assert(ret == 0); + return tmpdir; +#else + char *tmpdir = asprintf_safe("/tmp/%s", template); + assert(tmpdir != NULL); + char *tmp = mkdtemp(tmpdir); + assert(tmp == tmpdir); + return tmpdir; +#endif +} + +char * test_get_path(const char *path_rel) { char *path; - size_t path_len; - const char *srcdir = getenv("top_srcdir"); + const char *srcdir; + + srcdir = getenv("top_srcdir"); + if (!srcdir) + srcdir = "."; if (path_rel[0] == '/') return strdup(path_rel); - path_len = strlen(srcdir ? srcdir : ".") + - strlen(path_rel ? path_rel : "") + 12; - path = malloc(path_len); + path = asprintf_safe("%s/test/data%s%s", srcdir, + path_rel[0] ? "/" : "", path_rel); if (!path) { - fprintf(stderr, "Failed to allocate path (%d chars) for %s\n", - (int) path_len, path_rel); + fprintf(stderr, "Failed to allocate path for %s\n", path_rel); return NULL; } - snprintf(path, path_len, - "%s/test/data/%s", srcdir ? srcdir : ".", - path_rel ? path_rel : ""); - return path; } @@ -247,8 +299,10 @@ test_get_context(enum test_context_flags test_flags) return NULL; path = test_get_path(""); - if (!path) + if (!path) { + xkb_context_unref(ctx); return NULL; + } xkb_context_include_path_append(ctx, path); free(path); @@ -267,7 +321,7 @@ test_compile_file(struct xkb_context *context, const char *path_rel) if (!path) return NULL; - file = fopen(path, "r"); + file = fopen(path, "rb"); if (!file) { fprintf(stderr, "Failed to open path: %s\n", path); free(path); @@ -349,136 +403,3 @@ test_compile_rules(struct xkb_context *context, const char *rules, return keymap; } - -void -test_print_keycode_state(struct xkb_state *state, - struct xkb_compose_state *compose_state, - xkb_keycode_t keycode, - enum xkb_consumed_mode consumed_mode) -{ - struct xkb_keymap *keymap; - - xkb_keysym_t sym; - const xkb_keysym_t *syms; - int nsyms; - char s[16]; - xkb_layout_index_t layout; - enum xkb_compose_status status; - - keymap = xkb_state_get_keymap(state); - - nsyms = xkb_state_key_get_syms(state, keycode, &syms); - - if (nsyms <= 0) - return; - - status = XKB_COMPOSE_NOTHING; - if (compose_state) - status = xkb_compose_state_get_status(compose_state); - - if (status == XKB_COMPOSE_COMPOSING || status == XKB_COMPOSE_CANCELLED) - return; - - if (status == XKB_COMPOSE_COMPOSED) { - sym = xkb_compose_state_get_one_sym(compose_state); - syms = &sym; - nsyms = 1; - } - else if (nsyms == 1) { - sym = xkb_state_key_get_one_sym(state, keycode); - syms = &sym; - } - - printf("keysyms [ "); - for (int i = 0; i < nsyms; i++) { - xkb_keysym_get_name(syms[i], s, sizeof(s)); - printf("%-*s ", (int) sizeof(s), s); - } - printf("] "); - - if (status == XKB_COMPOSE_COMPOSED) - xkb_compose_state_get_utf8(compose_state, s, sizeof(s)); - else - xkb_state_key_get_utf8(state, keycode, s, sizeof(s)); - printf("unicode [ %s ] ", s); - - layout = xkb_state_key_get_layout(state, keycode); - printf("layout [ %s (%d) ] ", - xkb_keymap_layout_get_name(keymap, layout), layout); - - printf("level [ %d ] ", - xkb_state_key_get_level(state, keycode, layout)); - - printf("mods [ "); - for (xkb_mod_index_t mod = 0; mod < xkb_keymap_num_mods(keymap); mod++) { - if (xkb_state_mod_index_is_active(state, mod, - XKB_STATE_MODS_EFFECTIVE) <= 0) - continue; - if (xkb_state_mod_index_is_consumed2(state, keycode, mod, - consumed_mode)) - printf("-%s ", xkb_keymap_mod_get_name(keymap, mod)); - else - printf("%s ", xkb_keymap_mod_get_name(keymap, mod)); - } - printf("] "); - - printf("leds [ "); - for (xkb_led_index_t led = 0; led < xkb_keymap_num_leds(keymap); led++) { - if (xkb_state_led_index_is_active(state, led) <= 0) - continue; - printf("%s ", xkb_keymap_led_get_name(keymap, led)); - } - printf("] "); - - printf("\n"); -} - -void -test_print_state_changes(enum xkb_state_component changed) -{ - if (changed == 0) - return; - - printf("changed [ "); - if (changed & XKB_STATE_LAYOUT_EFFECTIVE) - printf("effective-layout "); - if (changed & XKB_STATE_LAYOUT_DEPRESSED) - printf("depressed-layout "); - if (changed & XKB_STATE_LAYOUT_LATCHED) - printf("latched-layout "); - if (changed & XKB_STATE_LAYOUT_LOCKED) - printf("locked-layout "); - if (changed & XKB_STATE_MODS_EFFECTIVE) - printf("effective-mods "); - if (changed & XKB_STATE_MODS_DEPRESSED) - printf("depressed-mods "); - if (changed & XKB_STATE_MODS_LATCHED) - printf("latched-mods "); - if (changed & XKB_STATE_MODS_LOCKED) - printf("locked-mods "); - if (changed & XKB_STATE_LEDS) - printf("leds "); - printf("]\n"); -} - -void -test_disable_stdin_echo(void) -{ - /* Same as `stty -echo`. */ - struct termios termios; - if (tcgetattr(STDIN_FILENO, &termios) == 0) { - termios.c_lflag &= ~ECHO; - (void) tcsetattr(STDIN_FILENO, TCSADRAIN, &termios); - } -} - -void -test_enable_stdin_echo(void) -{ - /* Same as `stty echo`. */ - struct termios termios; - if (tcgetattr(STDIN_FILENO, &termios) == 0) { - termios.c_lflag |= ECHO; - (void) tcsetattr(STDIN_FILENO, TCSADRAIN, &termios); - } -}