2002-07-16 Dietmar Maurer <dietmar@ximian.com>
[mono.git] / mono / tests / libtest.c
1 #include <stdio.h>
2
3 int mono_test_many_int_arguments (int a, int b, int c, int d, int e,
4                                   int f, int g, int h, int i, int j);
5 short mono_test_many_short_arguments (short a, short b, short c, short d, short e,
6                                       short f, short g, short h, short i, short j);
7 char mono_test_many_char_arguments (char a, char b, char c, char d, char e,
8                                     char f, char g, char h, char i, char j);
9
10 int
11 mono_test_many_int_arguments (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j)
12 {
13         return a + b + c + d + e + f + g + h + i + j;
14 }
15
16 short
17 mono_test_many_short_arguments (short a, short b, short c, short d, short e, short f, short g, short h, short i, short j)
18 {
19         return a + b + c + d + e + f + g + h + i + j;
20 }
21
22 char
23 mono_test_many_byte_arguments (char a, char b, char c, char d, char e, char f, char g, char h, char i, char j)
24 {
25         return a + b + c + d + e + f + g + h + i + j;
26 }
27
28 int
29 mono_test_puts_static (char *s)
30 {
31         printf ("TEST %s\n", s);
32         return 1;
33 }
34
35 typedef int (*SimpleDelegate3) (int a, int b);
36
37 int
38 mono_invoke_delegate (SimpleDelegate3 delegate)
39 {
40         int res;
41
42         printf ("start invoke %p\n", delegate);
43
44         res = delegate (2, 3);
45
46         printf ("end invoke\n");
47
48         return res;
49 }
50
51 int 
52 mono_test_marshal_char (short a1)
53 {
54         if (a1 = 'a')
55                 return 0;
56         
57         return 1;
58 }
59
60 int 
61 mono_test_marshal_array (int *a1)
62 {
63         int i, sum = 0;
64
65         for (i = 0; i < 50; i++)
66                 sum += a1 [i];
67         
68         return sum;
69 }
70
71 typedef struct {
72         int a;
73         int b;
74         int c;
75         char *d;
76 } simplestruct;
77
78 int 
79 mono_test_marshal_struct (simplestruct ss)
80 {
81         if (ss.a == 0 && ss.b == 1 && ss.c == 0 &&
82             !strcmp (ss.d, "TEST"))
83                 return 0;
84
85         return 1;
86 }
87
88
89 typedef int (*SimpleDelegate) (int a);
90
91 int
92 mono_test_marshal_delegate (SimpleDelegate delegate)
93 {
94         return delegate (2);
95 }
96
97 typedef int (*SimpleDelegate2) (simplestruct ss);
98
99 int
100 mono_test_marshal_delegate2 (SimpleDelegate2 delegate)
101 {
102         simplestruct ss;
103
104         ss.a = 0;
105         ss.b = 1;
106         ss.c = 0;
107         ss.d = "TEST";
108
109         return delegate (ss);
110 }
111