@@ -45,13 +45,15 @@ def testPrimesUpTo1000000(self):
45
45
46
46
def testPrimesUpTo1000WithLesserPassIn (self ):
47
47
for i in range (1000 ):
48
- lower_primes = primes_up_to (random .randint (0 , i ))
49
- self .assertEqual (primes_up_to (i ), primes_up_to (i , lower_primes ))
48
+ with self .subTest (i = i ):
49
+ lower_primes = primes_up_to (random .randint (0 , i ))
50
+ self .assertEqual (primes_up_to (i ), primes_up_to (i , lower_primes ))
50
51
51
52
def testPrimesUpTo1000WithGreaterPassIn (self ):
52
53
for i in range (1000 ):
53
- greater_primes = primes_up_to (random .randint (i , 2 * i ))
54
- self .assertEqual (primes_up_to (i ), primes_up_to (i , greater_primes ))
54
+ with self .subTest (i = i ):
55
+ greater_primes = primes_up_to (random .randint (i , 2 * i ))
56
+ self .assertEqual (primes_up_to (i ), primes_up_to (i , greater_primes ))
55
57
56
58
class TestIsPrime (unittest .TestCase ):
57
59
def setUp (self ):
@@ -108,20 +110,22 @@ def setUp(self):
108
110
109
111
def testIsPrime (self ):
110
112
for prime in self .primes :
111
- self .assertTrue (is_prime (prime ), prime )
112
- self .assertTrue (is_prime (prime , []), prime )
113
- self .assertTrue (is_prime (prime , [2 , 3 , 5 ]), prime )
114
- self .assertTrue (is_prime (prime , self .primes [:random .randint (0 , len (self .primes )- 1 )]), prime )
115
- self .assertTrue (is_prime (prime , list_up_to (self .primes , int (1.2 * prime ))), prime )
116
- self .assertTrue (is_prime (prime , list_up_to (self .primes , int (sqrt (int (1.2 * prime ))))), prime )
113
+ with self .subTest (prime = prime ):
114
+ self .assertTrue (is_prime (prime ), prime )
115
+ self .assertTrue (is_prime (prime , []), prime )
116
+ self .assertTrue (is_prime (prime , [2 , 3 , 5 ]), prime )
117
+ self .assertTrue (is_prime (prime , self .primes [:random .randint (0 , len (self .primes )- 1 )]), prime )
118
+ self .assertTrue (is_prime (prime , list_up_to (self .primes , int (1.2 * prime ))), prime )
119
+ self .assertTrue (is_prime (prime , list_up_to (self .primes , int (sqrt (int (1.2 * prime ))))), prime )
117
120
118
121
for composite in self .composites :
119
- self .assertFalse (is_prime (composite ), composite )
120
- self .assertFalse (is_prime (composite , []), composite )
121
- self .assertFalse (is_prime (composite , [2 , 3 , 5 ]), composite )
122
- self .assertFalse (is_prime (composite , self .primes [:random .randint (0 , len (self .primes )- 1 )]), composite )
123
- self .assertFalse (is_prime (composite , list_up_to (self .primes , int (1.2 * prime ))), composite )
124
- self .assertFalse (is_prime (composite , list_up_to (self .primes , int (sqrt (int (1.2 * prime ))))), composite )
122
+ with self .subTest (composite = composite ):
123
+ self .assertFalse (is_prime (composite ), composite )
124
+ self .assertFalse (is_prime (composite , []), composite )
125
+ self .assertFalse (is_prime (composite , [2 , 3 , 5 ]), composite )
126
+ self .assertFalse (is_prime (composite , self .primes [:random .randint (0 , len (self .primes )- 1 )]), composite )
127
+ self .assertFalse (is_prime (composite , list_up_to (self .primes , int (1.2 * prime ))), composite )
128
+ self .assertFalse (is_prime (composite , list_up_to (self .primes , int (sqrt (int (1.2 * prime ))))), composite )
125
129
126
130
class TestNPrimes (unittest .TestCase ):
127
131
def testNPrimes0 (self ):
@@ -141,46 +145,51 @@ def testNPrimes100(self):
141
145
142
146
def testNPrimes500 (self ):
143
147
for i in range (500 ):
144
- p = primes_up_to (i )
145
- self .assertEqual (n_primes (len (p )), p )
148
+ with self .subTest (i = i ):
149
+ p = primes_up_to (i )
150
+ self .assertEqual (n_primes (len (p )), p )
146
151
147
152
def testNPrimes1000 (self ):
148
153
for i in range (1000 ):
149
- self .assertEqual (len (n_primes (i )), i )
154
+ with self .subTest (i = i ):
155
+ self .assertEqual (len (n_primes (i )), i )
150
156
151
157
def testNPrimes10000 (self ):
152
158
for i in range (10000 , 10050 ):
153
- self .assertEqual (len (n_primes (i )), i )
159
+ with self .subTest (i = i ):
160
+ self .assertEqual (len (n_primes (i )), i )
154
161
155
162
def testNPrimes16000 (self ):
156
163
for i in range (16000 , 16005 ):
157
- self .assertEqual (len (n_primes (i )), i )
164
+ with self .subTest (i = i ):
165
+ self .assertEqual (len (n_primes (i )), i )
158
166
159
167
def testNPrimes40000 (self ):
160
168
for i in range (40000 , 40005 ):
161
- self .assertEqual (len (n_primes (i )), i )
169
+ with self .subTest (i = i ):
170
+ self .assertEqual (len (n_primes (i )), i )
162
171
163
172
def testNPrimes180000 (self ):
164
173
for i in range (180000 , 180005 ):
165
- self .assertEqual (len (n_primes (i )), i )
174
+ with self .subTest (i = i ):
175
+ self .assertEqual (len (n_primes (i )), i )
166
176
167
177
def testNPrimes700000 (self ):
168
178
for i in range (700000 , 700005 ):
169
- self .assertEqual (len (n_primes (i )), i )
179
+ with self .subTest (i = i ):
180
+ self .assertEqual (len (n_primes (i )), i )
170
181
171
182
def testNPrimes8010000 (self ):
172
183
for i in range (8010000 , 8010002 ):
173
- self .assertEqual (len (n_primes (i )), i )
174
-
175
- #def testNPrimes470000000(self):
176
- # for i in range(470000000, 470000002):
177
- # self.assertEqual(len(n_primes(i)), i)
184
+ with self .subTest (i = i ):
185
+ self .assertEqual (len (n_primes (i )), i )
178
186
179
187
class TestNthPrime (unittest .TestCase ):
180
188
def testNthPrime1000 (self ):
181
189
known_primes = primes_up_to (1000 )
182
190
for i in range (1 , len (known_primes )):
183
- self .assertEqual (nth_prime (i ), known_primes [i - 1 ])
191
+ with self .subTest (i = i ):
192
+ self .assertEqual (nth_prime (i ), known_primes [i - 1 ])
184
193
185
194
class TestCompositesUpTo (unittest .TestCase ):
186
195
def testCompositesUpTo0 (self ):
@@ -208,7 +217,8 @@ class TestNextPrime(unittest.TestCase):
208
217
def testNextPrime10000 (self ):
209
218
known_primes = primes_up_to (10000 )
210
219
for i in range (len (known_primes )):
211
- self .assertEqual (next_prime (known_primes [:i ]), known_primes [i ])
220
+ with self .subTest (i = i ):
221
+ self .assertEqual (next_prime (known_primes [:i ]), known_primes [i ])
212
222
213
223
class TestTwinPrimesUpTo (unittest .TestCase ):
214
224
def testTwinPrimesUpTo4 (self ):
@@ -242,7 +252,8 @@ def testTwinPrimesWithPassIn(self):
242
252
upto = 500
243
253
p = primes_up_to (upto )
244
254
for i in range (upto ):
245
- self .assertEqual (list (twin_primes_up_to (i )), list (twin_primes_up_to (i , p [:random .randint (0 , upto )])))
255
+ with self .subTest (i = i ):
256
+ self .assertEqual (list (twin_primes_up_to (i )), list (twin_primes_up_to (i , p [:random .randint (0 , upto )])))
246
257
247
258
class TestCousinPrimesUpTo (unittest .TestCase ):
248
259
def testCousinPrimesUpTo6 (self ):
@@ -267,7 +278,8 @@ def testCousinPrimesWithPassIn(self):
267
278
upto = 500
268
279
p = primes_up_to (upto )
269
280
for i in range (upto ):
270
- self .assertEqual (list (cousin_primes_up_to (i )), list (cousin_primes_up_to (i , p [:random .randint (0 , upto )])))
281
+ with self .subTest (i = i ):
282
+ self .assertEqual (list (cousin_primes_up_to (i )), list (cousin_primes_up_to (i , p [:random .randint (0 , upto )])))
271
283
272
284
class TestSexyPrimesUpTo (unittest .TestCase ):
273
285
def testSexyPrimesUpTo10 (self ):
@@ -289,7 +301,8 @@ def testSexyPrimesWithPassIn(self):
289
301
upto = 500
290
302
p = primes_up_to (upto )
291
303
for i in range (upto ):
292
- self .assertEqual (list (sexy_primes_up_to (i )), list (sexy_primes_up_to (i , p [:random .randint (0 , upto )])))
304
+ with self .subTest (i = i ):
305
+ self .assertEqual (list (sexy_primes_up_to (i )), list (sexy_primes_up_to (i , p [:random .randint (0 , upto )])))
293
306
294
307
class TestPrimeTripletsUpTo (unittest .TestCase ):
295
308
def testPrimeTripletsUpTo10 (self ):
@@ -311,7 +324,8 @@ def testPrimeTripletsWithPassIn(self):
311
324
upto = 500
312
325
p = primes_up_to (upto )
313
326
for i in range (upto ):
314
- self .assertEqual (list (prime_triplets_up_to (i )), list (prime_triplets_up_to (i , p [:random .randint (0 , upto )])))
327
+ with self .subTest (i = i ):
328
+ self .assertEqual (list (prime_triplets_up_to (i )), list (prime_triplets_up_to (i , p [:random .randint (0 , upto )])))
315
329
316
330
class TestPrimeQuadrupletsUpTo (unittest .TestCase ):
317
331
def testPrimeQuadrupletsUpTo12 (self ):
@@ -333,7 +347,8 @@ def testPrimeQuadrupletsWithPassIn(self):
333
347
upto = 500
334
348
p = primes_up_to (upto )
335
349
for i in range (upto ):
336
- self .assertEqual (list (prime_quadruplets_up_to (i )), list (prime_quadruplets_up_to (i , p [:random .randint (0 , upto )])))
350
+ with self .subTest (i = i ):
351
+ self .assertEqual (list (prime_quadruplets_up_to (i )), list (prime_quadruplets_up_to (i , p [:random .randint (0 , upto )])))
337
352
338
353
class TestPrimeGapsUpTo (unittest .TestCase ):
339
354
def testPrimeGaps0 (self ):
@@ -370,21 +385,25 @@ def testMembershipSanity(self):
370
385
371
386
def testMembership10000 (self ):
372
387
p = primes_up_to (10000 )
373
- for pr in p :
374
- self .assertTrue (pr in self .primes )
388
+ for prime in p :
389
+ with self .subTest (prime = prime ):
390
+ self .assertTrue (prime in self .primes )
375
391
376
392
c = composites_up_to (10000 , p )
377
- for co in c :
378
- self .assertFalse (co in self .primes )
393
+ for composite in c :
394
+ with self .subTest (composite = composite ):
395
+ self .assertFalse (composite in self .primes )
379
396
380
397
def testMembership15000 (self ):
381
398
p = primes_up_to (15000 )
382
- for pr in p [::- 1 ]:
383
- self .assertTrue (pr in self .primes )
399
+ for prime in p [::- 1 ]:
400
+ with self .subTest (prime = prime ):
401
+ self .assertTrue (prime in self .primes )
384
402
385
403
c = composites_up_to (15000 , p )
386
- for co in c [::- 1 ]:
387
- self .assertFalse (co in self .primes )
404
+ for composite in c [::- 1 ]:
405
+ with self .subTest (composite = composite ):
406
+ self .assertFalse (composite in self .primes )
388
407
389
408
def testIndexingSanity (self ):
390
409
self .assertEqual (self .primes [0 ], 2 )
@@ -398,8 +417,9 @@ def testIndexingSanity(self):
398
417
399
418
def testIndexing1000 (self ):
400
419
p = n_primes (1000 )
401
- for i , pr in enumerate (p ):
402
- self .assertEqual (self .primes [i ], pr )
420
+ for i , prime in enumerate (p ):
421
+ with self .subTest (i = i , prime = prime ):
422
+ self .assertEqual (self .primes [i ], prime )
403
423
404
424
def testSlicing (self ):
405
425
self .assertRaises (TypeError , lambda p : p [1 ,2 ,3 ], self .primes )
@@ -500,7 +520,8 @@ def testIteration(self):
500
520
self .assertEqual (n_primes (1000 ), [prime for prime in self .primes ])
501
521
502
522
for prime in self .primes :
503
- self .assertTrue (is_prime (prime ))
523
+ with self .subTest (prime = prime ):
524
+ self .assertTrue (is_prime (prime ))
504
525
505
526
def testEquality (self ):
506
527
otherprimes = Primes ()
@@ -540,7 +561,8 @@ def testIndex(self):
540
561
class TestSieves (unittest .TestCase ):
541
562
def testSieves (self ):
542
563
for i in range (1000 ):
543
- self .assertEqual (sieve_of_eratosthenes (i ), sieve_of_atkin (i ))
564
+ with self .subTest (i = i ):
565
+ self .assertEqual (sieve_of_eratosthenes (i ), sieve_of_atkin (i ))
544
566
545
567
for _ in range (100 ):
546
568
r = random .randint (1001 , 500000 )
@@ -549,12 +571,14 @@ def testSieves(self):
549
571
class TestPrimeFactorisation (unittest .TestCase ):
550
572
def testPrimes (self ):
551
573
for p in primes_up_to (100000 ):
552
- self .assertEqual (factorise (p , include_trivial = False ), set ())
553
- self .assertEqual (factorise (p , include_trivial = True ), set ([1 , p ]))
574
+ with self .subTest (p = p ):
575
+ self .assertEqual (factorise (p , include_trivial = False ), set ())
576
+ self .assertEqual (factorise (p , include_trivial = True ), set ([1 , p ]))
554
577
555
578
def testPrimesPerfectSquares (self ):
556
579
for p in primes_up_to (100 ):
557
- self .assertEqual (factorise (p * p ), set ([p ]))
580
+ with self .subTest (p = p ):
581
+ self .assertEqual (factorise (p * p ), set ([p ]))
558
582
559
583
class TestSemiprimeFactorisation (unittest .TestCase ):
560
584
def test15 (self ):
@@ -578,7 +602,8 @@ def testComprehensive(self):
578
602
primes = primes_up_to (500000 )
579
603
random .shuffle (primes )
580
604
for p , q in zip (primes [:1000 ], primes [1 :]):
581
- self .assertEqual (factorise (p * q ), set ([p , q ]))
605
+ with self .subTest (p = p , q = q ):
606
+ self .assertEqual (factorise (p * q ), set ([p , q ]))
582
607
583
608
class TestCompositeFactorisation (unittest .TestCase ):
584
609
def testComposites (self ):
@@ -592,8 +617,9 @@ def testComposites(self):
592
617
class TestFactorisationWithPrimes (unittest .TestCase ):
593
618
def testFactorisation (self ):
594
619
for i in range (2 , 10000 ):
595
- primes = primes_up_to (random .randint (2 , 150 ))
596
- self .assertEqual (factorise (i ), factorise (i , primes = primes ))
620
+ with self .subTest (i = i ):
621
+ primes = primes_up_to (random .randint (2 , 150 ))
622
+ self .assertEqual (factorise (i ), factorise (i , primes = primes ))
597
623
598
624
if __name__ == '__main__' :
599
625
unittest .main ()
0 commit comments