]> www.average.org Git - pam_pcsc_cr.git/blobdiff - test_serial.c
add test for serializer
[pam_pcsc_cr.git] / test_serial.c
diff --git a/test_serial.c b/test_serial.c
new file mode 100644 (file)
index 0000000..b9d5e4b
--- /dev/null
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <string.h>
+#include "serial.h"
+
+int main(int argc, char *argv[])
+{
+       char *in[] = {
+               "My",
+               "Little",
+               "Pony",
+               NULL,
+       };
+       char buffer[256];
+       int i, rc;
+       serializer_t srl;
+
+       if ((rc = serial_init(&srl, buffer, sizeof(buffer)))) {
+               printf("serial_init rc=%d\n", rc);
+               return 1;
+       }
+       for (i = 0; in[i]; i++) {
+               int size = strlen(in[i]);
+               if ((rc = serial_put(&srl, in[i], size)) != size) {
+                       printf("serial_put(..., \"%s\", %d) = %d\n",
+                               in[i], size, rc);
+                       return 1;
+               }
+       }
+       if ((rc = serial_put(&srl, NULL, 0)) != 0) {
+               printf("serial_put(..., NULL, 0) = %d\n", rc);
+               return 1;
+       }
+       printf("serialized size=%d\n", serial_size(&srl));
+       if ((rc = serial_init(&srl, buffer, sizeof(buffer)))) {
+               printf("second serial_init rc=%d\n", rc);
+               return 1;
+       }
+       for (i = 0; i < 4; i++) {
+               char item[32];
+               memset(item, 0, sizeof(item));
+               int size = serial_get(&srl, item, sizeof(item));
+               if (size > sizeof(item)) {
+                       printf("serial_get(..., item, %d) = %d\n",
+                               (int)sizeof(item), size);
+                       rc = 1;
+               } else if (size == 0) {
+                       printf("serial_get(...) = 0\n");
+               } else {
+                       printf("serial_get(...) = %d: \"%s\"\n", size, item);
+                       if (memcmp(in[i], item, size)) {
+                               printf("\"%s\" != \"%s\" (%d)\n",
+                                       in[i], item, size);
+                               rc = 1;
+                       }
+               }
+       }
+       return rc;
+}