Пример #1
0
    def test_properties(self):
        uut = TextRange(TextPosition(7, 2), TextPosition(7, 3))
        self.assertEqual(uut.start, TextPosition(7, 2))
        self.assertEqual(uut.end, TextPosition(7, 3))

        uut = TextRange(TextPosition(70, 20), None)
        self.assertEqual(uut.start, TextPosition(70, 20))
        self.assertEqual(uut.end, TextPosition(70, 20))
        self.assertIs(uut.start, uut.end)
Пример #2
0
    def test_fails(self):
        # need to pass ranges
        with self.assertRaises(TypeError):
            TextRange.join(self.pos[0], self.pos[1])

        with self.assertRaises(TypeError):
            TextRange.join(TextRange(self.pos[0], self.pos[1]), self.pos[1])

        # ranges must overlap
        with self.assertRaises(ValueError):
            TextRange.join(TextRange(self.pos[0], self.pos[1]),
                           TextRange(self.pos[3], self.pos[4]))
Пример #3
0
    def test_fail_instantation(self):
        with self.assertRaises(ValueError):
            TextRange(TextPosition(3, 4), TextPosition(2, 8))

        with self.assertRaises(ValueError):
            TextRange(TextPosition(0, 10), TextPosition(0, 7))

        with self.assertRaises(TypeError):
            TextRange(None, TextPosition(20, 80))

        with self.assertRaises(TypeError):
            TextRange("string", TextPosition(200, 800))

        with self.assertRaises(TypeError):
            TextRange(TextPosition(5, 0), "schtring")
Пример #4
0
    def test_fail_instantiation(self):
        with self.assertRaises(ValueError):
            TextRange(TextPosition(3, 4), TextPosition(2, 8))

        with self.assertRaises(ValueError):
            TextRange(TextPosition(1, 10), TextPosition(1, 7))

        with self.assertRaises(TypeError):
            TextRange(None, TextPosition(20, 80))

        with self.assertRaises(TypeError):
            TextRange('string', TextPosition(200, 800))

        with self.assertRaises(TypeError):
            TextRange(TextPosition(5, 1), 'schtring')
Пример #5
0
    def insert(self, position, text):
        r"""
        Inserts (multiline) text at arbitrary position.

        >>> from coalib.results.TextPosition import TextPosition
        >>> test_text = ['123\n', '456\n', '789\n']
        >>> def insert(position, text):
        ...     diff = Diff(test_text)
        ...     diff.insert(position, text)
        ...     return diff.modified
        >>> insert(TextPosition(2, 3), 'woopy doopy')
        ['123\n', '45woopy doopy6\n', '789\n']
        >>> insert(TextPosition(1, 1), 'woopy\ndoopy')
        ['woopy\n', 'doopy123\n', '456\n', '789\n']
        >>> insert(TextPosition(2, 4), '\nwoopy\ndoopy\n')
        ['123\n', '456\n', 'woopy\n', 'doopy\n', '\n', '789\n']

        :param position: The ``TextPosition`` where to insert text.
        :param text:     The text to insert.
        """
        self.replace(TextRange(position, position), text)
Пример #6
0
 def test_expand_none(self):
     start_position = TextPosition(2, 2)
     end_position = TextPosition(3, 2)
     file = ["abc\n", "def\n", "ghi\n"]
     text_range = TextRange(start_position, end_position)
     self.assertEqual(text_range.expand(file), text_range)
Пример #7
0
 def test_expand_full(self):
     empty_position = TextPosition()
     file = ["abc\n", "def\n", "ghi\n"]
     empty_range = TextRange(empty_position, empty_position)
     full_range = TextRange.from_values(1, 1, 3, 4)
     self.assertEqual(empty_range.expand(file), full_range)
Пример #8
0
    def test_join(self):
        # overlap
        self.assertEqual(
            TextRange.join(TextRange(self.pos[0], self.pos[2]),
                           TextRange(self.pos[1], self.pos[3])),
            TextRange(self.pos[0], self.pos[3]))

        self.assertEqual(
            TextRange.join(TextRange(self.pos[1], self.pos[3]),
                           TextRange(self.pos[2], self.pos[4])),
            TextRange(self.pos[1], self.pos[4]))
        # embrace
        self.assertEqual(
            TextRange.join(TextRange(self.pos[0], self.pos[3]),
                           TextRange(self.pos[1], self.pos[2])),
            TextRange(self.pos[0], self.pos[3]))

        # touch
        self.assertEqual(
            TextRange.join(TextRange(self.pos[1], self.pos[2]),
                           TextRange(self.pos[2], self.pos[3])),
            TextRange(self.pos[1], self.pos[3]))