Skip to content

Commit 2e4ca94

Browse files
committed
add tests for fmpq_poly
1 parent 3751121 commit 2e4ca94

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

test/test.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,11 @@ def test_fmpq_poly():
506506
assert Q() == Q([]) == Q([0]) == Q([0,0])
507507
assert Q() != Q([1])
508508
assert Q([1]) == Q([1])
509+
assert Q([1], 2) == Q([flint.fmpq(1,2)])
510+
raises(lambda: Q([1,[]]), TypeError)
511+
raises(lambda: Q({}), TypeError)
512+
raises(lambda: Q([1], []), TypeError)
513+
raises(lambda: Q([1], 0), ZeroDivisionError)
509514
assert bool(Q()) == False
510515
assert bool(Q([1])) == True
511516
assert Q(Q([1,2])) == Q([1,2])
@@ -514,12 +519,34 @@ def test_fmpq_poly():
514519
assert 3 + Q([1,2]) == Q([4,2])
515520
assert Q([1,2]) - 3 == Q([-2,2])
516521
assert 3 - Q([1,2]) == Q([2,-2])
522+
assert raises(lambda: Q([1]) + [], TypeError)
523+
assert raises(lambda: [] + Q([1]), TypeError)
524+
assert raises(lambda: Q([1]) - [], TypeError)
525+
assert raises(lambda: [] - Q([1]), TypeError)
526+
assert raises(lambda: Q([1]) * [], TypeError)
527+
assert raises(lambda: [] * Q([1]), TypeError)
528+
assert Q([1,2,1]) // Q([1,1]) == Q([1,1])
529+
assert Q([1,2,1]) % Q([1,1]) == 0
530+
assert divmod(Q([1,2,1]), Q([1,1])) == (Q([1,1]), 0)
531+
assert raises(lambda: Q([1,2,1]) // [], TypeError)
532+
assert raises(lambda: [] // Q([1,2,1]), TypeError)
533+
assert raises(lambda: Q([1,2,1]) % [], TypeError)
534+
assert raises(lambda: [] % Q([1,2,1]), TypeError)
535+
assert raises(lambda: divmod(Q([1,2,1]), []), TypeError)
536+
assert raises(lambda: divmod([], Q([1,2,1])), TypeError)
537+
assert raises(lambda: Q([1,2,1]) / 0, ZeroDivisionError)
538+
assert raises(lambda: Q([1,2,1]) // 0, ZeroDivisionError)
539+
assert raises(lambda: Q([1,2,1]) % 0, ZeroDivisionError)
540+
assert raises(lambda: divmod(Q([1,2,1]), 0), ZeroDivisionError)
541+
assert +Q([1,2]) == Q([1,2])
517542
assert -Q([1,2]) == Q([-1,-2])
518543
assert Q([flint.fmpq(1,2),1]) * 2 == Q([1,2])
519544
assert Q([1,2]) == Z([1,2])
520545
assert Z([1,2]) == Q([1,2])
521546
assert Q([1,2]) != Z([3,2])
522547
assert Z([1,2]) != Q([3,2])
548+
assert Q([1,2]) != []
549+
assert raises(lambda: Q([1,2]) < Q([1,2]), TypeError)
523550
assert Q([1,2,3])*Q([1,2]) == Q([1,4,7,6])
524551
assert Q([1,2,3])*Z([1,2]) == Q([1,4,7,6])
525552
assert Q([1,2,3]) * 3 == Q([3,6,9])
@@ -529,6 +556,7 @@ def test_fmpq_poly():
529556
assert raises(lambda: Q([1,2]) / Q([1,2]), TypeError)
530557
assert Q([1,2,3]) / flint.fmpq(2,3) == Q([1,2,3]) * flint.fmpq(3,2)
531558
assert Q([1,2,3]) ** 2 == Q([1,2,3]) * Q([1,2,3])
559+
assert raises(lambda: pow(Q([1,2]), 3, 5), NotImplementedError)
532560
assert Q([1,2,flint.fmpq(1,2)]).coeffs() == [1,2,flint.fmpq(1,2)]
533561
assert Q().coeffs() == []
534562
assert Q().degree() == -1
@@ -540,18 +568,34 @@ def test_fmpq_poly():
540568
assert (Q([1,2,3]) / 5).numer() == (Q([1,2,3]) / 5).p == Z([1,2,3])
541569
assert (Q([1,2,3]) / 5).denom() == (Q([1,2,3]) / 5).q == 5
542570
ctx.pretty = False
571+
assert repr(Q([15,20,10])) == "fmpq_poly([15, 20, 10])"
543572
assert repr(Q([15,20,10]) / 25) == "fmpq_poly([3, 4, 2], 5)"
544573
ctx.pretty = True
545574
assert str(Q([3,4,2],5)) == "2/5*x^2 + 4/5*x + 3/5"
546575
a = Q([2,2,3],4)
547576
assert a[2] == flint.fmpq(3,4)
577+
assert a[-1] == flint.fmpq(0)
548578
a[2] = 4
579+
def set_bad():
580+
a[-1] = 2
581+
raises(set_bad, ValueError)
549582
assert a == Q([1,1,8],2)
550583
p = Q([3,4,5],7)
551584
assert p(2) == flint.fmpq(31,7)
552585
assert p(flint.fmpq(2,3)) == flint.fmpq(71,63)
553586
assert p(Z([1,-1])) == Q([12,-14,5],7)
554587
assert p(flint.fmpq_poly([2,3],5)) == flint.fmpq_poly([27,24,9],7*5)
588+
assert raises(lambda: p([]), TypeError)
589+
assert Q([1,2,3]).derivative() == Q([2,6])
590+
assert Q([1,2,3]).integral() == Q([0,1,1,1])
591+
assert Q([1,2,1]).gcd(Q([1,1])) == Q([1,1])
592+
assert Q([1,2,1]).xgcd(Q([1,1])) == (Q([1,1]), 0, 1)
593+
assert raises(lambda: Q([1,2,1]).gcd([]), TypeError)
594+
assert raises(lambda: Q([1,2,1]).xgcd([]), TypeError)
595+
assert Q([1,2,1]).factor() == (1, [(Q([1,1]), 2)])
596+
assert Q.bernoulli_poly(3) == Q([0,1,-3,2],2)
597+
assert Q.euler_poly(3) == Q([1,0,-6,4],4)
598+
assert Q.legendre_p(3) == Q([0,-3,0,5],2)
555599

556600
def test_fmpq_mat():
557601
Q = flint.fmpq_mat

0 commit comments

Comments
 (0)