Merge: curl: basic Unix domain socket support
[nit.git] / lib / gmp / test_native_gmp.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 module test_native_gmp is test
16
17 import native_gmp
18
19 class TestNativeMPZ
20 test
21
22 var op1: NativeMPZ
23 var op2: NativeMPZ
24 var ui: UInt64
25 var r: NativeMPQ
26 var res: NativeMPZ
27
28 fun before_test is before do
29 op1 = new NativeMPZ
30 op2 = new NativeMPZ
31 ui = new UInt64
32 r = new NativeMPQ
33 res = new NativeMPZ
34 end
35
36 fun after_test is after do
37 op1.finalize
38 op2.finalize
39 ui.free
40 r.finalize
41 res.finalize
42 end
43
44 fun test_add do
45 op1.set_si 10
46 op2.set_si 20
47 op1.add(res, op2)
48 assert(res.cmp_si(30) == 0)
49 end
50
51 fun test_add_ui do
52 op1.set_si 10
53 ui.set_si 20
54 op1.add_ui(res, ui)
55 assert(res.cmp_si(30) == 0)
56 end
57
58 fun test_sub do
59 op1.set_si 30
60 op2.set_si 20
61 op1.sub(res, op2)
62 assert(res.cmp_si(10) == 0)
63 end
64
65 fun test_sub_ui do
66 op1.set_si 30
67 ui.set_si 20
68 op1.sub_ui(res, ui)
69 assert(res.cmp_si(10) == 0)
70 end
71
72 fun test_mul do
73 op1.set_si 10
74 op2.set_si 2
75 op1.mul(res, op2)
76 assert(res.cmp_si(20) == 0)
77 end
78
79 fun test_mul_si do
80 op1.set_si 2
81 op1.mul_si(res, 20)
82 assert(res.cmp_si(40) == 0)
83 end
84
85 fun test_neg do
86 op1.set_si 10
87 op1.neg(res)
88 assert(res.cmp_si(-10) == 0)
89 end
90
91 fun test_abs do
92 op1.set_si -10
93 op1.abs(res)
94 assert(res.cmp_si(10) == 0)
95 end
96
97 fun test_tdiv_q do
98 op1.set_si 11
99 op2.set_si 2
100 op1.tdiv_q(res, op2)
101 assert(res.cmp_si(5) == 0)
102 end
103
104 fun test_tdiv_q_ui do
105 op1.set_si 20
106 ui.set_si 20
107 op1.tdiv_q_ui(res, ui)
108 assert(res.cmp_si(1) == 0)
109 end
110
111 fun test_mod do
112 op1.set_si 11
113 op2.set_si 2
114 op1.mod(res, op2)
115 assert(res.cmp_si(1) == 0)
116 end
117
118 fun test_mod_ui do
119 op1.set_si 20
120 ui.set_si 20
121 op1.mod_ui(res, ui)
122 assert(res.cmp_si(0) == 0)
123 end
124
125 fun test_probab_prime_p do
126 op1.set_si 11
127 assert(op1.probab_prime_p(10i32) == 2)
128 end
129
130 fun test_nextprime do
131 op1.set_si 7
132 op1.nextprime res
133 assert(res.cmp_si(11) == 0)
134 end
135
136 fun test_gcd do
137 op1.set_si 12
138 op2.set_si 8
139 op1.gcd(res, op2)
140 assert(res.cmp_si(4) == 0)
141 end
142
143 fun test_gcd_ui do
144 op1.set_si 30
145 ui.set_si 20
146 op1.gcd_ui(res, ui)
147 assert(res.cmp_si(10) == 0)
148 end
149
150 fun test_cmp do
151 op1.set_si 12
152 op2.set_si 12
153 assert(op1.cmp(op2) == 0)
154 end
155
156 fun test_cmp_si do
157 op1.set_si 30
158 assert(op1.cmp_si(30) == 0)
159 end
160
161 fun test_set do
162 op1.set_si 12
163 op2.set op1
164 assert(op1.cmp(op2) == 0)
165 end
166
167 fun test_set_si do
168 op1.set_si 30
169 assert(op1.cmp_si(30) == 0)
170 end
171
172 fun test_set_d do
173 op1.set_d 3.0
174 assert(op1.cmp_si(3) == 0)
175 end
176
177 fun test_set_q do
178 r.set_si(30, 1)
179 op1.set_q r
180 assert(op1.cmp_si(30) == 0)
181 end
182
183 fun test_set_str do
184 op1.set_str("30".to_cstring, 10i32)
185 assert(op1.cmp_si(30) == 0)
186 end
187
188 fun test_swap do
189 op1.set_si 10
190 op2.set_si 20
191 op1.swap op2
192 assert(op1.cmp_si(20) == 0 and op2.cmp_si(10) == 0)
193 end
194
195 fun test_get_si do
196 op1.set_si 12
197 assert(op1.get_si == 12)
198 end
199
200 fun test_get_d do
201 op1.set_si 12
202 assert(op1.get_d == 12.0)
203 end
204
205 fun test_get_str do
206 op1.set_si 12
207 assert(op1.get_str(10i32).to_s == "12")
208 end
209 end
210
211 class TestNativeMPQ
212 test
213
214 var op1: NativeMPQ
215 var op2: NativeMPQ
216 var l: NativeMPZ
217 var res: NativeMPQ
218
219 fun before_test is before do
220 op1 = new NativeMPQ
221 op2 = new NativeMPQ
222 l = new NativeMPZ
223 res = new NativeMPQ
224 end
225
226 fun after_test is after do
227 op1.finalize
228 op2.finalize
229 l.finalize
230 res.finalize
231 end
232
233 fun test_add do
234 op1.set_si(10, 3)
235 op2.set_si(20, 3)
236 op1.add(res, op2)
237 assert(res.cmp_si(10, 1) == 0)
238 end
239
240 fun test_sub do
241 op1.set_si(20, 3)
242 op2.set_si(10, 3)
243 op1.sub(res, op2)
244 assert(res.cmp_si(10, 3) == 0)
245 end
246
247 fun test_mul do
248 op1.set_si(10, 3)
249 op2.set_si(10, 1)
250 op1.mul(res, op2)
251 assert(res.cmp_si(100, 3) == 0)
252 end
253
254 fun test_div do
255 op1.set_si(10, 3)
256 op2.set_si(2, 1)
257 op1.div(res, op2)
258 assert(res.cmp_si(5, 3) == 0)
259 end
260
261 fun test_neg do
262 op1.set_si(10, 3)
263 op1.neg(res)
264 assert(res.cmp_si(-10, 3) == 0)
265 end
266
267 fun test_abs do
268 op1.set_si(-10, 3)
269 op1.abs(res)
270 assert(res.cmp_si(10, 3) == 0)
271 end
272
273 fun test_inv do
274 op1.set_si(10, 3)
275 op1.inv(res)
276 assert(res.cmp_si(3, 10) == 0)
277 end
278
279 fun test_set do
280 op1.set_si(10, 3)
281 res.set op1
282 assert(res.cmp(op1) == 0)
283 end
284
285 fun test_set_z do
286 l.set_si 10
287 res.set_z l
288 assert(res.cmp_si(10, 1) == 0)
289 end
290
291 fun test_set_si do
292 res.set_si(10, 3)
293 assert(res.cmp_si(10, 3) == 0)
294 end
295
296 fun test_set_d do
297 res.set_d(0.5)
298 assert(res.cmp_si(1, 2) == 0)
299 end
300
301 fun test_set_str do
302 res.set_str "1/2".to_cstring
303 assert(res.cmp_si(1, 2) == 0)
304 end
305
306 fun test_swap do
307 op1.set_si(10, 3)
308 res.swap(op1)
309 assert(res.cmp_si(10, 3) == 0)
310 end
311
312 fun test_get_d do
313 res.set_si(1, 2)
314 assert(res.get_d == 0.5)
315 end
316
317 fun test_get_str do
318 res.set_si(1, 2)
319 assert(res.get_str(10i32).to_s == "1/2")
320 end
321
322 fun test_cmp do
323 op1.set_si(10, 3)
324 op2.set_si(10, 3)
325 assert(op1.cmp(op2) == 0)
326 end
327
328 # fun test_cmp_z do
329 # op1.set_si(10, 1)
330 # l.set_si 10
331 # assert(op1.cmp_z(l) == 0)
332 # end
333
334 fun test_cmp_si do
335 op1.set_si(10, 3)
336 assert(op1.cmp_si(10, 3) == 0)
337 end
338
339 fun test_equal do
340 op1.set_si(10, 3)
341 op2.set_si(10, 3)
342 assert op1.equal(op2)
343 end
344
345 fun test_numref do
346 op1.set_si(10, 3)
347 l.set_si 10
348 assert(op1.numref.cmp(l) == 0)
349 end
350
351 fun test_denref do
352 op1.set_si(10, 3)
353 l.set_si 3
354 assert(op1.denref.cmp(l) == 0)
355 end
356 end