Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / tests / jit-float.cs
1 using System;
2
3 public class TestJit {
4
5         public static int test_nan ()
6         {
7                 double nan1 = Double.NaN;
8                 double nan2 = Double.NaN;
9                 double neg_inf1 = Double.NegativeInfinity;
10                 double neg_inf2 = Double.NegativeInfinity;
11                 double pos_inf1 = Double.PositiveInfinity;
12                 double pos_inf2 = Double.PositiveInfinity;
13                 int err = 1;
14                 
15                 if (nan1 == nan2)
16                         return err;
17                 err++;
18
19                 if (!nan1.Equals(nan2))
20                         return err;
21                         
22                 err++;
23                 if (neg_inf1 != neg_inf2)
24                         return err;
25
26                 err++;
27                 if (!neg_inf1.Equals(neg_inf2))
28                         return err;
29
30                 err++;
31                 if (pos_inf1 != pos_inf2)
32                         return err;
33
34                 err++;
35                 if (!pos_inf1.Equals(pos_inf2))
36                         return err;
37
38                 err++;
39                 if (pos_inf1 == neg_inf1)
40                         return err;
41
42                 err++;
43                 if (pos_inf1.Equals (neg_inf1))
44                         return err;
45
46                 err++;
47                 if (pos_inf1 == nan1)
48                         return err;
49                 
50                 return 0;
51         }
52
53         public static double test_call (double a, double b) {
54                 return a+b;
55         }
56
57         public static int test_alu ()
58         {
59                 double a = 9, b = 6;
60                 int err = 1;
61                 
62                 if ((a + b) != 15)
63                         return err;
64                 
65                 err++;
66                 if ((a - b) != 3)
67                         return err;
68
69                 err++;
70                 if ((a * b) != 54)
71                         return err;
72                 
73                 err++;
74                 if ((a / 4) != 2.25)
75                         return err;
76
77                 err++;
78                 if ((a % 4) != 1)
79                         return err;
80
81                 err++;
82                 if (-a != -9)
83                         return err;
84
85                 return 0;
86         }
87         
88         public static int test_branch ()
89         {
90                 double a = 0.5, b = 0.5, t;
91                 int err = 1;
92
93                 if (a == b) t = 1; else t = 0;
94                 if (t != 1) return err;
95
96                 err++;
97                 if (a != b) t = 0; else t = 1;
98                 if (t != 1) return err;
99
100                 err++;
101                 if (a >= b) t = 1; else t = 0;
102                 if (t != 1) return err;
103
104                 err++;
105                 if (a > b) t = 0; else t = 1;
106                 if (t != 1) return err;
107
108                 err++;
109                 if (a <= b) t = 1; else t = 0;
110                 if (t != 1) return err;
111
112                 err++;
113                 if (a < b) t = 0; else t = 1;
114                 if (t != 1) return err;
115
116                 err++;
117                 if (a > 1.0) return err;
118                 
119                 err++;
120                 if (a < 0.1) return err;
121                 
122                 return 0;
123         }
124
125         public static int Main() {
126                 int num = 1;
127
128                 if (test_call (3, 5) != 8)
129                         return num;
130                 num++;
131
132                 if (test_branch () != 0)
133                         return num;
134                 num++;
135                 
136                 if (test_alu () != 0)
137                         return num;
138                 num++;
139
140                 if (test_nan () != 0)
141                         return num;
142                 num++;
143
144                         
145                 return 0;
146         }
147 }
148