def test_validator_rejection_number3_length(val, first_invalid_ind, validator_number3_free):
    with pytest.raises(ValueError) as validation_failure:
        validator_number3_free.validate_coerce(val)

    assert ("Invalid value of type {typ} received for the 'prop[{first_invalid_ind}]' property of parent"
            .format(typ= type_str(val[first_invalid_ind]),
                    first_invalid_ind=first_invalid_ind)) in str(validation_failure.value)
def test_validator_rejection_number_free_2d_element_type(val, first_invalid_ind, validator_number_free_2d):
    with pytest.raises(ValueError) as validation_failure:
        validator_number_free_2d.validate_coerce(val)

    assert ("Invalid value of type {typ} received for the 'prop[{first_invalid_ind}]' property of parent"
            .format(typ=type_str(val[first_invalid_ind]),
                    first_invalid_ind=first_invalid_ind)) in str(validation_failure.value)
def test_validator_rejection_number_free_2d_element_value(val, invalid_inds, validator_number_free_2d):
    with pytest.raises(ValueError) as validation_failure:
        validator_number_free_2d.validate_coerce(val)

    invalid_val = val[invalid_inds[0]][invalid_inds[1]]
    invalid_name = 'prop[{}][{}]'.format(*invalid_inds)
    assert ("Invalid value of type {typ} received for the '{invalid_name}' property of parent"
            .format(typ=type_str(invalid_val),
                    invalid_name=invalid_name)) in str(validation_failure.value)