def test_empty(self): remapped, column = sourcemap.normalize_mapping_line([]) self.assertEqual([], remapped) self.assertEqual(0, column) remapped, column = sourcemap.normalize_mapping_line([()]) # that nonsensical empty element should be dropped self.assertEqual([], remapped) self.assertEqual(0, column) # ensure that previous column also returned remapped, column = sourcemap.normalize_mapping_line([], 4) self.assertEqual([], remapped) self.assertEqual(4, column)
def test_single_elements_only(self): remapped, column = sourcemap.normalize_mapping_line([ (0,), (4,), ]) # leading elements are simply not going to be recorded self.assertEqual([], remapped) self.assertEqual(0, column)
def test_leading_single_elements(self): remapped, column = sourcemap.normalize_mapping_line([ (0,), (4,), (4,), (0, 0, 0, 0), ]) # they would be merged down to the actual real node, since there # was nothing to stop. self.assertEqual([(8, 0, 0, 0)], remapped) self.assertEqual(0, column)
def test_unmodified_offsetted(self): # simulate the removal of indentation remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 2), (7, 0, 0, 7), (1, 0, 0, 1), (3, 0, 0, 3), (1, 0, 0, 1), (13, 0, 0, 13), (1, 0, 0, 1), ]) self.assertEqual([(0, 0, 0, 2)], remapped) self.assertEqual(26, column)
def test_trailing_single_elements(self): remapped, column = sourcemap.normalize_mapping_line([ (0,), (4,), (4,), (0, 0, 0, 0), (4,), (4,), (4,), ]) # the first trailing node would be kept, remaining are discarded self.assertEqual([(8, 0, 0, 0), (4,)], remapped) self.assertEqual(0, column)
def test_unmodified(self): # this is a typical canonical example # console.log("hello world"); remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 0), (7, 0, 0, 7), (1, 0, 0, 1), (3, 0, 0, 3), (1, 0, 0, 1), (13, 0, 0, 13), (1, 0, 0, 1), ]) self.assertEqual([(0, 0, 0, 0)], remapped) self.assertEqual(26, column)
def test_with_previous_source(self): remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 0), (1, 0, 0, 7), (1, 0, 0, 1), (1, 0, 0, 3), (1, 0, 0, 1), (13, 0, 0, 13), (1, 0, 0, 1), ], 4) self.assertEqual([ (0, 0, 0, 4), (1, 0, 0, 7), (2, 0, 0, 4), ], remapped) self.assertEqual(15, column)
def test_column_offset(self): remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 0), (1, 0, 0, 7), (1, 0, 0, 1), (1, 0, 0, 3), (1, 0, 0, 1), (13, 0, 0, 13), (1, 0, 0, 1), ]) self.assertEqual([ (0, 0, 0, 0), (1, 0, 0, 7), (2, 0, 0, 4), ], remapped) self.assertEqual(15, column)
def test_file_changed(self): remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 0), (7, 0, 0, 7), (1, 0, 0, 1), (1, 1, 0, 1), (1, 0, 0, 1), (1, -1, 0, 1), (1, 0, 0, 1), ]) self.assertEqual([ (0, 0, 0, 0), (9, 1, 0, 9), (2, -1, 0, 2), ], remapped) self.assertEqual(1, column)
def test_negative_offset(self): remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 0), (1, 0, 0, 7), (1, 0, 0, 1), (3, 0, 0, 3), (1, 0, 0, 1), (13, 0, 0, 13), (1, 0, 0, 1), (1, 0, 0, -26), (1, 0, 0, 7), (1, 0, 0, 1), (3, 0, 0, 3), ]) self.assertEqual([ (0, 0, 0, 0), (1, 0, 0, 7), (20, 0, 0, -7), (1, 0, 0, 7), ], remapped)
def test_line_changed(self): remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 0), (7, 0, 0, 7), (1, 0, 0, 1), (0, 0, 1, 0), (1, 0, 0, 1), (17, 0, 0, 17), (1, 0, 0, 1), (0, 0, 1, 0), (1, 0, 0, 1), (3, 0, 0, 3), (1, 0, 0, 1), ]) self.assertEqual([ (0, 0, 0, 0), (8, 0, 1, 8), (19, 0, 1, 19), ], remapped) self.assertEqual(5, column)
def test_five_segment(self): remapped, column = sourcemap.normalize_mapping_line([ (0, 0, 0, 0), (7, 0, 0, 7, 0), (1, 0, 0, 1), (3, 0, 0, 3, 1), (1, 0, 0, 1), (13, 0, 0, 13), (1, 0, 0, 1), (3, 0, 0, 3, 1), ]) self.assertEqual([ (0, 0, 0, 0), (7, 0, 0, 7, 0), (1, 0, 0, 1), (3, 0, 0, 3, 1), (1, 0, 0, 1), (17, 0, 0, 17, 1), # this finally got collapsed ], remapped) self.assertEqual(0, column)
def test_interspersed_single_elements(self): # example how this might look: # source # XXXX(YYYZZZ) # sink (? marks ignored) # ????????XXXX????(YYYZZZ)?????????? remapped, column = sourcemap.normalize_mapping_line([ (4,), (4,), # symbol runs for 4 characters (0, 0, 0, 0), (4,), # next two symbols run for a total of 8 characters, after # another 4 column gap. (4, 0, 0, 4), (4, 0, 0, 4), (4,), ]) self.assertEqual([(8, 0, 0, 0), (4,), (4, 0, 0, 4), (8,)], remapped) self.assertEqual(4, column)