Пример #1
0
 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')
Пример #3
0
    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)'
     )
Пример #5
0
 def _set_formula(self, value):
     self._python_formula = None
     if value is None:
         self._formula = None
     elif type(value) == str or type(value) == unicode:
         self._formula = value
         if value.startswith('='):
             try:
                 parsed_formula = parser.parse(value)
                 self.dependencies = get_dependencies_from_parse_tree(parsed_formula)
                 self._python_formula = get_python_formula_from_parse_tree(parsed_formula)
             except FormulaError, e:
                 self.dependencies = []
                 self._python_formula = '_raise(FormulaError("{}"))'.format(e)
Пример #6
0
 def _set_formula(self, value):
     self._python_formula = None
     if value is None:
         self._formula = None
     elif type(value) == str or type(value) == unicode:
         self._formula = value
         if value.startswith('='):
             try:
                 parsed_formula = parser.parse(value)
                 self.dependencies = get_dependencies_from_parse_tree(
                     parsed_formula)
                 self._python_formula = get_python_formula_from_parse_tree(
                     parsed_formula)
             except FormulaError, e:
                 self.dependencies = []
                 self._python_formula = '_raise(FormulaError("{}"))'.format(
                     e)
 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")
Пример #9
0
 def test_converts_cell_references_and_adds_space(self):
     self.assertEquals(get_python_formula_from_parse_tree(parse('=A1')),
                       "worksheet[(1,1)].value ")
Пример #10
0
 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")