mingw: make simavr compilable with MinGW
[simavr] / tests / tests.h
1 #ifndef __TESTS_H__
2 #define __TESTS_H__
3
4 #include "sim_avr.h"
5
6 enum tests_finish_reason {
7         LJR_CYCLE_TIMER = 1,
8         LJR_SPECIAL_DEINIT = 2,
9         // LJR_SLEEP_WITH_INT_OFF - LJR_SPECIAL_DEINIT happens...
10 };
11
12 #define ATMEGA48_UDR0 0xc6
13 #define ATMEGA88_UDR0 0xc6
14 #define ATMEGA644_UDR0 0xc6
15
16 #define fail(s, ...) _fail(__FILE__, __LINE__, s, ## __VA_ARGS__)
17
18 void __attribute__ ((noreturn,format (printf, 3, 4)))
19 _fail(const char *filename, int linenum, const char *fmt, ...);
20
21 avr_t *tests_init_avr(const char *elfname);
22 void tests_init(int argc, char **argv);
23 void tests_success(void);
24
25 int tests_run_test(avr_t *avr, unsigned long usec);
26 int tests_init_and_run_test(const char *elfname, unsigned long run_usec);
27 void tests_assert_uart_receive(const char *elfname,
28                                unsigned long run_usec,
29                                const char *expected, // what we should get
30                                char uart);
31 void tests_assert_uart_receive_avr(avr_t *avr,
32                                unsigned long run_usec,
33                                const char *expected,
34                                char uart);                                 
35
36 void tests_assert_cycles_at_least(unsigned long n);
37 void tests_assert_cycles_at_most(unsigned long n);
38
39 // the range is inclusive
40 void tests_assert_cycles_between(unsigned long min, unsigned long max);
41
42 extern avr_cycle_count_t tests_cycle_count;
43 extern int tests_disable_stdout;
44
45 #endif