Ejemplo n.º 1
0
    def test_has_value_assigned_repeated(self):
        class Foo(messages.Message):
            pete = messages.StringField(repeated=True)

        message = to_dict.decode_message(Foo, {"pete": []})
        self.assertTrue(message.has_value_assigned('pete'))

        message = to_dict.decode_message(Foo, {"pete": ["sat"]})
        self.assertTrue(message.has_value_assigned('pete'))

        message = to_dict.decode_message(Foo, {"pete": ["sat", "in", "a", "boat"]})
        self.assertTrue(message.has_value_assigned('pete'))
Ejemplo n.º 2
0
    def test_has_value_assigned_repeated(self):
        class Foo(messages.Message):
            pete = messages.StringField(repeated=True)

        message = to_dict.decode_message(Foo, {"pete": []})
        self.assertTrue(message.has_value_assigned('pete'))

        message = to_dict.decode_message(Foo, {"pete": ["sat"]})
        self.assertTrue(message.has_value_assigned('pete'))

        message = to_dict.decode_message(Foo,
                                         {"pete": ["sat", "in", "a", "boat"]})
        self.assertTrue(message.has_value_assigned('pete'))
Ejemplo n.º 3
0
    def test_untyped_field_decode(self):
        class Foo(messages.Message):
            bar = messages.UntypedField()

        f = Foo()
        self.assertEquals(f, to_dict.decode_message(Foo, {}))

        f = Foo()
        f.bar = 123
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": 123}))

        f = Foo()
        f.bar = "meow"
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": "meow"}))

        f = Foo()
        f.bar = True
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": True}))

        f = Foo()
        f.bar = 1.23
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": 1.23}))

        f = Foo()
        f.bar = 1.23
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": 1.23}))

        f = Foo()
        f.bar = None
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": None}))

        f = Foo()
        f.bar = [[123, 1.23, "woof", True], "meow"]
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": [[123, 1.23, "woof", True], "meow"]}))
Ejemplo n.º 4
0
 def testUnrecognizedFieldVariants(self):
     """Test that unrecognized fields are mapped to the right variants."""
     for encoded, expected_variant in (({
             "an_integer": 1,
             "unknown_val": 2
     }, messages.Variant.INT64), ({
             "an_integer": 1,
             "unknown_val": 2.0
     }, messages.Variant.DOUBLE), ({
             "an_integer": 1,
             "unknown_val": "string value"
     }, messages.Variant.STRING), ({
             "an_integer": 1,
             "unknown_val": [1, 2, 3]
     }, messages.Variant.INT64), ({
             "an_integer": 1,
             "unknown_val": [1, 2.0, 3]
     }, messages.Variant.DOUBLE), ({
             "an_integer": 1,
             "unknown_val": [1, "foo", 3]
     }, messages.Variant.STRING), ({
             "an_integer": 1,
             "unknown_val": True
     }, messages.Variant.BOOL)):
         decoded = to_dict.decode_message(MyMessage, encoded)
         self.assertEqual(decoded.an_integer, 1)
         self.assertEqual(1, len(decoded.all_unrecognized_fields()))
         self.assertEqual('unknown_val',
                          decoded.all_unrecognized_fields()[0])
         _, decoded_variant = decoded.get_unrecognized_field_info(
             'unknown_val')
         self.assertEqual(expected_variant, decoded_variant)
Ejemplo n.º 5
0
 def testProtodictUnrecognizedNull(self):
     """Test that unrecognized fields that are None are skipped."""
     decoded = to_dict.decode_message(
         MyMessage,
         {"an_integer": 1, "unrecognized_null": None})
     self.assertEquals(decoded.an_integer, 1)
     self.assertEquals(decoded.all_unrecognized_fields(), [])
Ejemplo n.º 6
0
    def test_untyped_field_repeated_decode(self):
        class Foo(messages.Message):
            bar = messages.UntypedField(repeated=True)

        f = Foo()
        f.bar = [123, "woof", 1.23, True]
        self.assertEquals(f, to_dict.decode_message(Foo, {"bar": [123, "woof", 1.23, True]}))
Ejemplo n.º 7
0
 def testEmptyList(self):
     """Test that empty lists are not ignored."""
     m = MyMessage()
     m.a_repeated = []
     self.assertEquals(m,
                       to_dict.decode_message(MyMessage,
                                                {"a_repeated": []}))
