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);
34 // Truncate the two output files
35 // TODO: Move to stack.c
36 fclose( fopen("stdout.txt", "w") );
37 fclose( fopen("stderr.txt", "w") );
39 Net_Open(0, "/tmp/acess2net");
43 for(int i = 0; tests[i]; i ++ )
45 Stack_AddDevice("/tmp/acess2net", (char[]){TEST_MAC});
46 Stack_AddInterface("eth0", 4, (const char[]){TEST_IP}, 24);
47 Stack_AddRoute(4, "\0\0\0\0", 0, (const char[]){HOST_IP});
48 if( Stack_Start("cmdline") )
51 if( Net_Receive(0, 1, &argc, 1000) == 0 )
54 bool result = tests[i]();
56 printf("%s: %s\n", gsTestName, (result ? "PASS" : "FAIL"));
66 unlink("/tmp/acess2net");
67 printf("--- All tests done %i pass, %i fail\n", n_pass, n_fail);
72 void PrintUsage(const char *ProgName)
74 fprintf(stderr, "Usage: %s\n", ProgName);
77 int ParseCommandline(int argc, char *argv[])
79 const char *progname = argv[0];
80 for( int i = 1; i < argc; i ++ )
82 const char *arg = argv[i];
86 else if( arg[1] != '-' ) {
91 if( strcmp(arg, "--help") == 0 ) {
96 fprintf(stderr, "Unknown option: %s\n", arg);
105 void test_setname(const char *name)
110 void test_message(const char *filename, int line, const char *msg, ...)
112 fprintf(stderr, "%s:%i [%s] - ", filename, line, gsTestName);
115 vfprintf(stderr, msg, args);
117 fprintf(stderr, "\n");
120 void test_assertion_fail(const char *filename, int line, const char *fmt, ...)
122 fprintf(stderr, "%s:%i [%s] - ASSERT FAIL ", filename, line, gsTestName);
125 vfprintf(stderr, fmt, args);
127 fprintf(stderr, "\n");
130 void test_trace(const char *msg, ...)
132 printf("TRACE: [%s] ", gsTestName);
135 vfprintf(stdout, msg, args);
139 void test_trace_hexdump(const char *hdr, const void *data, size_t len)
141 printf("TRACE: [%s] %s - %zi bytes\n", gsTestName, hdr, len);
142 const uint8_t *data8 = data;
145 printf("TRACE: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n",
146 data8[0], data8[1], data8[ 2], data8[ 3], data8[ 4], data8[ 5], data8[ 6], data8[ 7],
147 data8[8], data8[9], data8[10], data8[11], data8[12], data8[13], data8[14], data8[15]
155 printf("%02x %02x %02x %02x %02x %02x %02x %02x ",
156 data8[0], data8[1], data8[ 2], data8[ 3], data8[ 4], data8[ 5], data8[ 6], data8[ 7]
163 printf("%02x ", data8[0]);