filename | test/sh4/testsh4.c |
changeset | 358:65043a8f5785 |
prev | 357:3592a10b3242 |
next | 364:d738f6883d4a |
author | nkeynes |
date | Thu Aug 23 12:31:31 2007 +0000 (16 years ago) |
permissions | -rw-r--r-- |
last change | Add tests for mac.l and mac.w Start test cases for fmov Update exception tests |
file | annotate | diff | log | raw |
nkeynes@225 | 1 | #include <stdio.h> |
nkeynes@225 | 2 | |
nkeynes@226 | 3 | int total_tests = 0; |
nkeynes@226 | 4 | int total_fails = 0; |
nkeynes@226 | 5 | |
nkeynes@225 | 6 | int test_print_result( char *testname, int failed, int total ) |
nkeynes@225 | 7 | { |
nkeynes@231 | 8 | fprintf( stdout, "%s: %d/%d tests passed\n", testname, total-failed, total ); |
nkeynes@226 | 9 | total_tests += total; |
nkeynes@226 | 10 | total_fails += failed; |
nkeynes@225 | 11 | return failed; |
nkeynes@225 | 12 | } |
nkeynes@225 | 13 | |
nkeynes@226 | 14 | void test_print_failure( char *testname, int number, char *message ) |
nkeynes@225 | 15 | { |
nkeynes@226 | 16 | if( message == NULL ) { |
nkeynes@226 | 17 | fprintf( stderr, "%s: Test %d failed!\n", testname, number ); |
nkeynes@226 | 18 | } else { |
nkeynes@226 | 19 | fprintf( stderr, "%s: Test %d failed: %s\n", testname, number, message ); |
nkeynes@226 | 20 | } |
nkeynes@225 | 21 | } |
nkeynes@225 | 22 | |
nkeynes@228 | 23 | extern unsigned int interrupt_pc; |
nkeynes@228 | 24 | extern unsigned int interrupt_count; |
nkeynes@228 | 25 | |
nkeynes@228 | 26 | int assert_exception_caught( char *testname, int number, unsigned int expectedpc ) |
nkeynes@228 | 27 | { |
nkeynes@228 | 28 | if( interrupt_count == 0 ) { |
nkeynes@228 | 29 | fprintf( stderr, "%s: Test %d failed: Expected exception not delivered\n", |
nkeynes@228 | 30 | testname, number ); |
nkeynes@228 | 31 | return 1; |
nkeynes@228 | 32 | } else if( interrupt_count != 1 ) { |
nkeynes@228 | 33 | fprintf( stderr, "%s: Test %d failed: Expected exception delivered %d times!\n", |
nkeynes@228 | 34 | testname, number, interrupt_count ); |
nkeynes@228 | 35 | return 1; |
nkeynes@228 | 36 | } else if( interrupt_pc != expectedpc ) { |
nkeynes@228 | 37 | fprintf( stderr, "%s: Test %d failed: Expected exception at PC %08X, but was %08X\n", |
nkeynes@228 | 38 | testname, number, expectedpc, interrupt_pc ); |
nkeynes@228 | 39 | return 1; |
nkeynes@228 | 40 | } else { |
nkeynes@228 | 41 | return 0; |
nkeynes@228 | 42 | } |
nkeynes@228 | 43 | } |
nkeynes@228 | 44 | |
nkeynes@225 | 45 | int main() |
nkeynes@225 | 46 | { |
nkeynes@231 | 47 | fprintf( stdout, "Instruction tests...\n" ); |
nkeynes@228 | 48 | install_interrupt_handler(); |
nkeynes@225 | 49 | test_add(); |
nkeynes@226 | 50 | test_addc(); |
nkeynes@226 | 51 | test_addv(); |
nkeynes@226 | 52 | test_and(); |
nkeynes@226 | 53 | test_andi(); |
nkeynes@228 | 54 | test_bf(); |
nkeynes@231 | 55 | test_bt(); |
nkeynes@231 | 56 | test_cmp(); |
nkeynes@357 | 57 | test_float(); |
nkeynes@358 | 58 | test_fmov(); |
nkeynes@357 | 59 | test_ftrc(); |
nkeynes@358 | 60 | test_mac(); |
nkeynes@231 | 61 | fprintf( stdout, "--> %d/%d instruction tests passed (%d%%)\n\n", |
nkeynes@231 | 62 | total_tests-total_fails, total_tests, |
nkeynes@231 | 63 | ((total_tests-total_fails)*100)/total_tests ); |
nkeynes@231 | 64 | |
nkeynes@231 | 65 | fprintf( stdout, "Exception tests...\n" ); |
nkeynes@231 | 66 | test_slot_illegal(); |
nkeynes@233 | 67 | test_undefined(); |
nkeynes@228 | 68 | remove_interrupt_handler(); |
nkeynes@226 | 69 | |
nkeynes@231 | 70 | fprintf( stdout, "Total: %d/%d tests passed (%d%%)\n", total_tests-total_fails, |
nkeynes@226 | 71 | total_tests, ((total_tests-total_fails)*100)/total_tests ); |
nkeynes@225 | 72 | } |
.