import random import unittest from algorithms.factorization.pollard_rho import pollard_rho from algorithms.factorization.trial_division import trial_division from algorithms.factorization.fermat import fermat class TestFermat(unittest.TestCase): def test_fermat(self): x = random.randint(1, 100000000) factors = fermat(x) res = 1 for i in factors: res *= i self.assertEqual(x, res) class TestPollardRho(unittest.TestCase): def test_pollard_rho(self): x = random.randint(1, 100000000000) factors = pollard_rho(x) res = 1 for j in factors: res *= j self.assertEqual(x, res) def test_pollard_rho_x_is_zero(self): x = 0 factors = pollard_rho(x) res = 1 for j in factors: res *= j self.assertEqual(x, res) class TestTrialDivision(unittest.TestCase): def test_trial_division(self): x = random.randint(0, 10000000000) factors = trial_division(x) res = 1 for i in factors: res *= i self.assertEqual(x, res)