Ejemplo n.º 8
0
    def testNullValues(self):
        """Test that null values overwrite existing values."""
        m = MyMessage()
        m.an_integer = None
        m.a_nested = None

        self.assertEquals(m, to_dict.decode_message(MyMessage, ({"an_integer": None, "a_nested": None})))
Ejemplo n.º 9
0
    def testNumericEnumeration(self):
        """Test that numbers work for enum values."""
        message = to_dict.decode_message(MyMessage, {"an_enum": 2})

        expected_message = MyMessage()
        expected_message.an_enum = MyMessage.Color.GREEN

        self.assertEqual(expected_message, message)
Ejemplo n.º 10
0
    def test_untyped_field_repeated_decode(self):
        class Foo(messages.Message):
            bar = messages.UntypedField(repeated=True)

        f = Foo()
        f.bar = [123, "woof", 1.23, True]
        self.assertEqual(
            f, to_dict.decode_message(Foo, {"bar": [123, "woof", 1.23, True]}))
Ejemplo n.º 11
0
    def testNumericEnumeration(self):
        """Test that numbers work for enum values."""
        message = to_dict.decode_message(MyMessage, {"an_enum": 2})

        expected_message = MyMessage()
        expected_message.an_enum = MyMessage.Color.GREEN

        self.assertEquals(expected_message, message)
Ejemplo n.º 12
0
 def testProtodictUnrecognizedNull(self):
     """Test that unrecognized fields that are None are skipped."""
     decoded = to_dict.decode_message(MyMessage, {
         "an_integer": 1,
         "unrecognized_null": None
     })
     self.assertEqual(decoded.an_integer, 1)
     self.assertEqual(decoded.all_unrecognized_fields(), [])
Ejemplo n.º 13
0
 def testProtodictUnrecognizedFieldName(self):
     """Test that unrecognized fields are saved and can be accessed."""
     decoded = to_dict.decode_message(MyMessage,
                                        ({"an_integer": 1, "unknown_val": 2}))
     self.assertEquals(decoded.an_integer, 1)
     self.assertEquals(1, len(decoded.all_unrecognized_fields()))
     self.assertEquals('unknown_val', decoded.all_unrecognized_fields()[0])
     self.assertEquals((2, messages.Variant.INT64),
                       decoded.get_unrecognized_field_info('unknown_val'))
Ejemplo n.º 14
0
    def test_has_value_assigned(self):
        class Foo(messages.Message):
            not_set = messages.StringField()
            set_null = messages.StringField()

        message = to_dict.decode_message(Foo, {"set_null": None})
        self.assertFalse(message.has_value_assigned('not_set'))
        self.assertTrue(message.has_value_assigned('set_null'))
        self.assertIsNone(message.not_set)
        self.assertIsNone(message.set_null)
Ejemplo n.º 15
0
    def test_explicit_field_name_round_trip(self):
        class Foo(messages.Message):
            bob = messages.StringField(name="robert")
            ryan = messages.StringField()

        f = Foo(bob="smith", ryan="morlok")
        m = to_dict.decode_message(Foo, to_dict.encode_message(f))

        self.assertEquals("smith", m.bob)
        self.assertEquals("morlok", m.ryan)
Ejemplo n.º 16
0
    def test_explicit_field_name_round_trip(self):
        class Foo(messages.Message):
            bob = messages.StringField(name="robert")
            ryan = messages.StringField()

        f = Foo(bob="smith", ryan="morlok")
        m = to_dict.decode_message(Foo, to_dict.encode_message(f))

        self.assertEqual("smith", m.bob)
        self.assertEqual("morlok", m.ryan)
Ejemplo n.º 17
0
    def test_has_value_assigned(self):
        class Foo(messages.Message):
            not_set = messages.StringField()
            set_null = messages.StringField()

        message = to_dict.decode_message(Foo, {"set_null": None})
        self.assertFalse(message.has_value_assigned('not_set'))
        self.assertTrue(message.has_value_assigned('set_null'))
        self.assertIsNone(message.not_set)
        self.assertIsNone(message.set_null)
Ejemplo n.º 18
0
 def testProtodictUnrecognizedFieldName(self):
     """Test that unrecognized fields are saved and can be accessed."""
     decoded = to_dict.decode_message(MyMessage, ({
         "an_integer": 1,
         "unknown_val": 2
     }))
     self.assertEqual(decoded.an_integer, 1)
     self.assertEqual(1, len(decoded.all_unrecognized_fields()))
     self.assertEqual('unknown_val', decoded.all_unrecognized_fields()[0])
     self.assertEqual((2, messages.Variant.INT64),
                      decoded.get_unrecognized_field_info('unknown_val'))
