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