14 int ParseCommandline(int argc, char *argv[]);
17 const char *gsTestName;
20 int main(int argc, char *argv[])
22 if( ParseCommandline(argc, argv) )
25 typedef bool t_test(void);
30 #define _(fcn) {fcn, #fcn}
33 //_(Test_TCP_WindowSizes),
38 // Truncate the two output files
39 // TODO: Move to stack.c
40 fclose( fopen("stdout.txt", "w") );
41 fclose( fopen("stderr.txt", "w") );
43 Net_Open(0, "/tmp/acess2net");
47 for(int i = 0; tests[i].fcn; i ++ )
49 Stack_AddDevice("/tmp/acess2net", (char[]){TEST_MAC});
50 Stack_AddInterface("eth0", 4, (const char[]){TEST_IP}, 24);
51 Stack_AddRoute(4, "\0\0\0\0", 0, (const char[]){HOST_IP});
52 if( Stack_Start(tests[i].name, "cmdline") )
55 if( Net_Receive(0, 1, &argc, 1000) == 0 )
58 bool result = tests[i].fcn();
60 printf("%s: %s\n", gsTestName, (result ? "PASS" : "FAIL"));
70 unlink("/tmp/acess2net");
71 printf("--- All tests done %i pass, %i fail\n", n_pass, n_fail);
76 void PrintUsage(const char *ProgName)
78 fprintf(stderr, "Usage: %s\n", ProgName);
81 int ParseCommandline(int argc, char *argv[])
83 const char *progname = argv[0];
84 for( int i = 1; i < argc; i ++ )
86 const char *arg = argv[i];
90 else if( arg[1] != '-' ) {
95 if( strcmp(arg, "--help") == 0 ) {
100 fprintf(stderr, "Unknown option: %s\n", arg);
101 PrintUsage(progname);
109 void test_setname(const char *name)
114 void test_message(const char *filename, int line, const char *msg, ...)
116 fprintf(stderr, "%s:%i [%s] - ", filename, line, gsTestName);
119 vfprintf(stderr, msg, args);
121 fprintf(stderr, "\n");
124 void test_assertion_fail(const char *filename, int line, const char *fmt, ...)
126 fprintf(stderr, "%s:%i [%s] - ASSERT FAIL ", filename, line, gsTestName);
129 vfprintf(stderr, fmt, args);
131 fprintf(stderr, "\n");
134 void test_trace(const char *msg, ...)
136 printf("TRACE: [%s] ", gsTestName);
139 vfprintf(stdout, msg, args);
143 void test_trace_hexdump(const char *hdr, const void *data, size_t len)
145 printf("TRACE: [%s] %s - %zi bytes\n", gsTestName, hdr, len);
146 const uint8_t *data8 = data;
149 printf("TRACE: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
150 data8[0], data8[1], data8[ 2], data8[ 3], data8[ 4], data8[ 5], data8[ 6], data8[ 7],
151 data8[8], data8[9], data8[10], data8[11], data8[12], data8[13], data8[14], data8[15]
159 printf("%02x %02x %02x %02x %02x %02x %02x %02x ",
160 data8[0], data8[1], data8[ 2], data8[ 3], data8[ 4], data8[ 5], data8[ 6], data8[ 7]
167 printf("%02x ", data8[0]);