X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=test%2Fut.c;h=c64f0b554d5788be57eafcc88327e12d50c1bacd;hb=d497821ebf302754ff4cd7265e5945c996e8fc34;hp=0282de595bbb74ffa3286a58dbdf54061ba90b38;hpb=9bea236b3402a262772b66d055ec6431cbd3ba87;p=oweals%2Fu-boot.git diff --git a/test/ut.c b/test/ut.c index 0282de595b..c64f0b554d 100644 --- a/test/ut.c +++ b/test/ut.c @@ -1,18 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Simple unit test library * * Copyright (c) 2013 Google, Inc - * - * SPDX-License-Identifier: GPL-2.0+ */ #include +#include +#include #include #include +DECLARE_GLOBAL_DATA_PTR; + void ut_fail(struct unit_test_state *uts, const char *fname, int line, const char *func, const char *cond) { + gd->flags &= ~(GD_FLG_SILENT | GD_FLG_RECORD); printf("%s:%d, %s(): %s\n", fname, line, func, cond); uts->fail_count++; } @@ -22,6 +26,7 @@ void ut_failf(struct unit_test_state *uts, const char *fname, int line, { va_list args; + gd->flags &= ~(GD_FLG_SILENT | GD_FLG_RECORD); printf("%s:%d, %s(): %s: ", fname, line, func, cond); va_start(args, fmt); vprintf(fmt, args); @@ -29,3 +34,61 @@ void ut_failf(struct unit_test_state *uts, const char *fname, int line, putc('\n'); uts->fail_count++; } + +ulong ut_check_free(void) +{ + struct mallinfo info = mallinfo(); + + return info.uordblks; +} + +long ut_check_delta(ulong last) +{ + return ut_check_free() - last; +} + +int ut_check_console_line(struct unit_test_state *uts, const char *fmt, ...) +{ + va_list args; + + va_start(args, fmt); + vsnprintf(uts->expect_str, sizeof(uts->expect_str), fmt, args); + va_end(args); + console_record_readline(uts->actual_str, sizeof(uts->actual_str)); + + return strcmp(uts->expect_str, uts->actual_str); +} + +int ut_check_console_end(struct unit_test_state *uts) +{ + if (!console_record_avail()) + return 0; + + console_record_readline(uts->actual_str, sizeof(uts->actual_str)); + + return 1; +} + +int ut_check_console_dump(struct unit_test_state *uts, int total_bytes) +{ + char *str = uts->actual_str; + int upto; + + /* Handle empty dump */ + if (!total_bytes) + return 0; + + for (upto = 0; upto < total_bytes;) { + int len; + int bytes; + + len = console_record_readline(str, sizeof(uts->actual_str)); + if (str[8] != ':' || str[9] != ' ') + return 1; + + bytes = len - 8 - 2 - 3 * 16 - 4; + upto += bytes; + } + + return upto == total_bytes ? 0 : 1; +}