Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
        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
Beispiel #4
0
        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
Beispiel #5
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
Beispiel #6
0
 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
Beispiel #7
0
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()
Beispiel #8
0
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()
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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