class TestMimic(unittest.TestCase):

    key_index = 0
    value_index = 1
    expected_result_index = 2

    test_datas = [
        ['crown',0,"William's"],
        ['play',3,'croquet'],
        ["I've",2,'kept'],
    ]


    def setUp(self):
        pass


    def test_mimic_dict(self):
        self.mimic = Mimic('alice.txt')

        for test_data in self.test_datas:
            result = self.mimic.mimic_dict()[test_data[self.key_index]][test_data[self.value_index]]
            expected_result = test_data[self.expected_result_index]
            self.assertEqual(expected_result, result,
                             'mimic_dict()[{}][{}] expected {} but got {}'.format(test_data[self.key_index],
                                                                              test_data[self.value_index],
                                                                              expected_result,
                                                                              result))


    def test_mimic_dict_keys(self):
        self.mimic = Mimic('alice.txt')

        self.assertTrue('mustard' in self.mimic.mimic_dict())
        self.assertTrue('we' in self.mimic.mimic_dict())

        # test contracted words have been escaped
        self.assertTrue('I\'ve' in self.mimic.mimic_dict())
        self.assertTrue('we\'ve' in self.mimic.mimic_dict())