forked from jcokimlen/tx4877
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcoreTest.py
More file actions
executable file
·78 lines (58 loc) · 2.13 KB
/
coreTest.py
File metadata and controls
executable file
·78 lines (58 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from random import randrange, randint
from math import log
from fractions import gcd
import unittest
#instanciation du core
from core import Core
c = Core()
class SquarePow_Test(unittest.TestCase):
def test_RandomValue(self):
"""
Comparaison des résultats de square_pow et la fonction pow()
"""
base = randint(2, 50)
exp = randint(50, 100)
mod = randint(10, 50)
self.assertEqual(pow(base, exp, mod), c.square_pow(base, exp, mod))
class MillerRabin_Test(unittest.TestCase):
"""
!!! Le test de RabinMiller étant probabilistique, ces tests peuvent échouer occasionellement!!!
"""
def test_PrimeCount(self):
"""
Compte les nombres premiers sur l'intervalle [1024,2047]
Résultat = 137
"""
counter = 0
for a in range(1024, 2048):
if c.miller_rabin(a) :
counter += 1
self.assertEqual(counter, 137)
def test_PrimeValues(self):
"""
Teste l'algorithme sur un ensemble de valeurs arbitraires connues comme premières
src= http://fr.wikipedia.org/wiki/Nombre_premier
"""
set = [13, 131071, 524287, 2147483647, 3203431780337,
170141183460469231731687303715884105727,
20988936657440586486151264256610222593863921]
for a in set :
self.assertTrue(c.miller_rabin(a))
def test_NotPrimeValues(self):
"""
Teste l'algorithme sur un ensemble de valeurs arbitraires connues comme non premières
"""
set = [4294967297, 123456789101112]
for a in set :
self.assertFalse(c.miller_rabin(a))
class Primes_Test(unittest.TestCase):
def test_PrimeCount(self):
"""
Teste le nombre de nb premiers inférieurs à 100, puis 1000
"""
self.assertEqual(len(c.primes(100)), 25)
self.assertEqual(len(c.primes(1000)), 168) # 0.025s à l'exécution....
if __name__ == "__main__":
unittest.main(verbosity=2)