from july16 import *
import unittest
import math

class TestJuly16(unittest.TestCase):
    def test_gcd(self):
        self.assertEqual(gcd(6, 4), 2)
        self.assertEqual(gcd(6, 9), 3)

    def test_factorial(self):
        self.assertEqual(factorial(3), 6)
        self.assertEqual(factorial(5), 120)

    def test_waste_of_time(self):
        self.assertEqual(waste_of_time(5), 5)
        self.assertEqual(waste_of_time(0), 0)
        #self.assertEqual(waste_of_time(8636582373345), 8636582373345)

    def test_only_primes(self):
        self.assertEqual(
            only_primes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
            [1, 2, 3, 5, 7])

    def test_only_even(self):
        self.assertEqual(
            only_even([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
            [2, 4, 6, 8, 10])

        self.assertEqual(only_even([2, 4, 6, 8, 10]), [2, 4, 6, 8, 10])
        self.assertEqual(only_even([]), [])

    def test_scale_to_int(self):
        self.assertEqual(scale_to_int(1.67895), 167895)
        self.assertEqual(scale_to_int(55.9), 559)

    def test_asterisk_triangle(self):
        self.assertEqual(asterisk_triangle(3), '*\n**\n***\n')
        self.assertEqual(asterisk_triangle(4), '*\n**\n***\n****\n')
        
if __name__ == '__main__':
    try:
        unittest.main()
    except SystemExit:
        pass
