def test_cut_cellrange_reference_to_partially_cut_cellrange_is_not_rewritten_even_if_its_not_obviously_overlapping( self): cut_region_left = 2 cut_region_right = 3 cut_region_top = 1 cut_region_bottom = 2 cell_range_topleft = "A2" cell_range_bottomright = "B3" result = rewrite_formula( "=%s:%s" % (cell_range_topleft, cell_range_bottomright), 2, 1, True, (cut_region_left, cut_region_top, cut_region_right, cut_region_bottom)) self.assertEquals(result, '=A2:B3')
def test_cut_absolute_cellrange_reference_to_partially_cut_cellrange_is_not_rewritten_even_if_its_not_obviously_overlapping(self): cut_region_left = 2 cut_region_right = 3 cut_region_top = 1 cut_region_bottom = 2 cell_range_topleft = "$A$2" cell_range_bottomright = "$B$3" result = rewrite_formula( "=%s:%s" % (cell_range_topleft, cell_range_bottomright), 2, 1, True, (cut_region_left, cut_region_top, cut_region_right, cut_region_bottom) ) self.assertEquals(result, '=$A$2:$B$3')
def to_cells(self, start, end): start_col, start_row = start end_col, end_row = end strings_dict = jsonlib.loads(self.contents_json) for col in xrange(0, end_col - start_col + 1): for row in xrange(0, end_row - start_row + 1): clip_loc = col % self.width, row % self.height clip_cell = strings_dict['%s,%s' % clip_loc] dest_cell = Cell() if clip_cell['formula']: column_offset, row_offset = self._get_offset( col, row, start_col, start_row) dest_cell.formula = rewrite_formula( clip_cell['formula'], column_offset, row_offset, self.is_cut, self.source_range) dest_cell.formatted_value = clip_cell['formatted_value'] dest_loc = col + start_col, row + start_row yield (dest_loc, dest_cell)
def to_cells(self, start, end): start_col, start_row = start end_col, end_row = end strings_dict = jsonlib.loads(self.contents_json) for col in xrange(0, end_col - start_col + 1): for row in xrange(0, end_row - start_row + 1): clip_loc = col % self.width, row % self.height clip_cell = strings_dict['%s,%s' % clip_loc] dest_cell = Cell() if clip_cell['formula']: column_offset, row_offset = self._get_offset(col, row, start_col, start_row) dest_cell.formula = rewrite_formula( clip_cell['formula'], column_offset, row_offset, self.is_cut, self.source_range ) dest_cell.formatted_value = clip_cell['formatted_value'] dest_loc = col + start_col, row + start_row yield (dest_loc, dest_cell)
def test_copied_cellrange_reference_to_uncopied_cellrange_is_rewritten( self): result = rewrite_formula("=A2:A3", 2, 1, False, (1, 1, 1, 1)) self.assertEquals(result, '=C3:C4')
def test_dont_rewrite_constants(self): result = rewrite_formula( "B3", 3, 5, False, (1, 2, 3, 4) ) self.assertEquals(result, 'B3')
def test_cut_absolute_cellrange_reference_to_partially_cut_cellrange_is_not_rewritten( self): result = rewrite_formula("=$A$2:$A$3", 2, 1, True, (1, 1, 1, 2)) self.assertEquals(result, '=$A$2:$A$3')
def test_cut_cellrange_reference_to_completely_cut_cellrange_is_rewritten( self): result = rewrite_formula("=A2:A3", 2, 1, True, (1, 1, 1, 3)) self.assertEquals(result, '=C3:C4')
def test_absolute_copied_cell_reference_to_uncopied_cell_is_not_rewritten( self): result = rewrite_formula("=$B$3", 2, 1, False, (1, 1, 1, 1)) self.assertEquals(result, '=$B$3')
def test_absolute_cut_cell_reference_to_cut_cell_is_rewritten(self): result = rewrite_formula("=$A$2", 2, 1, True, (1, 1, 1, 2)) self.assertEquals(result, '=$C$3')
def test_safely_handle_nonsense(self): unparseable_nonsense = '=!:booA1:A2' self.assertEquals( rewrite_formula(unparseable_nonsense, 3, 5, False, (1, 2, 3, 4)), unparseable_nonsense)
def test_absolute_cut_cell_reference_to_cut_cell_is_rewritten(self): result = rewrite_formula( "=$A$2", 2, 1, True, (1, 1, 1, 2) ) self.assertEquals(result, '=$C$3')
def test_cut_cell_reference_to_uncut_cell_is_not_rewritten(self): result = rewrite_formula( "=B3", 2, 1, True, (1, 1, 1, 1) ) self.assertEquals(result, '=B3')
def test_safely_handle_nonsense(self): unparseable_nonsense = '=!:booA1:A2' self.assertEquals( rewrite_formula(unparseable_nonsense, 3, 5, False, (1, 2, 3, 4)), unparseable_nonsense )
def test_safely_handle_none(self): self.assertIsNone( rewrite_formula(None, 3, 5, False, (1, 2, 3, 4)) )
def test_copied_cellrange_reference_to_uncopied_cellrange_is_rewritten(self): result = rewrite_formula( "=A2:A3", 2, 1, False, (1, 1, 1, 1) ) self.assertEquals(result, '=C3:C4')
def test_copied_absolute_cellrange_reference_to_partially_copied_cellrange_is_not_rewritten(self): result = rewrite_formula( "=$A$2:$A$3", 2, 1, False, (1, 1, 1, 2) ) self.assertEquals(result, '=$A$2:$A$3')
def test_cut_absolute_cellrange_reference_to_uncut_cellrange_is_not_rewritten(self): result = rewrite_formula( "=$A$2:$A$3", 2, 1, True, (1, 1, 1, 1) ) self.assertEquals(result, '=$A$2:$A$3')
def test_dont_rewrite_constants(self): result = rewrite_formula("B3", 3, 5, False, (1, 2, 3, 4)) self.assertEquals(result, 'B3')
def test_safely_handle_none(self): self.assertIsNone(rewrite_formula(None, 3, 5, False, (1, 2, 3, 4)))
def test_copied_cell_reference_to_uncopied_cell_is_rewritten(self): result = rewrite_formula( "=B3", 2, 1, False, (1, 1, 1, 1) ) self.assertEquals(result, '=D4')
def test_cut_cell_reference_to_uncut_cell_is_not_rewritten(self): result = rewrite_formula("=B3", 2, 1, True, (1, 1, 1, 1)) self.assertEquals(result, '=B3')
def test_absolute_copied_cell_reference_to_uncopied_cell_is_not_rewritten(self): result = rewrite_formula( "=$B$3", 2, 1, False, (1, 1, 1, 1) ) self.assertEquals(result, '=$B$3')
def test_copied_cell_reference_to_uncopied_cell_is_rewritten(self): result = rewrite_formula("=B3", 2, 1, False, (1, 1, 1, 1)) self.assertEquals(result, '=D4')
def test_copied_cell_reference_that_moves_off_grid_marked_invalid(self): result = rewrite_formula( "=A1", 1, -1, False, (1, 2, 1, 2) ) self.assertEquals(result, '=#Invalid!')
def test_copied_cell_reference_that_moves_off_grid_marked_invalid(self): result = rewrite_formula("=A1", 1, -1, False, (1, 2, 1, 2)) self.assertEquals(result, '=#Invalid!')
def test_cut_cellrange_reference_to_partially_cut_cellrange_is_not_rewritten(self): result = rewrite_formula( "=A2:A3", 2, 1, True, (1, 1, 1, 2) ) self.assertEquals(result, '=A2:A3')
def test_cut_absolute_cellrange_reference_to_completely_cut_cellrange_is_rewritten( self): result = rewrite_formula("=$A$2:$A$3", 2, 1, True, (1, 1, 1, 3)) self.assertEquals(result, '=$C$3:$C$4')
def test_copied_absolute_cellrange_reference_to_completely_copied_cellrange_is_not_rewritten( self): result = rewrite_formula("=$A$2:$A$3", 2, 1, False, (1, 1, 1, 3)) self.assertEquals(result, '=$A$2:$A$3')
def test_cut_cellrange_reference_to_completely_cut_cellrange_is_rewritten(self): result = rewrite_formula( "=A2:A3", 2, 1, True, (1, 1, 1, 3) ) self.assertEquals(result, '=C3:C4')
def test_cut_absolute_cellrange_reference_to_completely_cut_cellrange_is_rewritten(self): result = rewrite_formula( "=$A$2:$A$3", 2, 1, True, (1, 1, 1, 3) ) self.assertEquals(result, '=$C$3:$C$4')