summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <alan.coopersmith@oracle.com>2022-09-13 18:46:43 -0700
committerAlan Coopersmith <alan.coopersmith@oracle.com>2022-09-13 19:24:03 -0700
commit749d9bb10245985a25ee2a6a3262b8d882b8a889 (patch)
tree7ea0a86668a1292b299e6a48d3704b31cde7fc95
parent35831b86d10dfbe7af05040fae1fa4a6181ebfc0 (diff)
downloadxorg-lib-libXmu-749d9bb10245985a25ee2a6a3262b8d882b8a889.tar.gz
Add simple test cases for _XEditRes{Put,Get}* functions
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac1
-rw-r--r--test/EditResStream.c99
-rw-r--r--test/Makefile.am30
4 files changed, 131 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am
index 271d872..61110df 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = include src doc
+SUBDIRS = include src doc test
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = xmu.pc xmuu.pc
diff --git a/configure.ac b/configure.ac
index 4afe3d5..04538ae 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,6 +46,7 @@ AC_CONFIG_FILES([Makefile
doc/Makefile
include/Makefile
src/Makefile
+ test/Makefile
xmu.pc
xmuu.pc])
AC_OUTPUT
diff --git a/test/EditResStream.c b/test/EditResStream.c
new file mode 100644
index 0000000..4f35a37
--- /dev/null
+++ b/test/EditResStream.c
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2022, Oracle and/or its affiliates.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/* Test code for ProtocolStream Get/Put functions in src/EditResCom.c */
+#include <X11/Xmu/EditresP.h>
+#include <assert.h>
+
+static const char *test_string = "\tIt was a dark and stormy night...\n";
+
+#define FillBuffer(d, v) memset(d, v, sizeof(d))
+
+int main(void)
+{
+ ProtocolStream ps = { 0, 0, NULL, NULL, NULL };
+ unsigned char c;
+ unsigned short s;
+ unsigned long l;
+ Bool res;
+ char *str;
+ unsigned long ids[] = { 1, 10, 0xbabe, 0xbabeface, 0xffffffff };
+ WidgetInfo i = {
+ .num_widgets = sizeof(ids) / sizeof(ids[0]),
+ .ids = ids,
+ .real_widget = 0
+ };
+ WidgetInfo out = { 0, NULL, 0 };
+
+ _XEditResResetStream(&ps);
+
+ _XEditResPut8(&ps, 8);
+ _XEditResPut16(&ps, 16);
+ _XEditResPut16(&ps, 0xface);
+ _XEditResPut32(&ps, 32);
+ _XEditResPut32(&ps, 0xbabeface);
+ _XEditResPutString8(&ps, test_string);
+ _XEditResPutWidgetInfo(&ps, &i);
+
+ /* current is a pointer to the next byte to read from or write to,
+ so we need to reset it to the beginning to read the data we wrote */
+ ps.current = ps.top;
+
+ res = _XEditResGet8(&ps, &c);
+ assert(res == True);
+ assert(c == 8);
+
+ res = _XEditResGet16(&ps, &s);
+ assert(res == True);
+ assert(s == 16);
+
+ res = _XEditResGet16(&ps, &s);
+ assert(res == True);
+ assert(s == 0xface);
+
+ /* set the full value so we can make sure that in 64-bit mode we
+ write to the full long value, not just 32-bits of it. */
+ memset(&l, 0x0f, sizeof(l));
+ res = _XEditResGet32(&ps, &l);
+ assert(res == True);
+ assert(l == 32);
+
+ memset(&l, 0x0f, sizeof(l));
+ res = _XEditResGet32(&ps, &l);
+ assert(res == True);
+ assert(l == 0xbabeface);
+
+ res = _XEditResGetString8(&ps, &str);
+ assert(res == True);
+ assert(strcmp(str, test_string) == 0);
+ XtFree(str);
+ str = NULL;
+
+ res = _XEditResGetWidgetInfo(&ps, &out);
+ assert(res == True);
+ assert(memcmp(ids, out.ids, sizeof(ids)) == 0);
+ XtFree((char *) out.ids);
+ out.ids = NULL;
+
+ return 0;
+}
diff --git a/test/Makefile.am b/test/Makefile.am
new file mode 100644
index 0000000..955c0a6
--- /dev/null
+++ b/test/Makefile.am
@@ -0,0 +1,30 @@
+#
+# Copyright (c) 2022, Oracle and/or its affiliates.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+
+AM_CPPFLAGS = -D_CONST_X_STRING -I${top_srcdir}/include
+
+check_PROGRAMS = EditResStream
+TESTS = $(check_PROGRAMS)
+
+EditResStream_SOURCES = EditResStream.c
+EditResStream_LDADD = ${top_builddir}/src/libXmu.la $(XMU_LIBS)