class TestIntegerGenerator(unittest.TestCase):
    def setUp(self):
        self.integer_generator = IntegerGenerator()

    def test_generate_integer(self):
        generated = self.integer_generator.generate()

        self.assertEqual(type(generated), int)
        self.assertGreaterEqual(generated, 1)
        self.assertLessEqual(generated, 100)

    def test_generate_even_integer(self):
        self.integer_generator.even = IntegerGenerator.EVEN

        for i in range(20):
            generated = self.integer_generator.generate()

            self.assertEqual(type(generated), int)
            self.assertGreaterEqual(generated, 1)
            self.assertLessEqual(generated, 100)
            self.assertEqual(generated % 2, 0)

    def test_generate_odd_integer(self):
        self.integer_generator.even = IntegerGenerator.ODD

        for i in range(20):
            generated = self.integer_generator.generate()

            self.assertEqual(type(generated), int)
            self.assertGreaterEqual(generated, 1)
            self.assertLessEqual(generated, 100)
            self.assertEqual(generated % 2, 1)

    def test_generate_even_or_odd(self):
        self.integer_generator.even = IntegerGenerator.EVEN_OR_ODD

        even_found = False
        odd_found = False

        for i in range(20):
            generated = self.integer_generator.generate()

            if generated % 2 == 0:
                even_found = True
            if generated % 2 == 1:
                odd_found = True

        self.assertTrue(even_found)
        self.assertTrue(odd_found)
 def setUp(self):
     self.integer_generator = IntegerGenerator()