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