Ejemplo n.º 19
0
    def testNullValues(self):
        """Test that null values overwrite existing values."""
        m = MyMessage()
        m.an_integer = None
        m.a_nested = None

        self.assertEqual(
            m,
            to_dict.decode_message(MyMessage, ({
                "an_integer": None,
                "a_nested": None
            })))
Ejemplo n.º 20
0
 def testProtodictUnrecognizedFieldNumber(self):
     """Test that unrecognized fields are saved and can be accessed."""
     decoded = to_dict.decode_message(MyMessage, {"an_integer": 1, "1001": "unknown", "-123": "negative", "456_mixed": 2})
     self.assertEquals(decoded.an_integer, 1)
     self.assertEquals(3, len(decoded.all_unrecognized_fields()))
     self.assertIn(1001, decoded.all_unrecognized_fields())
     self.assertEquals(('unknown', messages.Variant.STRING),
                       decoded.get_unrecognized_field_info(1001))
     self.assertIn('-123', decoded.all_unrecognized_fields())
     self.assertEquals(('negative', messages.Variant.STRING),
                       decoded.get_unrecognized_field_info('-123'))
     self.assertIn('456_mixed', decoded.all_unrecognized_fields())
     self.assertEquals((2, messages.Variant.INT64),
                       decoded.get_unrecognized_field_info('456_mixed'))
Ejemplo n.º 21
0
    def testDecodeRepeatedDateTimeMsInteger(self):
        message = to_dict.decode_message(MyMessage, {"a_repeated_datetime_ms_integer": [
            datetime.datetime(2012, 9, 30, 15, 31, 50, 262000),
            datetime.datetime(2010, 1, 21, 9, 52),
            datetime.datetime(2000, 1, 1, 1, 0, 59, 999999)
        ]})

        expected_message = MyMessage(
            a_repeated_datetime_ms_integer=[
                datetime.datetime(2012, 9, 30, 15, 31, 50, 262000),
                datetime.datetime(2010, 1, 21, 9, 52),
                datetime.datetime(2000, 1, 1, 1, 0, 59, 999999)])

        self.assertEquals(expected_message, message)
Ejemplo n.º 22
0
    def testConvertStringToNumbers(self):
        """Test that strings passed to integer fields are converted."""
        message = to_dict.decode_message(MyMessage,
                                           {"an_integer": "10",
                                            "a_float": "3.5",
                                            "a_repeated": ["1", "2"],
                                            "a_repeated_float": ["1.5", "2", 10]
                                           })

        self.assertEquals(MyMessage(an_integer=10,
                                    a_float=3.5,
                                    a_repeated=[1, 2],
                                    a_repeated_float=[1.5, 2.0, 10.0]),
                          message)
Ejemplo n.º 23
0
    def test_explicit_field_name(self):
        class Foo(messages.Message):
            bob = messages.StringField(name="robert")
            ryan = messages.StringField()

        m = to_dict.decode_message(Foo, {"robert": "smith", "ryan": "morlok"})

        self.assertEquals("smith", m.bob)
        self.assertEquals("morlok", m.ryan)

        f = Foo()
        f.bob = "smith"
        f.ryan = "morlok"

        self.assertEquals({"robert": "smith", "ryan": "morlok"}, to_dict.encode_message(f))
Ejemplo n.º 24
0
    def test_explicit_field_name_repeated(self):
        class Foo(messages.Message):
            bob = messages.StringField(name="robert", repeated=True)
            ryan = messages.StringField()

        m = to_dict.decode_message(Foo, {"robert": ["smith", "jones"], "ryan": "morlok"})

        self.assertEquals(["smith", "jones"], m.bob)
        self.assertEquals("morlok", m.ryan)

        f = Foo()
        f.bob = ["smith", "jones"]
        f.ryan = "morlok"

        self.assertEquals({"robert": ["smith", "jones"], "ryan": "morlok"}, to_dict.encode_message(f))
