12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import unittest
- from Cython import StringIOTree as stringtree
- code = """
- cdef int spam # line 1
- cdef ham():
- a = 1
- b = 2
- c = 3
- d = 4
- def eggs():
- pass
- cpdef bacon():
- print spam
- print 'scotch'
- print 'tea?'
- print 'or coffee?' # line 16
- """
- linemap = dict(enumerate(code.splitlines()))
- class TestStringIOTree(unittest.TestCase):
- def setUp(self):
- self.tree = stringtree.StringIOTree()
- def test_markers(self):
- assert not self.tree.allmarkers()
- def test_insertion(self):
- self.write_lines((1, 2, 3))
- line_4_to_6_insertion_point = self.tree.insertion_point()
- self.write_lines((7, 8))
- line_9_to_13_insertion_point = self.tree.insertion_point()
- self.write_lines((14, 15, 16))
- line_4_insertion_point = line_4_to_6_insertion_point.insertion_point()
- self.write_lines((5, 6), tree=line_4_to_6_insertion_point)
- line_9_to_12_insertion_point = (
- line_9_to_13_insertion_point.insertion_point())
- self.write_line(13, tree=line_9_to_13_insertion_point)
- self.write_line(4, tree=line_4_insertion_point)
- self.write_line(9, tree=line_9_to_12_insertion_point)
- line_10_insertion_point = line_9_to_12_insertion_point.insertion_point()
- self.write_line(11, tree=line_9_to_12_insertion_point)
- self.write_line(10, tree=line_10_insertion_point)
- self.write_line(12, tree=line_9_to_12_insertion_point)
- self.assertEqual(self.tree.allmarkers(), list(range(1, 17)))
- self.assertEqual(code.strip(), self.tree.getvalue().strip())
- def write_lines(self, linenos, tree=None):
- for lineno in linenos:
- self.write_line(lineno, tree=tree)
- def write_line(self, lineno, tree=None):
- if tree is None:
- tree = self.tree
- tree.markers.append(lineno)
- tree.write(linemap[lineno] + '\n')
|