class Test3(Test2): # test overwriting defaults parameters_default = [Parameter("a", 3), Parameter("c", 4)]
def test_parameters(): """ test mixing Parameterized """ param = Parameter("a", 1, int, "help", extra={"b": 3}) assert isinstance(str(param), str) p_string = pickle.dumps(param) param_new = pickle.loads(p_string) assert param.__dict__ == param_new.__dict__ assert param is not param_new assert param_new.extra["b"] == 3 class Test1(Parameterized): parameters_default = [param] t = Test1() assert t.parameters["a"] == 1 assert t.get_parameter_default("a") == 1 t = Test1(parameters={"a": 2}) assert t.parameters["a"] == 2 assert t.get_parameter_default("a") == 1 with pytest.raises(ValueError): t = Test1(parameters={"b": 3}) t = Test1() ps = t._parse_parameters({"b": 3}, check_validity=False) assert ps["a"] == 1 assert ps["b"] == 3 class Test2(Test1): # also test conversion of default parameters parameters_default = [Parameter("b", "2", int, "help")] t = Test2() assert t.parameters["a"] == 1 assert t.parameters["b"] == 2 t = Test2(parameters={"a": 10, "b": 20}) assert t.parameters["a"] == 10 assert t.parameters["b"] == 20 assert t.get_parameter_default("a") == 1 assert t.get_parameter_default("b") == "2" with pytest.raises(KeyError): t.get_parameter_default("c") class Test3(Test2): # test overwriting defaults parameters_default = [Parameter("a", 3), Parameter("c", 4)] t = Test3() assert t.parameters["a"] == 3 assert t.get_parameter_default("a") == 3 assert set(t.parameters.keys()) == {"a", "b", "c"} # test get_all_parameters function after having used Parameters p1 = get_all_parameters() for key in ["value", "description"]: p2 = get_all_parameters(key) assert set(p1) == p2.keys() # test whether sphinx_display_parameters runs lines = [":param parameters:"] sphinx_display_parameters(None, "class", "Test1", Test1, None, lines) assert len(lines) > 1
class Test2(Test1): # also test conversion of default parameters parameters_default = [Parameter("b", "2", int, "help")]
class Test3(Parameterized): parameters_default = [Parameter("a", [0, 1, 2], np.array)]
class Test4(Parameterized): parameters_default = [Parameter("a", 1, str)]
class Test1(Parameterized): parameters_default = [Parameter("a", 1, float)]
class Test2(Parameterized): parameters_default = [Parameter("a", np.arange(3), np.array)]
class Test3(Test1): parameters_default = [Parameter("b", 3)]
class Test2a(Parameterized): parameters_default = [ Parameter("a", 1), Parameter("b", 2, hidden=True) ]
class Test1(Parameterized): parameters_default = [Parameter("a", 1), Parameter("b", 2)]
class Test2(Test1): parameters_default = [Parameter("b", 2, int, "another word")]
class Test5(Parameterized): parameters_default = [Parameter("a", math.nan, float)]