def test_produces_correct_python(self): self.assertEquals( get_python_formula_from_parse_tree( parse('=[x * A1 for x in range(5)]')), '[x * worksheet[(1,1)].value for x in range(5)]') self.assertEquals( get_python_formula_from_parse_tree( parse('=[x in A1:B3 for x in range(5)]')), '[x in CellRange(worksheet,(1,1),(2,3)) for x in range(5)]') self.assertEquals( get_python_formula_from_parse_tree(parse('={1 -> B1}')), '{1 :worksheet[(2,1)].value }') self.assertEquals( get_python_formula_from_parse_tree( parse('=(lambda x -> C1 * x)(2)')), '(lambda x :worksheet[(3,1)].value * x)(2)')
def test_flattens_rewrites_and_removes_1st_char(self, mock_rewrite): mock_rewrite.return_value = Mock() mock_rewrite.return_value.flatten.return_value = '123' result = get_python_formula_from_parse_tree(sentinel.parsed_formula) self.assertCalledOnce(mock_rewrite, sentinel.parsed_formula) self.assertCalledOnce(mock_rewrite.return_value.flatten) self.assertEquals(result, '23')
def test_flattens_rewrites_and_removes_1st_char(self, mock_rewrite): mock_rewrite.return_value = Mock() mock_rewrite.return_value.flatten.return_value = '123' result = get_python_formula_from_parse_tree(sentinel.parsed_formula) self.assertCalledOnce(mock_rewrite, sentinel.parsed_formula) self.assertCalledOnce(mock_rewrite.return_value.flatten) self.assertEquals(result, '23')
def test_produces_correct_python(self): self.assertEquals( get_python_formula_from_parse_tree(parse( '=[x * A1 for x in range(5)]' )), '[x * worksheet[(1,1)].value for x in range(5)]' ) self.assertEquals( get_python_formula_from_parse_tree(parse( '=[x in A1:B3 for x in range(5)]' )), '[x in CellRange(worksheet,(1,1),(2,3)) for x in range(5)]' ) self.assertEquals( get_python_formula_from_parse_tree(parse('={1 -> B1}')), '{1 :worksheet[(2,1)].value }' ) self.assertEquals( get_python_formula_from_parse_tree(parse('=(lambda x -> C1 * x)(2)')), '(lambda x :worksheet[(3,1)].value * x)(2)' )
def test_converts_cell_references_and_adds_space(self): self.assertEquals( get_python_formula_from_parse_tree(parse('=A1')), "worksheet[(1,1)].value " )
def test_converts_formula_starting_with_equals(self): self.assertEquals(get_python_formula_from_parse_tree(parse('=1')), "1") self.assertEquals(get_python_formula_from_parse_tree(parse('=1+2')), "1+2")
def test_converts_cell_references_and_adds_space(self): self.assertEquals(get_python_formula_from_parse_tree(parse('=A1')), "worksheet[(1,1)].value ")
def test_converts_formula_starting_with_equals(self): self.assertEquals(get_python_formula_from_parse_tree(parse('=1')), "1") self.assertEquals(get_python_formula_from_parse_tree(parse('=1+2')), "1+2")