diff options
author | Andreas Sandberg <andreas.sandberg@arm.com> | 2015-07-07 10:03:13 +0100 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2015-07-07 10:03:13 +0100 |
commit | c2740578404b4e46d198de70af1cfd554033d99f (patch) | |
tree | bb97478f7d31251d5b1bb0013b6b06b16ca0712c /ext/nomali/tests/test_helpers.c | |
parent | a0cbf5541133e58968919991635797babaad2a18 (diff) | |
download | gem5-c2740578404b4e46d198de70af1cfd554033d99f.tar.xz |
ext: Add the NoMali GPU no-simulation library
Add revision 9adf9d6e2d889a483a92136c96eb8a434d360561 of NoMali-model
from https://github.com/ARM-software/nomali-model. This library
implements the register interface of the Mali T6xx/T7xx series GPUs,
but doesn't do any rendering. It can be used to hide the effects of
software rendering.
Diffstat (limited to 'ext/nomali/tests/test_helpers.c')
-rw-r--r-- | ext/nomali/tests/test_helpers.c | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/ext/nomali/tests/test_helpers.c b/ext/nomali/tests/test_helpers.c new file mode 100644 index 000000000..dad6d4ad1 --- /dev/null +++ b/ext/nomali/tests/test_helpers.c @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2013 Andreas Sandberg + * All rights reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Authors: Andreas Sandberg + */ + +#include "test_helpers.h" + +#include <assert.h> +#include <stdarg.h> +#include <stdlib.h> + +unsigned test_current = 0; +unsigned test_count = 0; +unsigned test_fail_count = 0; + +void +test_init(unsigned no_tests) +{ + assert(test_count == 0 && test_current == 0); + + test_count = no_tests; + test_current = 1; + test_fail_count = 0; + + printf("1..%u\n", no_tests); +} + +void +test_exit() +{ + if (test_fail_count) + exit(EXIT_FAILURE); + else + exit(EXIT_SUCCESS); +} + +void +test_bail(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + + printf("Bail out! "); + vprintf(fmt, ap); + printf("\n"); + + va_end(ap); + + exit(EXIT_FAILURE); +} + +void +test_diag(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + + printf("# "); + vprintf(fmt, ap); + printf("\n"); + + va_end(ap); +} + +static void +test_vstatus(const char *status, const char *test, + const char *directive, + const char *fmt_why, va_list ap) +{ + printf("%s %i", status, test_current); + + if (test && test[0] != '\0') + printf(" - %s", test); + + if (directive && directive[0] != '\0') { + printf(" # %s ", directive); + if (fmt_why && fmt_why[0] != '\0') + vprintf(fmt_why, ap); + } + printf("\n"); + + ++test_current; +} + +static void __attribute__((format (printf, 4, 5))) +test_status(const char *status, const char *test, + const char *directive, + const char *fmt_why, ...) +{ + va_list ap; + va_start(ap, fmt_why); + + test_vstatus(status, test, directive, fmt_why, ap); + + va_end(ap); +} + +void +test_ok(const char *test) +{ + test_status("ok", test, NULL, NULL); +} + +void +test_fail(const char *test) +{ + test_status("not ok", test, NULL, NULL); + ++test_fail_count; +} + +void +test_skip(const char *test, const char *fmt_why, ...) +{ + va_list ap; + va_start(ap, fmt_why); + + test_vstatus("ok", test, "SKIP", fmt_why, ap); + + va_end(ap); +} + +void +test_todo(const char *test, const char *fmt_why, ...) +{ + va_list ap; + va_start(ap, fmt_why); + + test_vstatus("not ok", test, "TODO", fmt_why, ap); + + va_end(ap); + + ++test_fail_count; +} |