def test004_eatFoodAction_updatesBalance(self):
        from main import eatFoodAction
        from caloric_balance import CaloricBalance

        cb = CaloricBalance('f', 23.0, 65.0, 130.0)
        expected = -1417.9
        actual = cb.getBalance()
        self.assertAlmostEqual(
            actual, expected, 2,
            'Your result (%s) is not close enough to (%s)' %
            (actual, expected))

        expected_response = "998"
        self.input_response_list = [
            "0", "-1.7", "-20", "zero", "twleve", "", "\n", expected_response,
            "500", "600", "700"
        ]
        eatFoodAction(cb)

        actual2 = cb.getBalance()
        self.assertNotEqual(
            actual, actual2,
            'Your eatFoodAction did not update the caloric balance.')

        expected = actual + float(expected_response)
        actual = actual2
        self.assertAlmostEqual(
            expected, actual, 2,
            'Your result (%s) is not close enough to (%s). Did you use getUserFloat?'
            % (actual, expected))
    def test003_eatFoodAction_updatesBalance(self):
        from main import eatFoodAction
        from caloric_balance import CaloricBalance

        cb = CaloricBalance('f', 23.0, 65.0, 130.0)
        expected = -1417.9
        actual = cb.getBalance()
        self.assertAlmostEqual(actual, expected, 2,
                               'Your result (%s) is not close enough to (%s)' % (actual, expected))

        expected_response = "400"
        self.input_response_list = ["0", "-1.7", "-20", "zero", "twleve", "", "\n", expected_response]
        eatFoodAction(cb)

        actual2 = cb.getBalance()
        self.assertNotEqual(actual, actual2,
                            'Your eatFoodAction did not update the caloric balance.')

        expected = actual + float(expected_response)
        actual  = actual2
        self.assertAlmostEqual(expected, actual, 2,
                               'Your result (%s) is not close enough to (%s). Did you use getUserFloat?' % (actual, expected))

        lines = "    ".join(self.printed_lines)
        expression = "caloric.*balance.*(-[0-9]+\.[0-9]+)"
        matches = re.findall(expression, lines.lower())
        self.assertTrue(
            len(matches) >= 1,
            'You did not print the updated caloric balance to the user?\n' +
            'Your message should contain the words "caloric", "balance", and the updated balance.\n' +
            'You printed:\n    %s' % lines
        )
    def test002_eatFoodAction_updatesBalance(self):
        from main import eatFoodAction
        from caloric_balance import CaloricBalance

        cb = CaloricBalance('f', 23.0, 65.0, 130.0)
        expected = -1417.9
        actual = cb.getBalance()
        self.assertAlmostEqual(
            actual, expected, 2,
            'Your result (%s) is not close enough to (%s)' %
            (actual, expected))

        self.input_response_list = ["400"]
        eatFoodAction(cb)

        actual_response = self.input_response_list[self.input_response_index]
        self.assertEqual("400", actual_response)

        actual2 = cb.getBalance()
        self.assertNotEqual(
            actual, actual2,
            'Your eatFoodAction did not update the caloric balance.')