class CleanCoverageTests(unittest.TestCase):

    def setUp(self):
        self.v = Validator()

    def test_clean_id(self):
        the_input = "a558,F,08,885,Normal,517"
        output = self.v.clean_input(the_input)
        self.assertEqual(output, ["A558","F","08","885","Normal","517"])

    def test_clean_gender(self):
        the_input = "A558,f,08,885,Normal,517"
        output = self.v.clean_input(the_input)
        self.assertEqual(output, ["A558","F","08","885","Normal","517"])

    def test_clean_age(self):
        the_input = "A558,F,8,885,Normal,517"
        output = self.v.clean_input(the_input)
        self.assertEqual(output, ["A558","F","08","885","Normal","517"])

    def test_clean_sales_1(self):
        the_input = "A558,F,08,85,Normal,517"
        output = self.v.clean_input(the_input)
        self.assertEqual(output, ["A558","F","08","085","Normal","517"])

    def test_clean_sales_2(self):
        the_input = "A558,F,08,5,Normal,517"
        output = self.v.clean_input(the_input)
        self.assertEqual(output, ["A558","F","08","005","Normal","517"])

    def test_clean_bmi(self):
        the_input = "A558,F,08,885,normal,517"
        output = self.v.clean_input(the_input)
        self.assertEqual(output, ["A558","F","08","885","Normal","517"])

    def test_clean_income(self):
        the_input = "A558,F,08,85,Normal,7"
        output = self.v.clean_input(the_input)
        self.assertEqual(output, ["A558","F","08","085","Normal","07"])
class ValidationCoverageTests(unittest.TestCase):

    def setUp(self):
        self.v = Validator()

    def test_bad_id(self):
        the_input = self.v.clean_input("A58,F,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertFalse(output)

    def test_good_id(self):
        the_input = self.v.clean_input("A558,F,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertTrue(output, True)

    def test_bad_gender(self):
        the_input = self.v.clean_input("A558,D,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertFalse(output)

    def test_good_gender_female(self):
        the_input = self.v.clean_input("A558,F,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertTrue(output)

    def test_good_gender_male(self):
        the_input = self.v.clean_input("A558,M,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertTrue(output)

    def test_bad_age(self):
        the_input = self.v.clean_input("A58,F,sdf,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertFalse(output)

    def test_good_age(self):
        the_input = self.v.clean_input("A558,F,49,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertTrue(output)

    def test_bad_sales(self):
        the_input = self.v.clean_input("A58,F,08,string,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertFalse(output)

    def test_good_sales(self):
        the_input = self.v.clean_input("A558,F,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertTrue(output)

    def test_bad_bmi(self):
        the_input = self.v.clean_input("A58,F,08,885,superfat,517")
        output = self.v.isvalid(the_input)
        self.assertFalse(output)

    def test_good_bmi(self):
        the_input = self.v.clean_input("A558,F,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertTrue(output)

    def test_bad_income(self):
        the_input = self.v.clean_input("A58,F,08,885,Normal,NAN")
        output = self.v.isvalid(the_input)
        self.assertFalse(output)

    def test_good_income(self):
        the_input = self.v.clean_input("A558,F,08,885,Normal,517")
        output = self.v.isvalid(the_input)
        self.assertTrue(output)