Skip to content

Commit a3c0f61

Browse files
committed
add tests for fmpz_mat
1 parent 44a1e90 commit a3c0f61

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

test/test.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,13 @@ def test_fmpz_mat():
358358
assert a.entries() == [1,2,3,4,5,6]
359359
assert a.table() == [[1,2,3],[4,5,6]]
360360
assert (a + b).entries() == [5,7,9,11,13,15]
361+
assert (a - b).entries() == [-3,-3,-3,-3,-3,-3]
362+
assert a.transpose() == M(3,2,[1,4,2,5,3,6])
363+
assert raises(lambda: a + 1, TypeError)
364+
assert raises(lambda: 1 + a, TypeError)
365+
assert raises(lambda: a - 1, TypeError)
366+
assert raises(lambda: 1 - a, TypeError)
367+
# XXX: Maybe there should be a ShapeError or something?
361368
assert raises(a.det, ValueError)
362369
assert +a == a
363370
assert -a == M(2,3,[-1,-2,-3,-4,-5,-6])
@@ -374,7 +381,11 @@ def test_fmpz_mat():
374381
A = M.randbits(5,3,2)
375382
B = M.randtest(3,7,3)
376383
C = M.randtest(7,2,4)
384+
assert (A.nrows(),A.ncols()) == (5,3)
385+
assert (B.nrows(),B.ncols()) == (3,7)
386+
assert (C.nrows(),C.ncols()) == (7,2)
377387
assert A*(B*C) == (A*B)*C
388+
assert raises(lambda: A*C, ValueError)
378389
assert bool(M(2,2,[0,0,0,0])) == False
379390
assert bool(M(2,2,[0,0,0,1])) == True
380391
ctx.pretty = False
@@ -389,12 +400,57 @@ def test_fmpz_mat():
389400
assert raises(lambda: M.randrank(4,3,4,1), ValueError)
390401
assert raises(lambda: M.randrank(3,4,4,1), ValueError)
391402
assert M(1,1,[3]) ** 5 == M(1,1,[3**5])
403+
assert raises(lambda: pow(M([[1]]), 2, 3), NotImplementedError)
392404
assert raises(lambda: M(1,2) ** 3, ValueError)
393405
assert raises(lambda: M(1,1) ** M(1,1), TypeError)
394406
assert raises(lambda: 1 ** M(1,1), TypeError)
395407
assert raises(lambda: M([1]), TypeError)
396408
assert raises(lambda: M([[1],[2,3]]), ValueError)
409+
assert raises(lambda: M(None), TypeError)
410+
assert raises(lambda: M(2,2,[1,2,3]), ValueError)
411+
assert raises(lambda: M(2,2,2,2), ValueError)
397412
assert M([[1,2,3],[4,5,6]]) == M(2,3,[1,2,3,4,5,6])
413+
assert raises(lambda: M([[1]]) < M([[2]]), TypeError)
414+
assert (M([[1]]) == 1) is False
415+
assert (1 == M([[1]])) is False
416+
assert (M([[1]]) != 1) is True
417+
assert (1 != M([[1]])) is True
418+
D = M([[1,2],[3,4]])
419+
assert (D[0,0],D[0,1],D[1,0],D[1,1]) == (1,2,3,4)
420+
D[0,0] = 3
421+
assert D == M([[3,2],[3,4]])
422+
def set_bad(i,j):
423+
D[i,j] = -1
424+
# XXX: Should be IndexError
425+
raises(lambda: set_bad(2,0), ValueError)
426+
raises(lambda: set_bad(0,2), ValueError)
427+
raises(lambda: D[0,2], ValueError)
428+
raises(lambda: D[0,2], ValueError)
429+
# XXX: Negative indices?
430+
raises(lambda: set_bad(-1,0), ValueError)
431+
raises(lambda: set_bad(0,-1), ValueError)
432+
raises(lambda: D[-1,0], ValueError)
433+
raises(lambda: D[0,-1], ValueError)
434+
assert M.hadamard(2) == M([[1,1],[1,-1]])
435+
assert raises(lambda: M.hadamard(3), ValueError)
436+
assert M.hadamard(2).is_hadamard() is True
437+
assert M([[1,2],[3,4]]).is_hadamard() is False
438+
M1 = M([[1,0],[1,1]])
439+
M2 = M([[1,0],[-1,1]])
440+
x = M([[3],[4]])
441+
b = M([[3],[7]])
442+
assert M1.inv() == M2
443+
assert M2.inv() == M1
444+
assert M1.inv(integer=True) == M2
445+
assert M2.inv(integer=True) == M1
446+
assert M1*x == b
447+
assert M1.solve(b) == x
448+
assert M1.solve(b, integer=True) == x
449+
assert raises(lambda: M([[1,2,3],[4,5,6]]).inv(), ValueError)
450+
assert raises(lambda: M([[1,1],[1,1]]).inv(), ZeroDivisionError)
451+
assert raises(lambda: M([[1,0],[1,2]]).inv(integer=True), ValueError)
452+
half = flint.fmpq(1,2)
453+
assert M([[1,0],[1,2]]).inv() == flint.fmpq_mat([[1, 0], [-half, half]])
398454

399455
def test_fmpq():
400456
Q = flint.fmpq

0 commit comments

Comments
 (0)