aboutsummaryrefslogtreecommitdiff
path: root/source/tests/run_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/tests/run_tests.c')
-rw-r--r--source/tests/run_tests.c106
1 files changed, 106 insertions, 0 deletions
diff --git a/source/tests/run_tests.c b/source/tests/run_tests.c
new file mode 100644
index 0000000..207347f
--- /dev/null
+++ b/source/tests/run_tests.c
@@ -0,0 +1,106 @@
+#include "compat.h"
+#include "tests.h"
+#include "utils.h"
+
+#include <unistd.h>
+#include <signal.h>
+
+
+int null_dev = -1;
+static FILE* null_file = NULL;
+MYASSERT_LOGDEF;
+unsigned test_count = 0;
+unsigned test_faild = 0;
+
+
+void sigsegv_handler(int signal)
+{
+ if (signal == SIGSEGV) {
+ ERRPRINT_BOTH("%s", "***** ACCESS VIOLATION *****");
+ fclose(null_file);
+ fclose(MYASSERT_LOGFILE);
+ exit(1);
+ }
+}
+
+int main(int argc, char** argv)
+{
+ fprintf(stderr, "Running TESTS ..\n\n");
+
+ (void)argc;
+ if (signal(SIGSEGV, sigsegv_handler) == SIG_ERR) {
+ fprintf(stderr, "Could not setup a signal handler for memory acces violations!\n");
+ }
+
+ if (bInitCompat( LoadLibraryA(TEXT("KERNEL32.dll")), GetProcAddress ) != TRUE) {
+ fprintf(stderr, "bInitCompat(...) failed!\n");
+ return 1;
+ }
+
+ const char* null_devname = "nul";
+ null_file = fopen (null_devname, "w");
+ if (null_file == NULL) {
+ fprintf(stderr, "Could not open windows NULL device: %s", null_devname);
+ } else null_dev = _fileno(null_file);
+
+ MYASSERT_INIT;
+ MYASSERT(test_math());
+ MYASSERT(test_utils())
+ MYASSERT(test_heap());
+ MYASSERT(test_mem());
+ MYASSERT(test_memalign());
+ MYASSERT(test_aes());
+ MYASSERT(test_crypt());
+ MYASSERT(test_distorm());
+ MYASSERT(test_stdio());
+ MYASSERT(test_pe(argv[0]));
+ MYASSERT(test_http());
+
+ MYASSERT_SILENT( (puts("puts(...)\n") == 0) );
+ MYASSERT_SILENT( (__xputs("__xputs(...)\n") > 0) );
+
+ static char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";
+ char* rndstr = __randstring(4096, charset);
+ MYASSERT_SILENT( (__xprintf("---%s---\n", rndstr) > 0) );
+ COMPAT(free)(rndstr);
+
+ if (MYASSERT_RETVAL == 0) {
+ ERRPRINT_BOTH("SUCCESS | TESTS: %u", (unsigned)test_count);
+ } else {
+ ERRPRINT_BOTH("LAST FAILED with %d | FAILED/TESTS: %u/%u", MYASSERT_RETVAL, (unsigned)test_faild, (unsigned)test_count);
+ }
+
+ MYASSERT_RETURN;
+}
+
+char* test_randstring(size_t length)
+{
+
+ static char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";
+ return __randstring(length, charset);;
+}
+
+char* test_randhexstring(size_t length)
+{
+ static char hcharset[] = "0123456789abcdef";
+ return __randstring(length, hcharset);
+}
+
+int fprintf_setw(FILE *stream, size_t s_maxlen, const char *format, ...)
+{
+ int ret;
+ static char tmp[BUFSIZ];
+ va_list va;
+ va_start(va, format);
+
+ ret = vsnprintf(tmp, BUFSIZ, format, va);
+ if (ret > 0 && (size_t)ret < s_maxlen && ret+s_maxlen < BUFSIZ)
+ {
+ for (size_t i = ret; i < s_maxlen; ++i)
+ tmp[i] = '.';
+ }
+ ret = fprintf(stream, "%s", tmp);
+
+ va_end(va);
+ return ret;
+}