Files
rsa/test/test_primality_test.py
T
2026-06-24 16:33:39 +02:00

71 lines
3.5 KiB
Python

import sys
import unittest
import random
sys.path.append('../')
from functions import primality_test
class TestPrimalityTest(unittest.TestCase):
def test_prime_number(self):
self.assertTrue(primality_test(5), msg='5 is a prime number.')
self.assertTrue(primality_test(7), msg='7 is a prime number.')
self.assertTrue(primality_test(29), msg='29 is a prime number.')
self.assertTrue(primality_test(34841), msg='34841 is a prime number.')
self.assertTrue(primality_test(8328989), msg='8328989 is a prime number.')
large_prime = (2**32 + 1) // 641
self.assertTrue(primality_test(large_prime), msg=f'{large_prime} is a prime number.')
large_prime = (10**18 + 1) // 1000001
self.assertTrue(primality_test(large_prime), msg=f'{large_prime} is a prime number.')
large_prime = 170141183460469231731687303715884105727
self.assertTrue(primality_test(large_prime), msg=f'{large_prime} is a prime number.')
large_prime = 180 * large_prime**2 + 1
self.assertTrue(primality_test(large_prime), msg=f'{large_prime} is a prime number.')
large_prime = 531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127
self.assertTrue(primality_test(large_prime), msg=f'{large_prime} is a prime number.')
def test_non_prime_number(self):
self.assertFalse(primality_test(4), msg='4 is not a prime number.')
self.assertFalse(primality_test(6), msg='6 is not a prime number.')
self.assertFalse(primality_test(8), msg='8 is not a prime number.')
self.assertFalse(primality_test(17650839), msg='17650839 is not a prime number.')
large_non_prime = 6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151 + 1
self.assertFalse(primality_test(large_non_prime), msg=f'{large_non_prime} is not a prime number.')
large_prime = (2**64 + 1) // 274177
large_prime_2 = (2 * 32 + 1) // 641
large_non_prime = large_prime * large_prime_2
self.assertFalse(primality_test(large_non_prime), msg=f'{large_non_prime} is not a prime number.')
large_non_prime = large_prime * random.randint(1, 10**1000)
self.assertFalse(primality_test(large_non_prime), msg=f'{large_non_prime} is not a prime number.')
large_non_prime = large_prime_2 * random.randint(1, 7**750)
self.assertFalse(primality_test(large_non_prime), msg=f'{large_non_prime} is not a prime number.')
large_non_prime = random.randint(1, 10**1000) * random.randint(1, 10**1000)
self.assertFalse(primality_test(large_non_prime), msg=f'{large_non_prime} is not a prime number.')
large_prime = 531137992816767098689588206552468627329593117727031923199444138200403559860852242739162502265229285668889329486246501015346579337652707239409519978766587351943831270835393219031728127
large_prime_2 = (2**64 + 1) // 274177
large_non_prime = large_prime * large_prime_2
self.assertFalse(primality_test(large_non_prime), msg=f'{large_non_prime} is not a prime number.')
def test_edge_cases(self):
self.assertFalse(primality_test(0), msg='0 is not a prime number.')
self.assertFalse(primality_test(1), msg='1 is not a prime number.')
self.assertTrue(primality_test(2), msg='2 is a prime number.')
self.assertTrue(primality_test(3), msg='3 is a prime number.')
self.assertTrue(primality_test(5), msg='5 is a prime number.')
if __name__ == '__main__':
unittest.main()