def test_iferror(test_value, error_value, result): if isinstance(test_value, tuple): with in_array_formula_context('A1'): assert iferror(test_value, error_value) == result result = error_value assert iferror(test_value, error_value) == result
def test_iferror(test_value, error_value, result): if isinstance(test_value, tuple): with in_array_formula_context('A1'): assert iferror(test_value, error_value) == result result = 0 if error_value is None else error_value assert iferror(test_value, error_value) == result
def eval_func(excel_formula, cse_array_address=None): """ Call the compiled lambda to evaluate the cell """ if excel_formula.compiled_lambda is None: missing = load_function(excel_formula, locals()) if missing: msg_fmt = 'Function {} is not implemented. ' excel_formula.msg = '\n'.join( msg_fmt.format(f.upper()) + func_status_msg(f)[1] for f in sorted(missing)) try: with in_array_formula_context(cse_array_address): ret_val = in_array_formula_context.fit_to_range( excel_formula.compiled_lambda()) except NameError: error_logger('error', excel_formula.python_code, msg=excel_formula.msg, exc=UnknownFunction) except Exception: error_logger('error', excel_formula.python_code, exc=FormulaEvalError) if error_messages: level = 'warning' if ret_val in ERROR_CODES else 'info' error_logger(level, excel_formula.python_code) return ret_val if ret_val not in (None, EMPTY) else 0
def test_iferror(test_value, error_value, expected): if isinstance(test_value, tuple): with in_array_formula_context('A1'): assert iferror(test_value, error_value) == expected expected = 0 if error_value is None else error_value assert iferror(test_value, error_value) == expected
def run(self): try: in_ctx_1 = return_in_context() with in_array_formula_context('A1'): in_ctx_2 = return_in_context() self.result = not in_ctx_1 and in_ctx_2 except: # noqa: E722 self.result = False
def test_in_array_formula_context(): assert not in_array_formula_context with in_array_formula_context('A1'): assert in_array_formula_context def return_in_context(): return in_array_formula_context assert not return_in_context() with in_array_formula_context('A1'): assert return_in_context() assert not return_in_context() try: with in_array_formula_context('A1'): assert return_in_context() raise PyCelException except PyCelException: pass assert not return_in_context()
def test_in_array_formula_context(): assert not in_array_formula_context with in_array_formula_context('A1'): assert in_array_formula_context def return_in_context(): return bool(in_array_formula_context) assert not return_in_context() with in_array_formula_context('A1'): assert return_in_context() assert not return_in_context() try: with in_array_formula_context('A1'): assert return_in_context() raise PyCelException except PyCelException: pass assert not return_in_context() class AThread(threading.Thread): def run(self): try: in_ctx_1 = return_in_context() with in_array_formula_context('A1'): in_ctx_2 = return_in_context() self.result = not in_ctx_1 and in_ctx_2 except: # noqa: E722 self.result = False thread = AThread() thread.start() thread.join() assert thread.result
def test_array_formula_context_fit_to_range(address, value, result): if address is not None: address = AddressRange(address, sheet='s') with in_array_formula_context(address): assert in_array_formula_context.fit_to_range(value) == result
def test_ifs(expected, value): if any(isinstance(v, tuple) for v in value): with in_array_formula_context('A1'): assert ifs(*value) == expected else: assert ifs(*value) == expected