aboutsummaryrefslogtreecommitdiff
path: root/test/compose.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/compose.c')
-rw-r--r--test/compose.c54
1 files changed, 50 insertions, 4 deletions
diff --git a/test/compose.c b/test/compose.c
index 5ba5751..35790a3 100644
--- a/test/compose.c
+++ b/test/compose.c
@@ -179,7 +179,7 @@ test_seqs(struct xkb_context *ctx)
char *path;
FILE *file;
- path = test_get_path("compose/en_US.UTF-8/Compose");
+ path = test_get_path("locale/en_US.UTF-8/Compose");
file = fopen(path, "rb");
assert(file);
free(path);
@@ -353,7 +353,7 @@ test_state(struct xkb_context *ctx)
char *path;
FILE *file;
- path = test_get_path("compose/en_US.UTF-8/Compose");
+ path = test_get_path("locale/en_US.UTF-8/Compose");
file = fopen(path, "rb");
assert(file);
free(path);
@@ -410,7 +410,7 @@ test_XCOMPOSEFILE(struct xkb_context *ctx)
struct xkb_compose_table *table;
char *path;
- path = test_get_path("compose/en_US.UTF-8/Compose");
+ path = test_get_path("locale/en_US.UTF-8/Compose");
setenv("XCOMPOSEFILE", path, 1);
free(path);
@@ -418,6 +418,8 @@ test_XCOMPOSEFILE(struct xkb_context *ctx)
XKB_COMPOSE_COMPILE_NO_FLAGS);
assert(table);
+ unsetenv("XCOMPOSEFILE");
+
assert(test_compose_seq(table,
XKB_KEY_dead_tilde, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSING, "", XKB_KEY_NoSymbol,
XKB_KEY_space, XKB_COMPOSE_FEED_ACCEPTED, XKB_COMPOSE_COMPOSED, "~", XKB_KEY_asciitilde,
@@ -427,6 +429,49 @@ test_XCOMPOSEFILE(struct xkb_context *ctx)
}
static void
+test_from_locale(struct xkb_context *ctx)
+{
+ struct xkb_compose_table *table;
+ char *path;
+
+ path = test_get_path("locale");
+ setenv("XLOCALEDIR", path, 1);
+ free(path);
+
+ /* Direct directory name match. */
+ table = xkb_compose_table_new_from_locale(ctx, "en_US.UTF-8",
+ XKB_COMPOSE_COMPILE_NO_FLAGS);
+ assert(table);
+ xkb_compose_table_unref(table);
+
+ /* Direct locale name match. */
+ table = xkb_compose_table_new_from_locale(ctx, "C.UTF-8",
+ XKB_COMPOSE_COMPILE_NO_FLAGS);
+ assert(table);
+ xkb_compose_table_unref(table);
+
+ /* Alias. */
+ table = xkb_compose_table_new_from_locale(ctx, "univ.utf8",
+ XKB_COMPOSE_COMPILE_NO_FLAGS);
+ assert(table);
+ xkb_compose_table_unref(table);
+
+ /* Special case - C. */
+ table = xkb_compose_table_new_from_locale(ctx, "C",
+ XKB_COMPOSE_COMPILE_NO_FLAGS);
+ assert(table);
+ xkb_compose_table_unref(table);
+
+ /* Bogus - not found. */
+ table = xkb_compose_table_new_from_locale(ctx, "blabla",
+ XKB_COMPOSE_COMPILE_NO_FLAGS);
+ assert(!table);
+
+ unsetenv("XLOCALEDIR");
+}
+
+
+static void
test_modifier_syntax(struct xkb_context *ctx)
{
const char *table_string;
@@ -486,7 +531,7 @@ test_include(struct xkb_context *ctx)
{
char *path, *table_string;
- path = test_get_path("compose/en_US.UTF-8/Compose");
+ path = test_get_path("locale/en_US.UTF-8/Compose");
assert(path);
/* We don't have a mechanism to change the include paths like we
@@ -526,6 +571,7 @@ main(int argc, char *argv[])
test_seqs(ctx);
test_conflicting(ctx);
test_XCOMPOSEFILE(ctx);
+ test_from_locale(ctx);
test_state(ctx);
test_modifier_syntax(ctx);
test_include(ctx);