File: int_test.c

package info (click to toggle)
hatari 2.6.1%2Bdfsg-2
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 11,236 kB
  • sloc: ansic: 167,249; cpp: 8,685; python: 6,324; objc: 1,888; asm: 1,754; sh: 1,688; javascript: 149; makefile: 87; xml: 32
file content (117 lines) | stat: -rw-r--r-- 2,470 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
 * CPU integer arithmetic tests.
 *
 * This file is distributed under the GNU General Public License, version 2
 * or at your option any later version. Read the file gpl.txt for details.
 */

#include <tos.h>

extern char tst_abcd_1(void);
extern char tst_abcd_2(void);
extern char tst_abcd_3(void);
extern char tst_abcd_4(void);

extern char tst_add_1(void);
extern char tst_add_2(void);
extern char tst_add_3(void);
extern char tst_add_4(void);
extern char tst_add_5(void);
extern char tst_add_6(void);
extern char tst_add_7(void);

extern char tst_addi_1(void);
extern char tst_addi_2(void);
extern char tst_addi_3(void);
extern char tst_addi_4(void);
extern char tst_addi_5(void);
extern char tst_addi_6(void);

extern char tst_addq_1(void);
extern char tst_addq_2(void);
extern char tst_addq_3(void);

extern char tst_addx_1(void);
extern char tst_addx_2(void);

extern char tst_shift_1(void);
extern char tst_shift_2(void);
extern char tst_shift_3(void);
extern char tst_shift_4(void);
extern char tst_shift_5(void);
extern char tst_shift_6(void);
extern char tst_shift_7(void);
extern char tst_shift_8(void);

struct test
{
	char *name;
	char (*testfunc)(void);
};

struct test tests[] =
{
	{ "abcd 1", tst_abcd_1 },
	{ "abcd 2", tst_abcd_2 },
	{ "abcd 3", tst_abcd_3 },
	{ "abcd 4", tst_abcd_4 },

	{ "add 1", tst_add_1 },
	{ "add 2", tst_add_2 },
	{ "add 3", tst_add_3 },
	{ "add 4", tst_add_4 },
	{ "add 5", tst_add_5 },
	{ "add 6", tst_add_6 },
	{ "add 7", tst_add_7 },

	{ "addi 1", tst_addi_1 },
	{ "addi 2", tst_addi_2 },
	{ "addi 3", tst_addi_3 },
	{ "addi 4", tst_addi_4 },
	{ "addi 5", tst_addi_5 },
	{ "addi 6", tst_addi_6 },

	{ "addq 1", tst_addq_1 },
	{ "addq 2", tst_addq_2 },
	{ "addq 3", tst_addq_3 },

	{ "addx 1", tst_addx_1 },
	{ "addx 2", tst_addx_2 },

	{ "shift 1", tst_shift_1 },
	{ "shift 2", tst_shift_2 },
	{ "shift 3", tst_shift_3 },
	{ "shift 4", tst_shift_4 },
	{ "shift 5", tst_shift_5 },
	{ "shift 6", tst_shift_6 },
	{ "shift 7", tst_shift_7 },
	{ "shift 8", tst_shift_8 },

	{ 0L, 0L }
};

int main()
{
	int failures = 0;
	int idx;

	for (idx = 0; tests[idx].name != 0L; idx++)
	{
		Cconws("Test '");
		Cconws(tests[idx].name);
		Cconws("'\t: ");
		if (tests[idx].testfunc() != 0)
		{
			Cconws("FAILED\n");
			failures++;
		}
		else
		{
			Cconws("OK\n");
		}
	}

	// Crawcin();

	return !(failures == 0);
}