from july2 import *
import unittest
import math

class TestJuly2(unittest.TestCase):
    def test_sum(self):
        self.assertEqual(sum_to_n(3), 6)
        self.assertEqual(sum_to_n(5), 15)
        self.assertEqual(sum_to_n(100), 5050)

    def test_prime(self):
        self.assertTrue(is_prime(2))
        self.assertTrue(is_prime(5))
        self.assertTrue(is_prime(73))
        self.assertFalse(is_prime(4))
        self.assertFalse(is_prime(888))
        self.assertFalse(is_prime(15))

    def test_count_digits(self):
        self.assertEqual(count_digits(100), 3)
        self.assertEqual(count_digits(367436763), 9)
        self.assertEqual(count_digits(1), 1)
        self.assertEqual(count_digits(4783), 4)

        self.assertEqual(count_digits2(100), 3)
        self.assertEqual(count_digits2(367436763), 9)
        self.assertEqual(count_digits2(1), 1)
        self.assertEqual(count_digits2(4783), 4)

    def test_fs(self):
        self.assertEqual(f5(),5)
        self.assertEqual(f3(), 3)
        self.assertEqual(f(6), 6)


    def test_factorial(self):
        self.assertEqual(factorial(5), 120)
        self.assertEqual(factorial(3), 6)
        self.assertEqual(factorial(0), 0)
if __name__ == '__main__':
    try:
        unittest.main()
    except SystemExit:
        pass
