Skip to content

Commit 64b3af4

Browse files
authored
Use subTest (#45)
1 parent 1306362 commit 64b3af4

File tree

1 file changed

+80
-54
lines changed

1 file changed

+80
-54
lines changed

test.py

Lines changed: 80 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ def testPrimesUpTo1000000(self):
4545

4646
def testPrimesUpTo1000WithLesserPassIn(self):
4747
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))
5051

5152
def testPrimesUpTo1000WithGreaterPassIn(self):
5253
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))
5557

5658
class TestIsPrime(unittest.TestCase):
5759
def setUp(self):
@@ -108,20 +110,22 @@ def setUp(self):
108110

109111
def testIsPrime(self):
110112
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)
117120

118121
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)
125129

126130
class TestNPrimes(unittest.TestCase):
127131
def testNPrimes0(self):
@@ -141,46 +145,51 @@ def testNPrimes100(self):
141145

142146
def testNPrimes500(self):
143147
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)
146151

147152
def testNPrimes1000(self):
148153
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)
150156

151157
def testNPrimes10000(self):
152158
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)
154161

155162
def testNPrimes16000(self):
156163
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)
158166

159167
def testNPrimes40000(self):
160168
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)
162171

163172
def testNPrimes180000(self):
164173
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)
166176

167177
def testNPrimes700000(self):
168178
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)
170181

171182
def testNPrimes8010000(self):
172183
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)
178186

179187
class TestNthPrime(unittest.TestCase):
180188
def testNthPrime1000(self):
181189
known_primes = primes_up_to(1000)
182190
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])
184193

185194
class TestCompositesUpTo(unittest.TestCase):
186195
def testCompositesUpTo0(self):
@@ -208,7 +217,8 @@ class TestNextPrime(unittest.TestCase):
208217
def testNextPrime10000(self):
209218
known_primes = primes_up_to(10000)
210219
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])
212222

213223
class TestTwinPrimesUpTo(unittest.TestCase):
214224
def testTwinPrimesUpTo4(self):
@@ -242,7 +252,8 @@ def testTwinPrimesWithPassIn(self):
242252
upto = 500
243253
p = primes_up_to(upto)
244254
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)])))
246257

247258
class TestCousinPrimesUpTo(unittest.TestCase):
248259
def testCousinPrimesUpTo6(self):
@@ -267,7 +278,8 @@ def testCousinPrimesWithPassIn(self):
267278
upto = 500
268279
p = primes_up_to(upto)
269280
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)])))
271283

272284
class TestSexyPrimesUpTo(unittest.TestCase):
273285
def testSexyPrimesUpTo10(self):
@@ -289,7 +301,8 @@ def testSexyPrimesWithPassIn(self):
289301
upto = 500
290302
p = primes_up_to(upto)
291303
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)])))
293306

294307
class TestPrimeTripletsUpTo(unittest.TestCase):
295308
def testPrimeTripletsUpTo10(self):
@@ -311,7 +324,8 @@ def testPrimeTripletsWithPassIn(self):
311324
upto = 500
312325
p = primes_up_to(upto)
313326
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)])))
315329

316330
class TestPrimeQuadrupletsUpTo(unittest.TestCase):
317331
def testPrimeQuadrupletsUpTo12(self):
@@ -333,7 +347,8 @@ def testPrimeQuadrupletsWithPassIn(self):
333347
upto = 500
334348
p = primes_up_to(upto)
335349
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)])))
337352

338353
class TestPrimeGapsUpTo(unittest.TestCase):
339354
def testPrimeGaps0(self):
@@ -370,21 +385,25 @@ def testMembershipSanity(self):
370385

371386
def testMembership10000(self):
372387
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)
375391

376392
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)
379396

380397
def testMembership15000(self):
381398
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)
384402

385403
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)
388407

389408
def testIndexingSanity(self):
390409
self.assertEqual(self.primes[0], 2)
@@ -398,8 +417,9 @@ def testIndexingSanity(self):
398417

399418
def testIndexing1000(self):
400419
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)
403423

404424
def testSlicing(self):
405425
self.assertRaises(TypeError, lambda p: p[1,2,3], self.primes)
@@ -500,7 +520,8 @@ def testIteration(self):
500520
self.assertEqual(n_primes(1000), [prime for prime in self.primes])
501521

502522
for prime in self.primes:
503-
self.assertTrue(is_prime(prime))
523+
with self.subTest(prime=prime):
524+
self.assertTrue(is_prime(prime))
504525

505526
def testEquality(self):
506527
otherprimes = Primes()
@@ -540,7 +561,8 @@ def testIndex(self):
540561
class TestSieves(unittest.TestCase):
541562
def testSieves(self):
542563
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))
544566

545567
for _ in range(100):
546568
r = random.randint(1001, 500000)
@@ -549,12 +571,14 @@ def testSieves(self):
549571
class TestPrimeFactorisation(unittest.TestCase):
550572
def testPrimes(self):
551573
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]))
554577

555578
def testPrimesPerfectSquares(self):
556579
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]))
558582

559583
class TestSemiprimeFactorisation(unittest.TestCase):
560584
def test15(self):
@@ -578,7 +602,8 @@ def testComprehensive(self):
578602
primes = primes_up_to(500000)
579603
random.shuffle(primes)
580604
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]))
582607

583608
class TestCompositeFactorisation(unittest.TestCase):
584609
def testComposites(self):
@@ -592,8 +617,9 @@ def testComposites(self):
592617
class TestFactorisationWithPrimes(unittest.TestCase):
593618
def testFactorisation(self):
594619
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))
597623

598624
if __name__ == '__main__':
599625
unittest.main()

0 commit comments

Comments
 (0)