diff options
| author | manuel <manuel@mausz.at> | 2012-03-26 12:54:45 +0200 |
|---|---|---|
| committer | manuel <manuel@mausz.at> | 2012-03-26 12:54:45 +0200 |
| commit | b5f0874cd96ee2a62aabc645b9626c2749cb6a01 (patch) | |
| tree | 1262e4bbe0634de6650be130c36e0538240f4cbf /pintos-progos/tests/lib.h | |
| download | progos-b5f0874cd96ee2a62aabc645b9626c2749cb6a01.tar.gz progos-b5f0874cd96ee2a62aabc645b9626c2749cb6a01.tar.bz2 progos-b5f0874cd96ee2a62aabc645b9626c2749cb6a01.zip | |
initial pintos checkin
Diffstat (limited to 'pintos-progos/tests/lib.h')
| -rw-r--r-- | pintos-progos/tests/lib.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/pintos-progos/tests/lib.h b/pintos-progos/tests/lib.h new file mode 100644 index 0000000..648327b --- /dev/null +++ b/pintos-progos/tests/lib.h | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | #ifndef TESTS_LIB_H | ||
| 2 | #define TESTS_LIB_H | ||
| 3 | |||
| 4 | #include <debug.h> | ||
| 5 | #include <stdbool.h> | ||
| 6 | #include <stddef.h> | ||
| 7 | #include <syscall.h> | ||
| 8 | |||
| 9 | extern const char *test_name; | ||
| 10 | extern bool quiet; | ||
| 11 | |||
| 12 | void msg (const char *, ...) PRINTF_FORMAT (1, 2); | ||
| 13 | void fail (const char *, ...) PRINTF_FORMAT (1, 2) NO_RETURN; | ||
| 14 | |||
| 15 | /* Takes an expression to test for SUCCESS and a message, which | ||
| 16 | may include printf-style arguments. Logs the message, then | ||
| 17 | tests the expression. If it is zero, indicating failure, | ||
| 18 | emits the message as a failure. | ||
| 19 | |||
| 20 | Somewhat tricky to use: | ||
| 21 | |||
| 22 | - SUCCESS must not have side effects that affect the | ||
| 23 | message, because that will cause the original message and | ||
| 24 | the failure message to differ. | ||
| 25 | |||
| 26 | - The message must not have side effects of its own, because | ||
| 27 | it will be printed twice on failure, or zero times on | ||
| 28 | success if quiet is set. */ | ||
| 29 | #define CHECK(SUCCESS, ...) \ | ||
| 30 | do \ | ||
| 31 | { \ | ||
| 32 | msg (__VA_ARGS__); \ | ||
| 33 | if (!(SUCCESS)) \ | ||
| 34 | fail (__VA_ARGS__); \ | ||
| 35 | } \ | ||
| 36 | while (0) | ||
| 37 | |||
| 38 | void shuffle (void *, size_t cnt, size_t size); | ||
| 39 | |||
| 40 | void exec_children (const char *child_name, pid_t pids[], size_t child_cnt); | ||
| 41 | void wait_children (pid_t pids[], size_t child_cnt); | ||
| 42 | |||
| 43 | void check_file_handle (int fd, const char *file_name, | ||
| 44 | const void *buf_, size_t filesize); | ||
| 45 | void check_file (const char *file_name, const void *buf, size_t filesize); | ||
| 46 | |||
| 47 | void compare_bytes (const void *read_data, const void *expected_data, | ||
| 48 | size_t size, size_t ofs, const char *file_name); | ||
| 49 | |||
| 50 | #endif /* test/lib.h */ | ||
