filename | test/sh4/testsh4.c |
changeset | 364:d738f6883d4a |
prev | 358:65043a8f5785 |
next | 384:c9d5c194984b |
author | nkeynes |
date | Tue Sep 04 08:32:44 2007 +0000 (16 years ago) |
permissions | -rw-r--r-- |
last change | Add method to retrieve the size of a block, given the code pointer (useful for eg disassembling the block) |
view | annotate | diff | log | raw |
1 #include <stdio.h>
3 int total_tests = 0;
4 int total_fails = 0;
6 int test_print_result( char *testname, int failed, int total )
7 {
8 fprintf( stdout, "%s: %d/%d tests passed\n", testname, total-failed, total );
9 total_tests += total;
10 total_fails += failed;
11 return failed;
12 }
14 void test_print_failure( char *testname, int number, char *message )
15 {
16 if( message == NULL ) {
17 fprintf( stderr, "%s: Test %d failed!\n", testname, number );
18 } else {
19 fprintf( stderr, "%s: Test %d failed: %s\n", testname, number, message );
20 }
21 }
23 extern unsigned int interrupt_pc;
24 extern unsigned int interrupt_count;
26 int assert_exception_caught( char *testname, int number, unsigned int expectedpc )
27 {
28 if( interrupt_count == 0 ) {
29 fprintf( stderr, "%s: Test %d failed: Expected exception not delivered\n",
30 testname, number );
31 return 1;
32 } else if( interrupt_count != 1 ) {
33 fprintf( stderr, "%s: Test %d failed: Expected exception delivered %d times!\n",
34 testname, number, interrupt_count );
35 return 1;
36 } else if( interrupt_pc != expectedpc ) {
37 fprintf( stderr, "%s: Test %d failed: Expected exception at PC %08X, but was %08X\n",
38 testname, number, expectedpc, interrupt_pc );
39 return 1;
40 } else {
41 return 0;
42 }
43 }
45 int main()
46 {
47 fprintf( stdout, "Instruction tests...\n" );
48 install_interrupt_handler();
49 test_add();
50 test_addc();
51 test_addv();
52 test_and();
53 test_andi();
54 test_bf();
55 test_bt();
56 test_cmp();
57 test_cmpstr();
58 test_div0();
59 test_float();
60 test_fmov();
61 test_ftrc();
62 test_mac();
63 test_shld();
64 fprintf( stdout, "--> %d/%d instruction tests passed (%d%%)\n\n",
65 total_tests-total_fails, total_tests,
66 ((total_tests-total_fails)*100)/total_tests );
68 fprintf( stdout, "Exception tests...\n" );
69 test_slot_illegal();
70 test_undefined();
71 remove_interrupt_handler();
73 fprintf( stdout, "Total: %d/%d tests passed (%d%%)\n", total_tests-total_fails,
74 total_tests, ((total_tests-total_fails)*100)/total_tests );
75 }
.