aboutsummaryrefslogtreecommitdiff
path: root/tests/portable/asprintf-t.c
diff options
context:
space:
mode:
authorRuss Allbery <rra@stanford.edu>2007-10-04 22:21:19 +0000
committerRuss Allbery <rra@stanford.edu>2007-10-04 22:21:19 +0000
commit9ff667addf39128f43d08d4ec56a6a94ec3bb062 (patch)
tree41cd39045fb2d37d343608af57aebf844ecd5690 /tests/portable/asprintf-t.c
parent2f9387bdf0e047bbd193532c4fed209acabd0e7a (diff)
Initial import of a C portability framework and utility functions from
remctl so that the wallet client error handling can rest on a firmer foundation.
Diffstat (limited to 'tests/portable/asprintf-t.c')
-rw-r--r--tests/portable/asprintf-t.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/portable/asprintf-t.c b/tests/portable/asprintf-t.c
new file mode 100644
index 0000000..a362755
--- /dev/null
+++ b/tests/portable/asprintf-t.c
@@ -0,0 +1,51 @@
+/* $Id$ */
+/* asprintf and vasprintf test suite. */
+
+/* Written by Russ Allbery <rra@stanford.edu>
+ Copyright 2006 Board of Trustees, Leland Stanford Jr. University
+ See README for licensing terms. */
+
+#include <config.h>
+#include <system.h>
+
+#include <tests/libtest.h>
+
+static int
+vatest(char **result, const char *format, ...)
+{
+ va_list args;
+ int status;
+
+ va_start(args, format);
+ status = vasprintf(result, format, args);
+ va_end(args);
+ return status;
+}
+
+int
+main(void)
+{
+ char *result = NULL;
+
+ test_init(12);
+
+ ok_int(1, 7, asprintf(&result, "%s", "testing"));
+ ok_string(2, "testing", result);
+ free(result);
+ ok(3, 1);
+ ok_int(4, 0, asprintf(&result, "%s", ""));
+ ok_string(5, "", result);
+ free(result);
+ ok(6, 1);
+
+ ok_int(7, 6, vatest(&result, "%d %s", 2, "test"));
+ ok_string(8, "2 test", result);
+ free(result);
+ ok(9, 1);
+ ok_int(10, 0, vatest(&result, "%s", ""));
+ ok_string(11, "", result);
+ free(result);
+ ok(12, 1);
+
+ return 0;
+}