예제 #1
0
파일: average.py 프로젝트: roocs/clisops
    def _resolve_params(self, **params):
        dims = DimensionParameter(params.get("dims", None)).tuple
        ignore_undetected_dims = params.get("ignore_undetected_dims", False)

        self.params = {
            "dims": dims,
            "ignore_undetected_dims": ignore_undetected_dims
        }
예제 #2
0
def test_validate_error_dimension():
    dims = "wrong"
    with pytest.raises(InvalidParameterValue) as exc:
        DimensionParameter(dims)
    assert (
        str(exc.value) ==
        "Dimensions for averaging must be one of ['time', 'level', 'latitude', 'longitude']"
    )
예제 #3
0
def test_asdict():
    dims = ["time", "latitude"]
    parameter = DimensionParameter(dims)
    assert parameter.asdict() == {"dims": ("time", "latitude")}
예제 #4
0
def test_input_list():
    dims = ["time", "latitude"]
    parameter = DimensionParameter(dims)
    assert parameter.value == ("time", "latitude")
예제 #5
0
def test_value():
    dims = ("time", "latitude")
    parameter = DimensionParameter(dims)
    assert parameter.value == ("time", "latitude")
예제 #6
0
def test_str():
    dims = "time,latitude"
    parameter = DimensionParameter(dims)
    assert parameter.value == ("time", "latitude")
예제 #7
0
def test_raw():
    dims = "time,latitude"
    parameter = DimensionParameter(dims)
    assert parameter.raw == dims
예제 #8
0
def test__str__():
    dims = "time,latitude"
    parameter = DimensionParameter(dims)
    assert (parameter.__str__() == "Dimensions to average over:"
            f"\n ('time', 'latitude')")
    assert parameter.__repr__() == parameter.__str__()
    assert parameter.__unicode__() == parameter.__str__()

    dims = "time"
    parameter = DimensionParameter(dims)
    assert parameter.__str__() == "Dimensions to average over:" f"\n ('time',)"
    assert parameter.__repr__() == parameter.__str__()
    assert parameter.__unicode__() == parameter.__str__()

    # Make sequence from args
    dims = dimensions("time", "latitude")
    parameter = DimensionParameter(dims)
    assert (parameter.__str__() == "Dimensions to average over:"
            f"\n ('time', 'latitude')")
    assert parameter.__repr__() == parameter.__str__()
    assert parameter.__unicode__() == parameter.__str__()

    # Make sequence from single arg
    dims = dimensions("time")
    parameter = DimensionParameter(dims)
    assert parameter.__str__() == "Dimensions to average over:" f"\n ('time',)"
    assert parameter.__repr__() == parameter.__str__()
    assert parameter.__unicode__() == parameter.__str__()

    # Make sequence from comma-separated string
    dims = dimensions("time,latitude")
    parameter = DimensionParameter(dims)
    assert (parameter.__str__() == "Dimensions to average over:"
            f"\n ('time', 'latitude')")
    assert parameter.__repr__() == parameter.__str__()
    assert parameter.__unicode__() == parameter.__str__()

    # Make sequence from tuple of values
    dims = dimensions(("time", "latitude"))
    parameter = DimensionParameter(dims)
    assert (parameter.__str__() == "Dimensions to average over:"
            f"\n ('time', 'latitude')")
    assert parameter.__repr__() == parameter.__str__()
    assert parameter.__unicode__() == parameter.__str__()

    # Make sequence from list of values
    dims = dimensions(["time", "latitude"])
    parameter = DimensionParameter(dims)
    assert (parameter.__str__() == "Dimensions to average over:"
            f"\n ('time', 'latitude')")
    assert parameter.__repr__() == parameter.__str__()
    assert parameter.__unicode__() == parameter.__str__()
예제 #9
0
def test_not_a_string():
    dims = (0, "latitude")
    with pytest.raises(InvalidParameterValue) as exc:
        DimensionParameter(dims)
    assert str(exc.value) == "Each dimension must be a string."
예제 #10
0
def test_class_instance():
    dims = "time"
    parameter = DimensionParameter(dims)
    new_parameter = DimensionParameter(parameter)
    assert new_parameter.value == ("time", )
예제 #11
0
def test_none():
    dims = None
    assert DimensionParameter(dims).asdict() is None
    assert DimensionParameter(dims).value is None
예제 #12
0
def test_empty_string():
    dims = ""
    assert DimensionParameter(dims).asdict() is None
    assert DimensionParameter(dims).value is None