Beispiel #1
0
    def test_pickle_sequence(self) -> None:
        control = I32List([1, 2, 3, 4])
        self.pickle_round_robin(control)

        digits = Digits(data=[Integers(tiny=1), Integers(tiny=2), Integers(large=0)])
        assert digits.data
        self.pickle_round_robin(digits.data)
Beispiel #2
0
 def test_optional_struct_creation(self) -> None:
     with self.assertRaises(TypeError):
         easy(1, [1, 1], 'test', Integers(tiny=1))  # type: ignore
     easy(val=1, an_int=Integers(small=500))
     with self.assertRaises(TypeError):
         easy(name=b'binary')  # type: ignore
     # Only Required Fields don't accept None
     easy(val=5, an_int=None)
Beispiel #3
0
 def test_optional_struct_creation(self) -> None:
     with self.assertRaises(TypeError):
         # pyre-fixme[19]: Expected 0 positional arguments.
         easy(1, [1, 1], "test", Integers(tiny=1))
     easy(val=1, an_int=Integers(small=500))
     with self.assertRaises(TypeError):
         # pyre-fixme[6]: Expected `Optional[str]` for 1st param but got `bytes`.
         easy(name=b"binary")
     # Only Required Fields don't accept None
     easy(val=5, an_int=None)
Beispiel #4
0
 def test_init_with_invalid_field(self) -> None:
     with self.assertRaises(TypeError):
         # pyre-ignore[28]: intentionally used a wrong field name "val_lists" for test
         easy(val=1,
              an_int=Integers(small=300),
              name="foo",
              val_lists=[1, 2, 3, 4])
Beispiel #5
0
 def test_call_replace_required(self) -> None:
     x = hard(val=5, val_list=[1, 2], name="something",
              an_int=Integers(small=1), other='non default')
     y = x(other=None)
     self.assertEqual(y.other, "some default")
     with self.assertRaises(TypeError):
         x(name=None)  # type: ignore
Beispiel #6
0
    def test_required_fields_not_enforced(self) -> None:
        # None is not acceptable as a string
        hard(  # type: ignore
            val=1, val_list=[1, 2], name=None, an_int=Integers(small=1)
        )

        hard(val=1, val_list=[1, 2])  # type: ignore
Beispiel #7
0
 def test_pickle_hard_struct(self) -> None:
     control = hard(
         val=0,
         val_list=[1, 2, 3, 4],
         name='foo',
         an_int=Integers(tiny=1),
     )
     self.pickle_round_robin(control)
Beispiel #8
0
 def test_serialize_hard_struct(self) -> None:
     control = hard(
         val=0,
         val_list=[1, 2, 3, 4],
         name='foo',
         an_int=Integers(tiny=1),
     )
     self.thrift_serialization_round_robin(control)
Beispiel #9
0
    def test_required_fields(self) -> None:
        with self.assertRaises(TypeError):
            # None is not acceptable as a string
            hard(val=1, val_list=[1, 2], name=None,  # type: ignore
                 an_int=Integers(small=1))

        with self.assertRaises(TypeError):
            hard(val=1, val_list=[1, 2])  # type: ignore
Beispiel #10
0
 def test_struct(self) -> None:
     x = easy(val=1, an_int=Integers(small=300), name="foo", val_list=[1, 2, 3, 4])
     self.assertTrue(inspectable(x))
     self.assertTrue(inspectable(easy))
     r = inspect(x)
     self.assertEqual(r.name, "easy")
     self.assertEqual(r.kind, StructType.STRUCT)
     self.assertEqual(r.annotations, {"anno1": "foo", "bar": "1"})
Beispiel #11
0
 def test_union(self) -> None:
     x = Integers(large=100)
     self.assertTrue(inspectable(x))
     self.assertTrue(inspectable(Integers))
     r = inspect(x)
     self.assertEqual(r.name, "Integers")
     self.assertEqual(r.kind, StructType.UNION)
     self.assertEqual(r.annotations, {})
Beispiel #12
0
    def test_serialize_Integers_union(self) -> None:
        control = Integers(medium=1337)
        fixtures: Mapping[Protocol, bytes] = {
            Protocol.COMPACT: b"5\xf2\x14\x00",
            Protocol.BINARY: b"\x08\x00\x03\x00\x00\x059\x00",
            Protocol.JSON: b'{"medium":1337}',
        }

        self.thrift_serialization_round_robin(control, fixtures)
Beispiel #13
0
 def test_copy(self) -> None:
     x = easy(val=1,
              an_int=Integers(small=300),
              name="foo",
              val_list=[1, 2, 3, 4])
     dif_list = copy.copy(x.val_list)
     self.assertEqual(x.val_list, dif_list)
     dif_int = copy.copy(x.an_int)
     self.assertEqual(x.an_int, dif_int)
