47 lines
1.9 KiB
Python
47 lines
1.9 KiB
Python
from __future__ import absolute_import
|
|
|
|
from unittest import TestCase
|
|
|
|
from ddt import data, ddt
|
|
|
|
from xsslint.utils import StringLines
|
|
|
|
|
|
@ddt
|
|
class TestStringLines(TestCase):
|
|
"""
|
|
Test StringLines class.
|
|
"""
|
|
@data(
|
|
{'string': 'test', 'index': 0, 'line_start_index': 0, 'line_end_index': 4},
|
|
{'string': 'test', 'index': 2, 'line_start_index': 0, 'line_end_index': 4},
|
|
{'string': 'test', 'index': 3, 'line_start_index': 0, 'line_end_index': 4},
|
|
{'string': '\ntest', 'index': 0, 'line_start_index': 0, 'line_end_index': 1},
|
|
{'string': '\ntest', 'index': 2, 'line_start_index': 1, 'line_end_index': 5},
|
|
{'string': '\ntest\n', 'index': 0, 'line_start_index': 0, 'line_end_index': 1},
|
|
{'string': '\ntest\n', 'index': 2, 'line_start_index': 1, 'line_end_index': 6},
|
|
{'string': '\ntest\n', 'index': 6, 'line_start_index': 6, 'line_end_index': 6},
|
|
)
|
|
def test_string_lines_start_end_index(self, data):
|
|
"""
|
|
Test StringLines index_to_line_start_index and index_to_line_end_index.
|
|
"""
|
|
lines = StringLines(data['string'])
|
|
self.assertEqual(lines.index_to_line_start_index(data['index']), data['line_start_index'])
|
|
self.assertEqual(lines.index_to_line_end_index(data['index']), data['line_end_index'])
|
|
|
|
@data(
|
|
{'string': 'test', 'line_number': 1, 'line': 'test'},
|
|
{'string': '\ntest', 'line_number': 1, 'line': ''},
|
|
{'string': '\ntest', 'line_number': 2, 'line': 'test'},
|
|
{'string': '\ntest\n', 'line_number': 1, 'line': ''},
|
|
{'string': '\ntest\n', 'line_number': 2, 'line': 'test'},
|
|
{'string': '\ntest\n', 'line_number': 3, 'line': ''},
|
|
)
|
|
def test_string_lines_start_end_index(self, data):
|
|
"""
|
|
Test line_number_to_line.
|
|
"""
|
|
lines = StringLines(data['string'])
|
|
self.assertEqual(lines.line_number_to_line(data['line_number']), data['line'])
|