initial load of upstream version 1.06.32
[xmlrpc-c] / src / test / test.h
diff --git a/src/test/test.h b/src/test/test.h
new file mode 100644 (file)
index 0000000..4d5bdb8
--- /dev/null
@@ -0,0 +1,75 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "xmlrpc-c/util.h"
+
+extern int total_tests;
+extern int total_failures;
+
+
+/* This is a good place to set a breakpoint. */
+static __inline__ void
+test_failure(const char * const file,
+             unsigned int const line,
+             const char * const label,
+             const char * const statement) {
+
+    ++total_failures;
+    printf("\n%s:%u: test failure: %s (%s)\n", file, line, label, statement);
+    abort();
+}
+
+
+
+#define TEST(statement) \
+do { \
+    ++total_tests; \
+    if ((statement)) { \
+        printf("."); \
+    } else { \
+        test_failure(__FILE__, __LINE__, "expected", #statement); \
+    } \
+   } while (0)
+
+#define TEST_NO_FAULT(env) \
+    do { \
+        ++total_tests; \
+        if (!(env)->fault_occurred) { \
+            printf("."); \
+        } else { \
+            test_failure(__FILE__, __LINE__, "fault occurred", \
+            (env)->fault_string); \
+        } \
+       } while (0)
+
+static inline void
+test_fault(xmlrpc_env * const envP,
+           int          const expectedCode,
+           const char * const fileName,
+           unsigned int const lineNumber) {
+
+    ++total_tests;
+    if (!envP->fault_occurred)
+        test_failure(fileName, lineNumber, "no fault occurred", "");
+    else if (envP->fault_code != expectedCode)
+        test_failure(fileName, lineNumber, "wrong fault occurred",
+                     envP->fault_string);
+    else
+        printf(".");
+
+    xmlrpc_env_clean(envP);
+    xmlrpc_env_init(envP);
+}
+
+
+#define TEST_FAULT(envP, code) \
+    do { test_fault(envP, code, __FILE__, __LINE__); } while(0)
+
+;
+
+#define TEST_ERROR(reason) \
+do { \
+    printf("Unable to test at %s/%u.  %s", __FILE__, __LINE__, reason); \
+    abort(); \
+   } while (0)
+