Ejemplo n.º 25
0
    def testConvertStringToNumbers(self):
        """Test that strings passed to integer fields are converted."""
        message = to_dict.decode_message(
            MyMessage, {
                "an_integer": "10",
                "a_float": "3.5",
                "a_repeated": ["1", "2"],
                "a_repeated_float": ["1.5", "2", 10]
            })

        self.assertEqual(
            MyMessage(an_integer=10,
                      a_float=3.5,
                      a_repeated=[1, 2],
                      a_repeated_float=[1.5, 2.0, 10.0]), message)
Ejemplo n.º 26
0
    def testDecodeRepeatedDateTimeMsInteger(self):
        message = to_dict.decode_message(
            MyMessage, {
                "a_repeated_datetime_ms_integer": [
                    datetime.datetime(2012, 9, 30, 15, 31, 50, 262000),
                    datetime.datetime(2010, 1, 21, 9, 52),
                    datetime.datetime(2000, 1, 1, 1, 0, 59, 999999)
                ]
            })

        expected_message = MyMessage(a_repeated_datetime_ms_integer=[
            datetime.datetime(2012, 9, 30, 15, 31, 50, 262000),
            datetime.datetime(2010, 1, 21, 9, 52),
            datetime.datetime(2000, 1, 1, 1, 0, 59, 999999)
        ])

        self.assertEqual(expected_message, message)
Ejemplo n.º 27
0
    def test_explicit_field_name(self):
        class Foo(messages.Message):
            bob = messages.StringField(name="robert")
            ryan = messages.StringField()

        m = to_dict.decode_message(Foo, {"robert": "smith", "ryan": "morlok"})

        self.assertEqual("smith", m.bob)
        self.assertEqual("morlok", m.ryan)

        f = Foo()
        f.bob = "smith"
        f.ryan = "morlok"

        self.assertEqual({
            "robert": "smith",
            "ryan": "morlok"
        }, to_dict.encode_message(f))
Ejemplo n.º 28
0
    def testDecodeRepeatedUUID(self):
        from uuid import UUID
        message = to_dict.decode_message(
            MyMessage, {
                "a_repeated_uuid": [
                    UUID("06335e84-2872-4914-8c5d-3ed07d2a2f16"),
                    UUID("16335e84-2872-4914-8c5d-3ed07d2a2f16"),
                    UUID("26335e84-2872-4914-8c5d-3ed07d2a2f16"),
                ]
            })

        expected_message = MyMessage(a_repeated_uuid=[
            UUID("06335e84-2872-4914-8c5d-3ed07d2a2f16"),
            UUID("16335e84-2872-4914-8c5d-3ed07d2a2f16"),
            UUID("26335e84-2872-4914-8c5d-3ed07d2a2f16"),
        ])

        self.assertEqual(expected_message, message)
Ejemplo n.º 29
0
 def testUnrecognizedFieldVariants(self):
     """Test that unrecognized fields are mapped to the right variants."""
     for encoded, expected_variant in (
             ({"an_integer": 1, "unknown_val": 2}, messages.Variant.INT64),
             ({"an_integer": 1, "unknown_val": 2.0}, messages.Variant.DOUBLE),
             ({"an_integer": 1, "unknown_val": "string value"},
              messages.Variant.STRING),
             ({"an_integer": 1, "unknown_val": [1, 2, 3]}, messages.Variant.INT64),
             ({"an_integer": 1, "unknown_val": [1, 2.0, 3]},
              messages.Variant.DOUBLE),
             ({"an_integer": 1, "unknown_val": [1, "foo", 3]},
              messages.Variant.STRING),
             ({"an_integer": 1, "unknown_val": True}, messages.Variant.BOOL)):
         decoded = to_dict.decode_message(MyMessage, encoded)
         self.assertEquals(decoded.an_integer, 1)
         self.assertEquals(1, len(decoded.all_unrecognized_fields()))
         self.assertEquals('unknown_val', decoded.all_unrecognized_fields()[0])
         _, decoded_variant = decoded.get_unrecognized_field_info('unknown_val')
         self.assertEquals(expected_variant, decoded_variant)
