summaryrefslogtreecommitdiff
path: root/tests/check_public.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/check_public.c')
-rw-r--r--tests/check_public.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/check_public.c b/tests/check_public.c
index aed40c8..3caac1e 100644
--- a/tests/check_public.c
+++ b/tests/check_public.c
@@ -1,6 +1,10 @@
#include <check.h>
+#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#ifdef __unix__
+#include <unistd.h>
+#endif
#include "check_suites.h"
#include "xcb.h"
#include "xcbext.h"
@@ -97,6 +101,37 @@ static void parse_display_fail(const char *name)
START_TEST(parse_display_unix)
{
+#ifdef __unix__
+ char buf[sizeof "/tmp/xcb-test.XXXXXXX"];
+ char buf2[sizeof(buf) + 7];
+ int r, v;
+ memcpy(buf, "/tmp/xcb-test.XXXXXXX", sizeof buf);
+ v = mkstemp(buf);
+ ck_assert_msg(v >= 0, "cannot create temporary file");
+ parse_display_pass(buf, buf, 0, 0);
+ r = snprintf(buf2, sizeof buf2, "unix:%s", buf);
+ if (r < 5 || r >= (int)sizeof buf2) {
+ ck_assert_msg(0, "snprintf() failed (return value %d)", r);
+ unlink(buf);
+ return;
+ }
+ parse_display_pass(buf2, buf, 0, 0);
+ r = snprintf(buf2, sizeof buf2, "unix:%s.1", buf);
+ if (r < 7 || r >= (int)sizeof buf2) {
+ ck_assert_msg(0, "snprintf() failed (return value %d)", r);
+ unlink(buf);
+ return;
+ }
+ parse_display_pass(buf2, buf, 0, 1);
+ r = snprintf(buf2, sizeof buf2, "%s.1", buf);
+ if (r < 2 || r >= (int)sizeof buf2) {
+ ck_assert_msg(0, "snprintf() failed (return value %d)", r);
+ unlink(buf);
+ return;
+ }
+ parse_display_pass(buf2, buf, 0, 1);
+ unlink(buf);
+#endif
parse_display_pass(":0", "", 0, 0);
parse_display_pass(":1", "", 1, 0);
parse_display_pass(":0.1", "", 0, 1);