def test_pepare_inform(self): self.assertRaises(AssertionError, _prepare_inform, {}) self.assertEqual(_prepare_inform({"Foo": "A"}), {"Foo": [("A", _lambda_x_x)]}) self.assertEqual(_prepare_inform({"Foo": ["A", ("B", int)]}), {"Foo": [("A", _lambda_x_x), ("B", int)]}) self.assertEqual( _prepare_inform({"Blah": {"hello": float, "foo": None}, "Fizz": ["A", ("b", object), "B"]}), { "Blah": {"hello": float, "foo": None}.items(), "Fizz": [("A", _lambda_x_x), ("b", object), ("B", _lambda_x_x)], }, )
def test_parse_inform_output(self): _safe_int = lambda s: -1 if s == "" else int(s) self.assertEqual(_parse_inform_output("", object()), {}) query = {"A": [("A", int), "B", ("C", str)], "B": [("X", float), ("Y", _safe_int)]} query = _prepare_inform(query) outp = ( "A:-1337" + PARAM_SEP + "asdf" + PARAM_SEP + "ghjk" + SECTION_SEP + "B:3.14" + PARAM_SEP + "" + SECTION_SEP ) self.assertEqual( _parse_inform_output(outp, query), {"A": {"A": -1337, "B": "asdf", "C": "ghjk"}, "B": {"X": 3.14, "Y": -1}} ) outp2 = outp.replace("-1337", "xxx") self.assertRaisesRegexp( ValueError, "invalid literal for int\(\) with base 10: 'xxx'", _parse_inform_output, outp2, query ) outp3 = outp.replace("-1337", "") self.assertEqual(_parse_inform_output(outp3, query)["A"]["A"], None) def valerr(x): raise ValueError("hello-there") self.assertRaisesRegexp(ValueError, "hello-there", _parse_inform_output, "A:", {"A": [("x", valerr)]})