Ejemplo n.º 30
0
 def testProtodictUnrecognizedFieldNumber(self):
     """Test that unrecognized fields are saved and can be accessed."""
     decoded = to_dict.decode_message(MyMessage, {
         "an_integer": 1,
         "1001": "unknown",
         "-123": "negative",
         "456_mixed": 2
     })
     self.assertEqual(decoded.an_integer, 1)
     self.assertEqual(3, len(decoded.all_unrecognized_fields()))
     self.assertIn(1001, decoded.all_unrecognized_fields())
     self.assertEqual(('unknown', messages.Variant.STRING),
                      decoded.get_unrecognized_field_info(1001))
     self.assertIn('-123', decoded.all_unrecognized_fields())
     self.assertEqual(('negative', messages.Variant.STRING),
                      decoded.get_unrecognized_field_info('-123'))
     self.assertIn('456_mixed', decoded.all_unrecognized_fields())
     self.assertEqual((2, messages.Variant.INT64),
                      decoded.get_unrecognized_field_info('456_mixed'))
Ejemplo n.º 31
0
    def test_explicit_field_name_repeated(self):
        class Foo(messages.Message):
            bob = messages.StringField(name="robert", repeated=True)
            ryan = messages.StringField()

        m = to_dict.decode_message(Foo, {
            "robert": ["smith", "jones"],
            "ryan": "morlok"
        })

        self.assertEqual(["smith", "jones"], m.bob)
        self.assertEqual("morlok", m.ryan)

        f = Foo()
        f.bob = ["smith", "jones"]
        f.ryan = "morlok"

        self.assertEqual({
            "robert": ["smith", "jones"],
            "ryan": "morlok"
        }, to_dict.encode_message(f))
Ejemplo n.º 32
0
    def test_untyped_field_decode(self):
        class Foo(messages.Message):
            bar = messages.UntypedField()

        f = Foo()
        self.assertEqual(f, to_dict.decode_message(Foo, {}))

        f = Foo()
        f.bar = 123
        self.assertEqual(f, to_dict.decode_message(Foo, {"bar": 123}))

        f = Foo()
        f.bar = "meow"
        self.assertEqual(f, to_dict.decode_message(Foo, {"bar": "meow"}))

        f = Foo()
        f.bar = True
        self.assertEqual(f, to_dict.decode_message(Foo, {"bar": True}))

        f = Foo()
        f.bar = 1.23
        self.assertEqual(f, to_dict.decode_message(Foo, {"bar": 1.23}))

        f = Foo()
        f.bar = 1.23
        self.assertEqual(f, to_dict.decode_message(Foo, {"bar": 1.23}))

        f = Foo()
        f.bar = None
        self.assertEqual(f, to_dict.decode_message(Foo, {"bar": None}))

        f = Foo()
        f.bar = [[123, 1.23, "woof", True], "meow"]
        self.assertEqual(
            f,
            to_dict.decode_message(
                Foo, {"bar": [[123, 1.23, "woof", True], "meow"]}))
Ejemplo n.º 33
0
    def test_repeated_value_null_not_allowed(self):
        class Foo(messages.Message):
            pete = messages.StringField(repeated=True)

        self.assertRaises(messages.ValidationError,
                          lambda: to_dict.decode_message(Foo, {"pete": None}))
Ejemplo n.º 34
0
 def testDecodeCustom(self):
     message = to_dict.decode_message(MyMessage, {"a_custom": 1})
     self.assertEquals(MyMessage(a_custom=1), message)
Ejemplo n.º 35
0
 def testDecodeRepeatedCustom(self):
     message = to_dict.decode_message(
         MyMessage, {"a_repeated_custom": [1, 2, 3]})
     self.assertEquals(MyMessage(a_repeated_custom=[1, 2, 3]), message)
Ejemplo n.º 36
0
 def testDecodeCustom(self):
     message = to_dict.decode_message(MyMessage, {"a_custom": 1})
     self.assertEqual(MyMessage(a_custom=1), message)
Ejemplo n.º 37
0
    def test_repeated_value_null_not_allowed(self):
        class Foo(messages.Message):
            pete = messages.StringField(repeated=True)

        self.assertRaises(messages.ValidationError, lambda: to_dict.decode_message(Foo, {"pete": None}))
Ejemplo n.º 38
0
 def testDecodeRepeatedCustom(self):
     message = to_dict.decode_message(MyMessage,
                                      {"a_repeated_custom": [1, 2, 3]})
     self.assertEqual(MyMessage(a_repeated_custom=[1, 2, 3]), message)
Ejemplo n.º 39
0
 def testEmptyList(self):
     """Test that empty lists are not ignored."""
     m = MyMessage()
     m.a_repeated = []
     self.assertEqual(m,
                      to_dict.decode_message(MyMessage, {"a_repeated": []}))