Beispiel #14
0
 def test_union_usage(self) -> None:
     value = hash('i64')
     x = Integers(large=value)
     self.assertIsInstance(x, Union)
     self.assertEqual(x.type, x.get_type())
     self.assertEqual(x.type, Integers.Type.large)
     self.assertEqual(x.value, value)
     # Hashing Works
     s = set([x])
     self.assertIn(x, s)
     # Repr is useful
     rx = repr(x)
     self.assertIn(str(value), rx)
     self.assertIn(x.type.name, rx)
Beispiel #15
0
 def test_union_dir(self) -> None:
     expected = [
         "digits",
         "large",
         "medium",
         "name_",
         "small",
         "tiny",
         "type",
         "unbounded",
         "value",
     ]
     self.assertEqual(expected, dir(Integers()))
     self.assertEqual(expected, dir(Integers))
Beispiel #16
0
 def test_call_replace(self) -> None:
     x = easy(val=1, an_int=Integers(small=300), name="foo")
     y = x(name="bar")
     self.assertNotEqual(x.name, y.name)
     z = y(an_int=None, val=4)
     self.assertNotEqual(x.an_int, z.an_int)
     self.assertNotEqual(x.val, z.val)
     self.assertIsNone(z.an_int.value)
     self.assertEqual(y.val, x.val)
     self.assertEqual(y.an_int, x.an_int)
     x = easy()
     self.assertIsNotNone(x.val)
     self.assertIsNotNone(x.val_list)
     self.assertIsNone(x.name)
     self.assertIsNotNone(x.an_int)
Beispiel #17
0
 def test_serialize_hard_struct(self) -> None:
     control = hard(
         val=0, val_list=[1, 2, 3, 4], name="foo", an_int=Integers(tiny=1)
     )
     fixtures: Mapping[Protocol, bytes] = {
         Protocol.COMPACT: b"\x15\x00\x19E\x02\x04\x06\x08\x18\x03foo\x1c\x13\x01"
         b"\x00\x18\x0csome default\x00",
         Protocol.BINARY: b"\x08\x00\x01\x00\x00\x00\x00\x0f\x00\x02\x08\x00\x00\x00"
         b"\x04\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00"
         b"\x00\x00\x04\x0b\x00\x03\x00\x00\x00\x03foo\x0c\x00\x04"
         b"\x03\x00\x01\x01\x00\x0b\x00\x05\x00\x00\x00\x0csome def"
         b"ault\x00",
         Protocol.JSON: b'{"val":0,"val_list":[1,2,3,4],"name":"foo","an_int":{"tiny'
         b'":1},"other":"some default"}',
         Protocol.COMPACT_JSON: b'{"1":{"i32":0},"2":{"lst":["i32",4,1,2,3,4]},"3":'
         b'{"str":"foo"},"4":{"rec":{"1":{"i8":1}}},"5":{"str":"some default"}}',
     }
     self.thrift_serialization_round_robin(control, fixtures)
Beispiel #18
0
    def test_str(self) -> None:
        self.assertEqual(
            "easy(val=0, val_list=i[], name=None, an_int=Integers(type=EMPTY, value=None))",
            str(easy()),
        )
        self.assertEqual(
            "easy(val=0, val_list=i[], name=None, an_int=Integers(type=EMPTY, value=None))",
            repr(easy()),
        )

        x = easy(val=1, an_int=Integers(small=300), name="foo", val_list=[1, 2, 3, 4])
        self.assertEqual(
            "easy(val=1, val_list=i[1, 2, 3, 4], name='foo', an_int=Integers(type=small, value=300))",
            str(x),
        )
        self.assertEqual(
            "easy(val=1, val_list=i[1, 2, 3, 4], name='foo', an_int=Integers(type=small, value=300))",
            repr(x),
        )
Beispiel #19
0
 def test_wrong_type(self) -> None:
     x = Integers(small=1)
     with self.assertRaises(TypeError):
         x.large
     x.small
Beispiel #20
0
 def test_multiple_values(self) -> None:
     with self.assertRaises(TypeError):
         Integers(small=1, large=2)
Beispiel #21
0
 def test_hashability(self) -> None:
     hash(Integers())
Beispiel #22
0
 def test_isset_Union(self) -> None:
     i = Integers(large=2)
     with self.assertRaises(TypeError):
         Struct.isset(i).large
Beispiel #23
0
 def test_isset_Union(self) -> None:
     i = Integers(large=2)
     with self.assertRaises(TypeError):
         # pyre-fixme[6]: Expected `HasIsSet[Variable[thrift.py3.types._T]]` for
         #  1st param but got `Integers`.
         Struct.isset(i).large
Beispiel #24
0
 def test_serialize_Integers_union(self) -> None:
     control = Integers(medium=1337)
     self.thrift_serialization_round_robin(control)
Beispiel #25
0
 def test_pickle_Integers_union(self) -> None:
     control = Integers(large=2 ** 32)
     self.pickle_round_robin(control)