def replace_at(self, original, replacement, locations):
        """ Replace the occurrences of original at all the locations with
        replacement. """

        locations.sort()
        self.text = LocationReplace().location_replace_text(
            self.text, original, replacement, locations)
    def test_location_replace_text(self):
        lr = LocationReplace()
        replaced = lr.location_replace_text('Bunch of as as as', 'as',
                                            '<sub>as</sub>', [0, 2])
        self.assertEqual('Bunch of <sub>as</sub> as <sub>as</sub>', replaced)

        lr = LocationReplace()
        replaced = lr.location_replace_text('Bunch of as as as', 'as',
                                            '<sub>b</sub>', [0, 2])
        self.assertEqual('Bunch of <sub>b</sub> as <sub>b</sub>', replaced)

        lr = LocationReplace()
        replaced = lr.location_replace_text('Bunch of a_{s} a_{s} a_{s}',
                                            'a_{s}', 'a<sub>s</sub>', [0, 2])
        self.assertEqual('Bunch of a<sub>s</sub> a_{s} a<sub>s</sub>',
                         replaced)
 def location_replace(self, xml_node, original, replacement, locations):
     LocationReplace().location_replace(xml_node, original, replacement,
                                        locations)
 def test_update_offsets_html(self):
     lr = LocationReplace()
     lr.update_offsets("a", "This is a test. It is only a test")
     self.assertEqual(lr.offsets, {0: (8, 9), 1: (27, 28)})
     lr.update_offsets("a", "This is a test. <a href='something'>link</a>")
     self.assertEqual(lr.offsets, {0: (8, 9)})