def testRandom(self): # Out implementation of is_prime def our_is_prime(n): """ simple prime test takes integer, returns true if number is prime """ # returns True for the prime 87178291199, # but false for 10888869450418352160768000001 :-D if (n == 1): # By definition! return False n*=1.0 if n%2==0 and n!=2 or n%3==0 and n!=3: return False for b in range(1,int((n**0.5+1)/6.0+1)): if n%(6*b-1)==0: return False if n %(6*b+1)==0: return False return True cheese = range(1, 10000000) #Hopefully big enough for k in range (1, 10000): very_runny_camembert_that_turns_out_to_have_been_eaten_by_the_cat = random.choice(cheese) self.assertEquals(is_prime(very_runny_camembert_that_turns_out_to_have_been_eaten_by_the_cat), our_is_prime(very_runny_camembert_that_turns_out_to_have_been_eaten_by_the_cat))
def testNegative(self): self.assertEquals(is_prime(-1), False) self.assertEquals(is_prime(-10), False) self.assertEquals(is_prime(-4000), False) self.assertEquals(is_prime(-100000), False)
def testNonNumber(self): self.assertRaises(Exception, lambda: is_prime('villain')) self.assertRaises(Exception, lambda: is_prime(is_prime))
def testBasic(self): self.assertTrue(not is_prime(1)) self.assertTrue(is_prime(2)) self.assertTrue(not is_prime(4)) self.assertTrue(not is_prime(6)) self.assertTrue(is_prime(7))