コード例 #1
0
def invalid_init_input_checks(
    test_case: TestCase,
    nominal_input_name: str,
    nominal_input,
    zero_check: bool = False,
):
    """Tests that the test_case correctly identifies invalid inputs.

    Parameters
    ----------
    test_case
        Object of type TestCase that should contain the relevant check functions.
    nominal_input_name
        String signifying the internal name of the input variable
        (needed for error messages in case the check functions fail.)
    nominal_input
        Nominal value of the input variable.
    zero_check
        Optional boolean signifying whether or not to perform a check where a
        zero value for the input variable is checked.
    """
    if isinstance(test_case, Exception_Bolometry_Derivation):
        if not isinstance(nominal_input, Hashable):
            invalid_input = 1.0
            test_case.init_type_error_check(
                **{nominal_input_name: invalid_input})
        elif isinstance(nominal_input, Sequence):
            invalid_input = "test"  # type:ignore
            test_case.init_type_error_check(
                **{nominal_input_name: invalid_input})
        elif isinstance(nominal_input, get_args(LabeledArray)):
            # Type ignore due to mypy complaining about redefinition of invalid_input

            invalid_input = "test"  # type:ignore
            test_case.init_type_error_check(
                **{nominal_input_name: invalid_input})

            invalid_input = deepcopy(nominal_input)  # type:ignore
            invalid_input *= -1
            test_case.init_value_error_check(
                **{nominal_input_name: invalid_input})

            invalid_input = deepcopy(nominal_input)  # type:ignore
            invalid_input *= np.inf
            test_case.init_value_error_check(
                **{nominal_input_name: invalid_input})

            invalid_input = deepcopy(nominal_input)  # type:ignore
            invalid_input *= -np.inf
            test_case.init_value_error_check(
                **{nominal_input_name: invalid_input})

            invalid_input = deepcopy(nominal_input)  # type:ignore
            invalid_input *= np.nan
            test_case.init_value_error_check(
                **{nominal_input_name: invalid_input})

            if zero_check:
                invalid_input = deepcopy(nominal_input)  # type:ignore
                invalid_input *= 0
                test_case.init_value_error_check(
                    **{nominal_input_name: invalid_input})

            if isinstance(nominal_input, (np.ndarray, DataArray)):
                invalid_input = deepcopy(nominal_input[0])  # type:ignore
                test_case.init_value_error_check(
                    **{nominal_input_name: invalid_input})