def test_eye(self): """ Единичная матрица """ path = os.path.dirname(os.path.realpath(__file__)) solver = DiophantineEquations(path + TEST_DIR + r"\test_eye.txt") res = solver.diophantine_equation_solver() self.assertEqual(res, [[1]], "Кейс с единичной матрицей некорректный!")
def test_rectangular_many_solution(self): """ Прямоугольная матрица, решений множество """ path = os.path.dirname(os.path.realpath(__file__)) solver = DiophantineEquations(path + TEST_DIR + r"\test_rectangular_many_solution") res = solver.diophantine_equation_solver() assert_array_equal(res, np.array([[488, -20], [-364, 15], [-682, 28]]), "Кейс с прямоугольной матрицей(т) некорректный!")
def test_squaere_many_solutions(self): """ Квадратная вырожденная матрица, решений множество """ path = os.path.dirname(os.path.realpath(__file__)) solver = DiophantineEquations(path + TEST_DIR + r"\test_squaere_many_solutions") res = solver.diophantine_equation_solver() assert_array_equal( res, np.array([[0], [0]]), "Кейс с квадратичной невырожденной матрицей(n) некорректный!")
def test_square_one_solution(self): """ Квадратная невырожденная матрица, решение единственное """ path = os.path.dirname(os.path.realpath(__file__)) solver = DiophantineEquations(path + TEST_DIR + r"\test_square_only_one") res = solver.diophantine_equation_solver() assert_array_equal( res, np.array([[1], [1]]), "Кейс с квадратичной невырожденной матрицей(1) некорректный!")
def test_square_no_solution_integer(self): """ Квадратная невырожденная матрица, решений в целых числах нет """ path = os.path.dirname(os.path.realpath(__file__)) solver = DiophantineEquations(path + TEST_DIR + r"\test_square_no_solution_integer") self.assertRaises(ValueError, solver.diophantine_equation_solver)
def test_rectangular_no_solution(self): """ Прямоугольная матрица, решений нет """ path = os.path.dirname(os.path.realpath(__file__)) solver = DiophantineEquations(path + TEST_DIR + r"\test_rectangular_no_solution") self.assertRaises(ValueError, solver.diophantine_equation_solver)
import numpy as np import sys from diophantine import DiophantineEquations test = np.array([[2, 1, 0, -3], [-2, 0, 1, -3], [0, 1, 1, 6]]) if __name__ == "__main__": try: if len(sys.argv) == 2: solver = DiophantineEquations(sys.argv[1]) else: solver = DiophantineEquations() res = solver.diophantine_equation_solver() solver.print_and_write_result(res, flag='file') except ValueError as e: with open("output.txt", "w") as f: f.write("No solution")