1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-10 17:59:04 +00:00

Added a minimal regression test suite for nsock.

This commit is contained in:
henri
2013-05-08 11:52:28 +00:00
parent 612b1c11ea
commit b51a943a48
7 changed files with 398 additions and 0 deletions

84
nsock/tests/test-common.h Normal file
View File

@@ -0,0 +1,84 @@
/*
* Nsock regression test suite
* Same license as nmap -- see http://nmap.org/book/man-legal.html
*/
#ifndef __TEST_COMMON_H
#define __TEST_COMMON_H
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <nsock.h>
#define __ASSERT_BASE(stmt) do { \
if (!(stmt)) { \
fprintf(stderr, "(%s:%d) Assertion failed: " #stmt "\n", \
__FILE__, __LINE__); \
return -EINVAL; \
} \
} while (0)
#define AssertNonNull(a) __ASSERT_BASE((a) != NULL);
#define AssertEqual(a, b) __ASSERT_BASE((a) == (b));
#define AssertStrEqual(a, b) __ASSERT_BASE(strcmp((a), (b)) == 0);
struct test_case {
const char *t_name;
int (*t_setup)(void **tdata);
int (*t_run)(void *tdata);
int (*t_teardown)(void *tdata);
};
static inline const char *get_test_name(const struct test_case *test) {
return test->t_name;
}
static inline int test_setup(const struct test_case *test, void **tdata) {
int rc;
assert(test);
if (test->t_setup)
rc = test->t_setup(tdata);
else
rc = 0;
return rc;
}
static inline int test_run(const struct test_case *test, void *tdata) {
int rc;
assert(test);
if (test->t_run)
rc = test->t_run(tdata);
else
rc = 0;
return rc;
}
static inline int test_teardown(const struct test_case *test, void *tdata) {
int rc;
assert(test);
if (test->t_teardown)
rc = test->t_teardown(tdata);
else
rc = 0;
return rc;
}
#endif /* ^__TEST_COMMON_H */