def test_evaluate_exceptions(fixture_dir): excel_compiler = ExcelCompiler.from_file( os.path.join(fixture_dir, 'fixture.xlsx.yml')) address = AddressCell('s!A1') excel_compiler.cell_map[str(address)] = _Cell(address, None, '=__REF__("s!A2")', excel_compiler.excel) address = AddressCell('s!A2') excel_compiler.cell_map[str(address)] = _Cell(address, None, '=$', excel_compiler.excel) with pytest.raises(FormulaParserError): excel_compiler.evaluate(address) result = excel_compiler.validate_calcs(address) assert 'exceptions' in result assert len(result['exceptions']) == 1
def test_evaluate_empty_intersection(fixture_dir): excel_compiler = ExcelCompiler.from_file( os.path.join(fixture_dir, 'fixture.xlsx.yml')) address = AddressCell('s!A1') excel_compiler.cell_map[str(address)] = _Cell( address, None, '=_R_(str(_REF_("s!A1:A2") & _REF_("s!B1:B2")))', excel_compiler.excel) assert excel_compiler.evaluate(address) == NULL_ERROR
def test_evaluate_empty_intersection(fixture_dir): excel_compiler = ExcelCompiler.from_file( os.path.join(fixture_dir, 'fixture.xlsx.yml')) address = AddressCell('s!A1') excel_compiler.cell_map[str(address)] = _Cell( address, None, '=_R_(str(_REF_("s!A1:A2") & _REF_("s!B1:B2")))', excel_compiler.excel ) assert excel_compiler.evaluate(address) == NULL_ERROR
def test_evaluate_exceptions(fixture_dir): excel_compiler = ExcelCompiler.from_file( os.path.join(fixture_dir, 'fixture.xlsx.yml')) address = AddressCell('s!A1') excel_compiler.cell_map[str(address)] = _Cell( address, None, '=__REF__("s!A2")', excel_compiler.excel ) address = AddressCell('s!A2') excel_compiler.cell_map[str(address)] = _Cell( address, None, '=$', excel_compiler.excel ) with pytest.raises(FormulaParserError): excel_compiler.evaluate(address) result = excel_compiler.validate_calcs(address) assert 'exceptions' in result assert len(result['exceptions']) == 1
def test_close_enough(a, b, rel, tol, expected): cell = _Cell('A1', a) kwargs = {'value': b} if rel is not None: kwargs['rel'] = rel if tol is not None: kwargs['rel'] = tol assert cell.close_enough(**kwargs) == expected cell.value = b kwargs['value'] = a assert cell.close_enough(**kwargs) == expected
def test_unknown_functions(fixture_dir, msg, formula): excel_compiler = ExcelCompiler.from_file( os.path.join(fixture_dir, 'fixture.xlsx.yml')) address = AddressCell('s!A1') excel_compiler.cell_map[str(address)] = _Cell(address, None, formula, excel_compiler.excel) with pytest.raises(UnknownFunction, match=msg): excel_compiler.evaluate(address) result = excel_compiler.validate_calcs([address]) assert 'not-implemented' in result assert len(result['not-implemented']) == 1
def test_unknown_functions(fixture_dir, msg, formula): excel_compiler = ExcelCompiler.from_file( os.path.join(fixture_dir, 'fixture.xlsx.yml')) address = AddressCell('s!A1') excel_compiler.cell_map[str(address)] = _Cell( address, None, formula, excel_compiler.excel ) with pytest.raises(UnknownFunction, match=msg): excel_compiler.evaluate(address) result = excel_compiler.validate_calcs([address]) assert 'not-implemented' in result assert len(result['not-implemented']) == 1
def test_cell_repr(excel): cell_range = _Cell('sheet!A1', value=0) assert 'sheet!A1 -> 0' == repr(cell_range)
def test_cell_repr(excel): cell_range = _Cell('sheet!A1', value=0) assert 'sheet!A1 -> 0' == repr(cell_range)