Skip to content

Commit 3751121

Browse files
committed
add tests for fmpz_poly
1 parent e676e43 commit 3751121

1 file changed

Lines changed: 89 additions & 30 deletions

File tree

test/test.py

Lines changed: 89 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ def test_fmpz():
2424
assert int(f) == i
2525
assert flint.fmpz(f) == f
2626
assert flint.fmpz(str(i)) == f
27-
raises(lambda: flint.fmpz("qwe"), ValueError)
28-
raises(lambda: flint.fmpz([]), TypeError)
27+
assert raises(lambda: flint.fmpz("qwe"), ValueError)
28+
assert raises(lambda: flint.fmpz([]), TypeError)
2929
for s in L:
3030
for t in L:
3131
for ltype in (flint.fmpz, int, long):
@@ -87,15 +87,15 @@ def test_fmpz():
8787
big = flint.fmpz(bigstr)
8888
assert big.str() == bigstr
8989
assert big.str(condense=10) == '1111111111{...80 digits...}1111111111'
90-
raises(lambda: pow(flint.fmpz(2), 2, 3), NotImplementedError)
90+
assert raises(lambda: pow(flint.fmpz(2), 2, 3), NotImplementedError)
9191

9292
def test_fmpz_factor():
9393
assert flint.fmpz(6).gcd(flint.fmpz(9)) == 3
9494
assert flint.fmpz(6).gcd(9) == 3
95-
raises(lambda: flint.fmpz(2).gcd('asd'), TypeError)
95+
assert raises(lambda: flint.fmpz(2).gcd('asd'), TypeError)
9696
assert flint.fmpz(6).lcm(flint.fmpz(9)) == 18
9797
assert flint.fmpz(6).lcm(9) == 18
98-
raises(lambda: flint.fmpz(2).lcm('asd'), TypeError)
98+
assert raises(lambda: flint.fmpz(2).lcm('asd'), TypeError)
9999
assert flint.fmpz(25).factor() == [(5, 2)]
100100
n = flint.fmpz(10**100 + 1)
101101
assert n.factor() == [
@@ -170,12 +170,12 @@ def test_fmpz_functions():
170170
for func, values in cases:
171171
for n, val in enumerate(values, -1):
172172
if is_exception(val):
173-
raises(lambda: func(n), val)
173+
assert raises(lambda: func(n), val)
174174
else:
175175
assert func(n) == val
176176

177-
raises(lambda: flint.fmpz(1).root(-1), ValueError)
178-
raises(lambda: flint.fmpz(1).jacobi('bad'), TypeError)
177+
assert raises(lambda: flint.fmpz(1).root(-1), ValueError)
178+
assert raises(lambda: flint.fmpz(1).jacobi('bad'), TypeError)
179179

180180
def test_fmpz_poly():
181181
Z = flint.fmpz_poly
@@ -187,6 +187,10 @@ def test_fmpz_poly():
187187
assert Z([1]) == Z([1])
188188
assert Z([1]) == Z([flint.fmpz(1)])
189189
assert Z(Z([1,2])) == Z([1,2])
190+
assert raises(lambda: Z([1,2,[]]), TypeError)
191+
assert raises(lambda: Z({}), TypeError)
192+
# XXX: This should probably be made to work:
193+
assert raises(lambda: Z((1,2,3)), TypeError)
190194
for ztype in [int, long, flint.fmpz]:
191195
assert Z([1,2,3]) + ztype(5) == Z([6,2,3])
192196
assert ztype(5) + Z([1,2,3]) == Z([6,2,3])
@@ -203,14 +207,33 @@ def test_fmpz_poly():
203207
assert Z([1,2,3]) ** ztype(0) == 1
204208
assert Z([1,2,3]) ** ztype(1) == Z([1,2,3])
205209
assert Z([1,2,3]) ** ztype(2) == Z([1,4,10,12,9])
210+
assert divmod(Z([11,6,2]), Z([1,2])) == (Z([2,1]), Z([9,1]))
211+
assert raises(lambda: pow(Z([1,2]), 2, 3), NotImplementedError)
206212
assert +Z([1,2]) == Z([1,2])
207213
assert -Z([1,2]) == Z([-1,-2])
214+
assert raises(lambda: Z([1,2]) + [], TypeError)
215+
assert raises(lambda: Z([1,2]) - [], TypeError)
216+
assert raises(lambda: Z([1,2]) * [], TypeError)
217+
assert raises(lambda: Z([1,2]) / [], TypeError)
218+
assert raises(lambda: Z([1,2]) // [], TypeError)
219+
assert raises(lambda: Z([1,2]) % [], TypeError)
220+
assert raises(lambda: divmod(Z([1,2]), []), TypeError)
221+
assert raises(lambda: [] + Z([1,2]), TypeError)
222+
assert raises(lambda: [] - Z([1,2]), TypeError)
223+
assert raises(lambda: [] * Z([1,2]), TypeError)
224+
assert raises(lambda: [] / Z([1,2]), TypeError)
225+
assert raises(lambda: [] // Z([1,2]), TypeError)
226+
assert raises(lambda: [] % Z([1,2]), TypeError)
227+
assert raises(lambda: divmod([], Z([1,2])), TypeError)
208228
assert raises(lambda: Z([1,2,3]) ** -1, (OverflowError, ValueError))
209229
assert raises(lambda: Z([1,2,3]) ** Z([1,2]), TypeError)
210230
assert raises(lambda: Z([1,2]) // Z([]), ZeroDivisionError)
211231
assert raises(lambda: Z([]) // Z([]), ZeroDivisionError)
212232
assert raises(lambda: Z([1,2]) % Z([]), ZeroDivisionError)
213233
assert raises(lambda: divmod(Z([1,2]), Z([])), ZeroDivisionError)
234+
assert raises(lambda: Z([1,2]) < Z([1,2]), TypeError)
235+
assert raises(lambda: Z([1,2]) < [], TypeError)
236+
assert raises(lambda: [] < Z([1,2]), TypeError)
214237
assert Z([]).degree() == -1
215238
assert Z([]).length() == 0
216239
p = Z([1,2])
@@ -244,6 +267,42 @@ def test_fmpz_poly():
244267
assert p(flint.fmpq_poly([2,3],5)) == flint.fmpq_poly([27,24,9],5)
245268
assert p(flint.arb("1.1")).overlaps(flint.arb("13.45"))
246269
assert p(flint.acb("1.1", "1.2")).overlaps(flint.acb("6.25", "18.00"))
270+
assert raises(lambda: p(None), TypeError)
271+
assert Z([1,2,3]).derivative() == Z([2,6])
272+
assert Z([1,2,-4]).height_bits() == 3
273+
assert Z([1,2,-4]).height_bits(signed=True) == -3
274+
assert Z([1,2,1]).sqrt() == Z([1,1])
275+
assert Z([1,2,2]).sqrt() is None
276+
assert Z([1,0,2,0,3]).deflation() == (Z([1,2,3]), 2)
277+
assert Z([1,1]).deflation() == (Z([1,1]), 1)
278+
279+
def test_fmpz_poly_factor():
280+
Z = flint.fmpz_poly
281+
assert Z([1,2]).gcd(Z([3,4])) == 1
282+
assert Z([1,2,1]).gcd(Z([1,1])) == Z([1,1])
283+
assert raises(lambda: Z([1,2,1]).gcd([]), TypeError)
284+
assert Z([1,2,1]).factor() == (1, [(Z([1,1]), 2)])
285+
286+
def test_fmpz_poly_functions():
287+
Z = flint.fmpz_poly
288+
assert Z.cyclotomic(4) == Z([1,0,1])
289+
assert Z.cos_minpoly(10) == Z([-1,-1,1])
290+
assert Z.chebyshev_u(4) == Z([1,0,-12,0,16])
291+
assert Z.chebyshev_t(4) == Z([1,0,-8,0,8])
292+
assert Z.swinnerton_dyer(2) == Z([1,0,-10,0,1])
293+
assert Z.swinnerton_dyer(2, use_arb=False) == Z([1,0,-10,0,1])
294+
assert raises(lambda: Z.swinnerton_dyer(21), OverflowError)
295+
assert Z.hilbert_class_poly(-7) == Z([3375,1])
296+
assert raises(lambda: Z.hilbert_class_poly(-2), ValueError)
297+
assert Z([1]).is_cyclotomic() == 0
298+
assert Z([-1,1]).is_cyclotomic() == 1
299+
assert Z([1,1]).is_cyclotomic() == 2
300+
assert Z([1,2]).is_cyclotomic() == 0
301+
assert Z([1,2,1]).is_cyclotomic() == 0
302+
assert Z([2,2,1,1]).is_cyclotomic() == 0
303+
assert Z([2,2,1]).is_cyclotomic() == 0
304+
assert Z([1,2,2]).is_cyclotomic() == 0
305+
assert Z([1,1,1]).is_cyclotomic() == 3
247306

248307
def test_fmpz_mat():
249308
M = flint.fmpz_mat
@@ -308,12 +367,12 @@ def test_fmpq():
308367
assert Q(-2,-4) == Q(1,2)
309368
assert Q("1") == Q(1)
310369
assert Q("1/2") == Q(1,2)
311-
raises(lambda: Q("1.0"), ValueError)
312-
raises(lambda: Q("1.5"), ValueError)
313-
raises(lambda: Q("1/2/3"), ValueError)
314-
raises(lambda: Q([]), ValueError)
315-
raises(lambda: Q(1, []), ValueError)
316-
raises(lambda: Q([], 1), ValueError)
370+
assert raises(lambda: Q("1.0"), ValueError)
371+
assert raises(lambda: Q("1.5"), ValueError)
372+
assert raises(lambda: Q("1/2/3"), ValueError)
373+
assert raises(lambda: Q([]), ValueError)
374+
assert raises(lambda: Q(1, []), ValueError)
375+
assert raises(lambda: Q([], 1), ValueError)
317376
assert bool(Q(0)) == False
318377
assert bool(Q(1)) == True
319378
assert Q(1,3) + Q(2,3) == 1
@@ -333,21 +392,21 @@ def test_fmpq():
333392
assert Q(2,3)/5 == Q(2,15)
334393
assert Q(1,2) ** 2 == Q(1,4)
335394
assert Q(1,2) ** -2 == Q(4)
336-
raises(lambda: Q(0) ** -1, ZeroDivisionError)
337-
raises(lambda: Q(1,2) ** Q(1,2), TypeError)
338-
raises(lambda: Q(1,2) ** [], TypeError)
339-
raises(lambda: [] ** Q(1,2), TypeError)
395+
assert raises(lambda: Q(0) ** -1, ZeroDivisionError)
396+
assert raises(lambda: Q(1,2) ** Q(1,2), TypeError)
397+
assert raises(lambda: Q(1,2) ** [], TypeError)
398+
assert raises(lambda: [] ** Q(1,2), TypeError)
340399
# XXX: This should NotImplementedError or something.
341-
raises(lambda: pow(Q(1,2),2,3), AssertionError)
400+
assert raises(lambda: pow(Q(1,2),2,3), AssertionError)
342401

343-
raises(lambda: Q(1,2) + [], TypeError)
344-
raises(lambda: Q(1,2) - [], TypeError)
345-
raises(lambda: Q(1,2) * [], TypeError)
346-
raises(lambda: Q(1,2) / [], TypeError)
347-
raises(lambda: [] + Q(1,2), TypeError)
348-
raises(lambda: [] - Q(1,2), TypeError)
349-
raises(lambda: [] * Q(1,2), TypeError)
350-
raises(lambda: [] / Q(1,2), TypeError)
402+
assert raises(lambda: Q(1,2) + [], TypeError)
403+
assert raises(lambda: Q(1,2) - [], TypeError)
404+
assert raises(lambda: Q(1,2) * [], TypeError)
405+
assert raises(lambda: Q(1,2) / [], TypeError)
406+
assert raises(lambda: [] + Q(1,2), TypeError)
407+
assert raises(lambda: [] - Q(1,2), TypeError)
408+
assert raises(lambda: [] * Q(1,2), TypeError)
409+
assert raises(lambda: [] / Q(1,2), TypeError)
351410
assert (Q(1,2) == 1) is False
352411
assert (Q(1,2) != 1) is True
353412
assert (Q(1,2) < 1) is True
@@ -366,8 +425,8 @@ def test_fmpq():
366425
assert (Q(1,2) <= Q(1,2)) is True
367426
assert (Q(1,2) > Q(1,2)) is False
368427
assert (Q(1,2) >= Q(1,2)) is True
369-
raises(lambda: Q(1,2) > [], TypeError)
370-
raises(lambda: [] < Q(1,2), TypeError)
428+
assert raises(lambda: Q(1,2) > [], TypeError)
429+
assert raises(lambda: [] < Q(1,2), TypeError)
371430
ctx.pretty = False
372431
assert repr(Q(-2,3)) == "fmpq(-2,3)"
373432
assert repr(Q(3)) == "fmpq(3)"
@@ -435,7 +494,7 @@ def test_fmpq():
435494
for func, values in cases:
436495
for n, val in enumerate(values, -1):
437496
if is_exception(val):
438-
raises(lambda: func(n), val)
497+
assert raises(lambda: func(n), val)
439498
else:
440499
assert func(n) == val
441500

0 commit comments

Comments
 (0)