def setUp(self):
     self.boiler = ChocolateBoiler()
class TestChocolateBoiler(unittest.TestCase):
    def setUp(self):
        self.boiler = ChocolateBoiler()

    def test_init(self):
        self.assertIsInstance(self.boiler, ChocolateBoiler)
        self.assertEqual(self.boiler.empty, True)
        self.assertEqual(self.boiler.boiling, False)

    def test_fill(self):
        result = self.boiler.fill()
        self.assertEqual(result, True)
        self.assertEqual(self.boiler.empty, False)
        self.assertEqual(self.boiler.boiling, False)

    def test_fill_twice(self):
        result = self.boiler.fill()
        self.assertEqual(result, True)
        result = self.boiler.fill()
        self.assertEqual(result, False)
        self.assertEqual(self.boiler.empty, False)
        self.assertEqual(self.boiler.boiling, False)

    def test_boil_empty_boiler(self):
        result = self.boiler.boil()
        self.assertEqual(result, False)
        self.assertEqual(self.boiler.empty, True)
        self.assertEqual(self.boiler.boiling, False)

    def test_boil_filled_boiler(self):
        result = self.boiler.fill()
        self.assertEqual(result, True)
        result = self.boiler.boil()
        self.assertEqual(result, True)
        self.assertEqual(self.boiler.empty, False)
        self.assertEqual(self.boiler.boiling, True)

    def test_boil_filled_boiler_allready_boiled(self):
        result = self.boiler.fill()
        self.assertEqual(result, True)
        result = self.boiler.boil()
        self.assertEqual(result, True)
        result = self.boiler.boil()
        self.assertEqual(result, False)
        self.assertEqual(self.boiler.empty, False)
        self.assertEqual(self.boiler.boiling, True)


    def test_drain_empty_boiler(self):
        result = self.boiler.drain()
        self.assertEqual(result, False)
        self.assertEqual(self.boiler.empty, True)
        self.assertEqual(self.boiler.boiling, False)

    def test_drain_filled_boiler_not_boiled(self):
        result = self.boiler.fill()
        self.assertEqual(result, True)
        result = self.boiler.boil()
        self.assertEqual(result, True)
        result = self.boiler.drain()
        self.assertEqual(result, True)
        self.assertEqual(self.boiler.empty, True)
        self.assertEqual(self.boiler.boiling, False)

    def test_drain_filled_boiler_boiled(self):
        result = self.boiler.fill()
        self.assertEqual(result, True)
        result = self.boiler.drain()
        self.assertEqual(result, False)
        self.assertEqual(self.boiler.empty, False)
        self.assertEqual(self.boiler.boiling, False)

    def test_create_two_boilers(self):
        boiler2 = ChocolateBoiler()
        self.assertEqual(id(self.boiler), id(boiler2))