On Tue, 3 Jul 2018 07:55:47 +0200
Martin Pieuchot <[email protected]> wrote:
> >
> > If wanted I can send the code I used to test this.
>
> It would be great if you could turn that into a regression test to put
> in /usr/src/regress/lib/libusbhid/nameofyourtest :)
Sure.
Should say that my Bourne shell & bsd.regress.mk knowledge/experience
is limited. Anyone feuer frei if any errors or unnecessary lines in the
files are found.
The regression test.
Added a group called usage and has three test cases.
I call them; hex, dec & static.
hex is disabled, as this(%x) is unhandled at the moment but included
for the future.
dec tests usages in page that has %u or %d formats.
static tests lines that has statically defined names.
Index: libusbhid/Makefile
===================================================================
RCS file: libusbhid/Makefile
diff -N libusbhid/Makefile
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ libusbhid/Makefile 4 Jul 2018 14:10:18 -0000
@@ -0,0 +1,7 @@
+# $OpenBSD$
+
+SUBDIR+= usage
+
+install:
+
+.include <bsd.subdir.mk>
Index: libusbhid/usage/Makefile
===================================================================
RCS file: libusbhid/usage/Makefile
diff -N libusbhid/usage/Makefile
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ libusbhid/usage/Makefile 4 Jul 2018 14:32:49 -0000
@@ -0,0 +1,25 @@
+# $OpenBSD$
+
+LDADD= -lusbhid
+DPADD= ${LIBUSBHID}
+WARNINGS= Yes
+CFLAGS+= -Werror
+
+
+PROG= parsetest
+REGRESS_TARGETS+= run-regress-${PROG}-hex
+REGRESS_TARGETS+= run-regress-${PROG}-dec
+REGRESS_TARGETS+= run-regress-${PROG}-static
+
+.include <bsd.regress.mk>
+
+# hextest is commented in runparse.sh
+run-regress-${PROG}-hex: ${PROG}
+ ./runparse.sh hex "100002 100012"
+
+run-regress-${PROG}-dec: ${PROG}
+ ./runparse.sh dec "90002 A0002 810002"
+
+run-regress-${PROG}-static: ${PROG}
+ ./runparse.sh static "B0002 D0002 820012"
+
Index: libusbhid/usage/parsetest.c
===================================================================
RCS file: libusbhid/usage/parsetest.c
diff -N libusbhid/usage/parsetest.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ libusbhid/usage/parsetest.c 4 Jul 2018 14:33:06 -0000
@@ -0,0 +1,50 @@
+/* $OpenBSD$ */
+/*
+ * Copyright (c) 2018 David Bern <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbhid.h>
+
+#include <err.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <usbhid.h>
+
+int
+main(int argc, char *argv[])
+{
+ char *table = NULL;
+ char usage[1024];
+ int testval;
+ const char *errstr;
+
+ if (hid_start(table) == -1)
+ errx(1, "\nUnable to load table");
+
+ /* No args given, just test if able to load table */
+ if (argc < 2)
+ return 0;
+
+ testval = strtonum(argv[1], 0x0, 0xFFFFFFFF, &errstr);
+ if (errstr != NULL)
+ errx(1, "\nInvalid argument");
+
+ snprintf(usage, sizeof(usage), "%s:%s",
+ hid_usage_page(HID_PAGE(testval)),
+ hid_usage_in_page(testval));
+
+ return (hid_parse_usage_in_page(usage) != testval);
+}
Index: libusbhid/usage/runparse.sh
===================================================================
RCS file: libusbhid/usage/runparse.sh
diff -N libusbhid/usage/runparse.sh
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ libusbhid/usage/runparse.sh 4 Jul 2018 14:33:19 -0000
@@ -0,0 +1,32 @@
+#!/bin/sh
+# $OpenBSD$
+
+run() {
+ for i in $* ; do
+ ./parsetest $(echo "ibase=16; $i" | bc)
+ if [ $? -ne 0 ]
+ then
+ printf "\nFailed on 0x%s\n" "$i"
+ return 1
+ fi
+ printf " $i"
+ done
+ printf "\n"
+ return 0
+}
+
+case $1 in
+ hex)
+ printf "Unable to handle %%x format names - DISABLED\n"
+ # run $2
+ exit 0 ;;
+ dec)
+ printf "Testing %%d & %%u format names"
+ run $2
+ exit $? ;;
+ static)
+ printf "Testing staticly named usage names"
+ run $2
+ exit $? ;;
+esac
+