def test_union(self):
     data = {"value": "hello"}
     self.assertEqual(parse(data, DUnion), DUnion("hello"))
     data = {"value": 1}
     self.assertEqual(parse(data, DUnion), DUnion(1))
     data = {"value": [1]}
     self.assertEqual(parse(data, DUnion), DUnion([E.one]))
Пример #2
0
    def test_typing(self):
        data = {
            "id": 1,
            "none": "hello"
        }
        self.assertEqual(
            parse(data, D3),
            D3(id_=1, none="hello")
        )

        data = {
            "id": 1,
            "lst": None
        }
        self.assertEqual(
            parse(data, D3),
            D3(id_=1, lst=None)
        )

        data = {
            "id": 1,
            "lst": [1, "hello"]
        }
        self.assertEqual(
            parse(data, D3),
            D3(id_=1, lst=[E.one, E.hello])
        )
    def test_dict(self):
        self.assertEqual(parse({1: 2}, dict), {1: 2})
        self.assertEqual(parse({1: 2}, Dict[int, int]), {1: 2})

        x = frozenset({1, 2})
        self.assertEqual(
            parse({x: {"q", "w"}}, Dict[FrozenSet[int], Set[str]]),
            {x: {"q", "w"}})
 def test_tuple(self):
     self.assertEqual(parse((True, "True"), tuple), (True, "True"))
     self.assertEqual(parse((True, "True"), Tuple[bool, str]),
                      (True, "True"))
     self.assertEqual(parse((True, "True", 1), Tuple[bool, str, int]),
                      (True, "True", 1))
     self.assertEqual(parse((True, False, True), Tuple[bool, ...]),
                      (True, False, True))
    def test_simple_dataclass(self):
        data = {"a": 1}
        self.assertEqual(parse(data, D), D(a=1))

        data = {
            "a": 1,
            "c": "value",
        }
        self.assertEqual(parse(data, D), D(a=1, c="value"))
 def test_myclass(self):
     data = {
         "x": 1,
         "y": "hello",
         "z": "z"
     }
     expected = MyClass(1, E.hello, "z")
     self.assertEqual(parse(data, MyClass), expected)
Пример #7
0
 def test_configs(self):
     data = {
         "id": 1,
         "none": None
     }
     self.assertEqual(
         parse(data, D3, trim_trailing_underscore=True),
         D3(id_=1, none=None)
     )
Пример #8
0
 def test_complex_dataclass(self):
     data = {
         "d": {
             "a": 1,
             "c": "value",
         },
         "e": "hello"
     }
     self.assertEqual(parse(data, D2), D2(d=D(a=1, c="value"), e=E.hello))
Пример #9
0
 def test_should_not_convert_to_bool_when_boolean_field_parsing(self):
     self.assertEqual(parse({}, Foo), Foo(c=False))
     self.assertEqual(parse({"c": "True"}, Foo), Foo(c=True))
     self.assertEqual(parse({"c": "False"}, Foo), Foo(c=True))
     self.assertEqual(parse({"c": "true"}, Foo), Foo(c=True))
     self.assertEqual(parse({"c": "1"}, Foo), Foo(c=True))
     self.assertEqual(parse({"c": "0"}, Foo), Foo(c=True))
     self.assertEqual(parse({"c": ""}, Foo), Foo(c=False))
Пример #10
0
 def test_parse(self):
     data = {
         "a": [1, 2, 3],
         "b": 4
     }
     expected = Foo(a=3, b=Bar(43))
     self.assertEqual(
         parse(data, Foo, type_factories={int: int_factory, Bar: bar_factory}),
         expected
     )
Пример #11
0
 def test_numbers(self):
     self.assertEqual(parse(1, int), 1)
     self.assertEqual(type(parse(1, int)), int)
     self.assertEqual(parse(1, float), 1)
     self.assertEqual(type(parse(1, float)), float)
     self.assertEqual(parse(1 + 1j, complex), 1 + 1j)
     self.assertEqual(type(parse(1, complex)), complex)
Пример #12
0
 def test_should_convert_to_decimal_when_valid_parsing_valid_decimal(self):
     self.assertEqual(parse({"e": "10"}, Foo), Foo(e=Decimal("10")))
     self.assertEqual(parse({"e": "-120"}, Foo), Foo(e=Decimal("-120")))
     self.assertEqual(parse({"e": "13.6"}, Foo), Foo(e=Decimal("13.6")))
     self.assertEqual(parse({"e": "13e6"}, Foo), Foo(e=Decimal("13e6")))
     self.assertEqual(parse({"e": "0"}, Foo), Foo(e=Decimal("0")))
Пример #13
0
 def test_enum(self):
     self.assertEqual(parse("hello", E), E.hello)
     self.assertEqual(parse(1, E), E.one)
     self.assertEqual(parse(E.one, E), E.one)
Пример #14
0
 def test_noargs(self):
     self.assertEqual(parse([1, "q"], List), [1, "q"])
     self.assertEqual(parse({1: "q", "w": 2}, Dict), {1: "q", "w": 2})
Пример #15
0
 def test_any(self):
     self.assertEqual(parse(1, Any), 1)
     self.assertEqual(parse({1, 2}, Any), {1, 2})
Пример #16
0
 def test_list(self):
     self.assertEqual(parse(["q"], list), ["q"])
     self.assertEqual(parse(["q"], List[str]), ["q"])
     self.assertEqual(parse(["q"], Tuple[str]), ("q",))
     self.assertNotEqual(parse(["q"], List[str]), ("q",))
Пример #17
0
 def test_should_convert_to_float_when_valid_parsing_valid_float(self):
     self.assertEqual(parse({"b": "10"}, Foo), Foo(b=10.))
     self.assertEqual(parse({"b": "-120"}, Foo), Foo(b=-120.))
     self.assertEqual(parse({"b": "13.6"}, Foo), Foo(b=13.6))
     self.assertEqual(parse({"b": "13e6"}, Foo), Foo(b=13e6))
     self.assertEqual(parse({"b": "0"}, Foo), Foo(b=0))
Пример #18
0
 def test_should_convert_to_int_when_valid_parsing_valid_int(self):
     self.assertEqual(parse({"a": "10"}, Foo), Foo(a=10))
     self.assertEqual(parse({"a": "-120"}, Foo), Foo(a=-120))