def test_getbool__with_known_param_and_valid_text(self): for true_text in ["true", "TRUE", "True", "yes", "on", "1"]: userdata = UserData(param=true_text) value = userdata.getbool("param") assert isinstance(value, bool), "text=%s" % true_text self.assertEqual(value, True) for false_text in ["false", "FALSE", "False", "no", "off", "0"]: userdata = UserData(param=false_text) value = userdata.getbool("param") assert isinstance(value, bool), "text=%s" % false_text self.assertEqual(value, False)
def test_getas__with_known_param_and_valid_text(self): userdata = UserData(param="42") assert "param" in userdata, "ENSURE: known param" value = userdata.getas(int, "param") assert isinstance(value, int) assert value == 42
def test_getas__with_unknown_param_returns_default_value(self): userdata = UserData() assert "param" not in userdata, "ENSURE: unknown param" value = userdata.getas(int, "param", 123) assert isinstance(value, int) self.assertEqual(value, 123)
def test_getas__with_known_param_and_preconverted_value(self): userdata = UserData(param=42) assert "param" in userdata, "ENSURE: known param" value = userdata.getas(int, "param") assert isinstance(value, int) self.assertEqual(value, 42)
def test_userdata_is_dictlike(self): userdata = UserData(name="Foo", number=42) value1 = userdata["name"] value2 = userdata.get("number") value3 = userdata.get("unknown", Unknown) assert isinstance(userdata, dict) self.assertEqual(value1, "Foo") self.assertEqual(value2, 42) assert value3 is Unknown
def test_setitem__stores_value(self): userdata = UserData({"my.scope.param1": "123"}) config = UserDataNamespace("my.scope", userdata) scoped_name = "my.scope.new_param" config["new_param"] = 1234 assert "new_param" in config assert config["new_param"] == 1234 assert scoped_name in config.data assert config.data[scoped_name] == 1234
def test_items__with_scoped_params(self): userdata = UserData({ "my.other_scope.param1": "__OTHER1__", "my.scope.param1": "123", "my.scope.param2": "456", "my.other_scope.param2": "__OTHER2__", }) config = UserDataNamespace("my.scope", userdata) assert sorted(config.items()) == [("param1", "123"), ("param2", "456")]
def test_scoped_keys__with_scoped_params(self): userdata = UserData({ "my.other_scope.param1": "123", "my.scope.param1": "123", "my.scope.param2": "456", "my.other_scope.param2": "123", }) config = UserDataNamespace("my.scope", userdata) assert sorted( config.scoped_keys()) == ["my.scope.param1", "my.scope.param2"]
def test_getas__with_known_param_and_preconverted_value_and_valuetype( self): userdata = UserData(param=42) assert "param" in userdata, "ENSURE: known param" def parse_int(text): return int(text) value = userdata.getas(parse_int, "param", valuetype=int) assert isinstance(value, int) self.assertEqual(value, 42)
def test_length__with_scoped_params(self): userdata1 = UserData({"my.scope.param1": "123"}) userdata2 = UserData({ "my.other_scope.param1": "123", "my.scope.param1": "123", "my.scope.param2": "456", }) userdata3 = UserData({ "my.other_scope.param1": "123", "my.scope.param1": "123", "my.scope.param2": "456", "my.scope.param3": "789", "my.other_scope.param2": "123", }) config = UserDataNamespace("my.scope") config.data = userdata1 assert len(config) == 1 config.data = userdata2 assert len(config) == 2 config.data = userdata3 assert len(config) == 3
def test_getbool__with_unknown_param_returns_default_value(self): userdata = UserData() value = userdata.getint("param", 1.2) assert isinstance(value, float) self.assertEqual(value, 1.2)
def test_getbool__with_unknown_param_without_default_returns_false(self): userdata = UserData() value = userdata.getfloat("param") self.assertEqual(value, False)
def test_getbool__with_known_param_and_invalid_text_raises_ValueError( self): userdata = UserData(param="__BAD_VALUE__") self.assertRaises(ValueError, userdata.getbool, "param")
def test_getint__retrieves_value_when_scoped_param_exists(self): userdata = UserData({"my.scope.param2": "12"}) config = UserDataNamespace("my.scope", userdata) assert config.getint("param2") == 12
def test_getfloat__with_unknown_param_without_default_returns_zero(self): userdata = UserData() value = userdata.getfloat("param") self.assertEqual(value, 0.0)
def test_getfloat__with_known_param_and_invalid_text_raises_ValueError( self): userdata = UserData(param="__BAD_NUMBER__") self.assertRaises(ValueError, userdata.getfloat, "param")
def test_getfloat__with_known_param_and_valid_text(self): for valid_text in ["1.2", "2", "-1E+3", "+2.34E-5"]: userdata = UserData(param=valid_text) value = userdata.getfloat("param") assert isinstance(value, float) self.assertEqual(value, float(valid_text))
def test_getint__with_known_param_and_valid_text(self): userdata = UserData(param="42") value = userdata.getint("param") assert isinstance(value, int) self.assertEqual(value, 42)
def test_getbool__retrieves_value_when_scoped_param_exists(self): userdata = UserData({"my.scope.param3": "yes"}) config = UserDataNamespace("my.scope", userdata) assert config.getbool("param3") == True
def test_getbool__returns_default_when_scoped_param_not_exists(self): userdata = UserData({}) config = UserDataNamespace("my.scope", userdata) assert config.getint("UNKNOWN_PARAM", True) == True assert config.getint("UNKNOWN_PARAM", False) == False
def test_contains__when_scoped_param_not_exists(self): userdata = UserData({"my.scope.param": 12}) config = UserDataNamespace("my.scope", userdata) assert "UNKNOWN_PARAM" not in config assert not ("UNKNOWN_PARAM" in config)
def test_getitem__returns_value_when_param_exists(self): userdata = UserData({"my.scope.param": "123"}) config = UserDataNamespace("my.scope", userdata) assert config["param"] == "123"
def test_length__returns_zero_without_params(self): userdata = UserData({"my.other_scope.param1": "123"}) config = UserDataNamespace("my.scope", userdata) assert len(config) == 0
def test_getitem__raises_error_when_param_not_exists(self): userdata = UserData({"my.scope.param": "123"}) config = UserDataNamespace("my.scope", userdata) with pytest.raises(KeyError): _ = config["UNKNOWN_PARAM"]
def test_getas__with_known_param_and_invalid_text_raises_ValueError(self): userdata = UserData(param="__BAD_NUMBER__") assert "param" in userdata, "ENSURE: known param" self.assertRaises(ValueError, userdata.getas, int, "param")
def test_getas__with_unknown_param_without_default_returns_none(self): userdata = UserData() assert "param" not in userdata, "ENSURE: unknown param" value = userdata.getas(int, "param") assert value is None
def test_get__returns_default_when_scoped_param_not_exists(self): config = UserDataNamespace("my.scope", UserData({})) assert config.get("UNKNOWN_PARAM", "DEFAULT1") == "DEFAULT1" assert config.get("UNKNOWN_PARAM", "DEFAULT2") == "DEFAULT2"
def test_getint__returns_default_when_scoped_param_not_exists(self): userdata = UserData({}) config = UserDataNamespace("my.scope", userdata) assert config.getint("UNKNOWN_PARAM", 123) == 123 assert config.getint("UNKNOWN_PARAM", 321) == 321
def setup_userdata(self): if not isinstance(self.userdata, UserData): self.userdata = UserData(self.userdata) if self.userdata_defines: # -- ENSURE: Cmd-line overrides configuration file parameters. self.userdata.update(self.userdata_defines)
def test_get__retrieves_value_when_scoped_param_exists(self): userdata = UserData({"my.scope.param1": 12}) config = UserDataNamespace("my.scope", userdata) assert config.get("param1") == 12 assert config["param1"] == 12