def test_map(self):
     self.assertEqual(FlxBuilder.fromValue({"a": 12}),
                      bytes([97, 0, 1, 3, 1, 1, 1, 12, 4, 2, 36, 1]))
     self.assertEqual(
         FlxBuilder.fromValue({
             "a": 12,
             "": 45
         }), bytes([0, 97, 0, 2, 4, 4, 2, 1, 2, 45, 12, 4, 4, 4, 36, 1]))
 def test_json(self):
     p_string = '''{
         "age": 38,
         "weight": 73.1,
         "flags": [true, false, true, true],
         "name": "Maxim",
         "address": {
             "city": "Bla",
             "zip": 12345,
             "countryCode": "XX"
         }
     }'''
     p_json = json.loads(p_string)
     buffer = FlxBuilder.fromValue(p_json)
     flx = FlxValue.from_bytes(buffer)
     self.assertEqual(flx.age.value(), 38)
     self.assertEqual(flx.weight.value(), 73.1)
     self.assertEqual(len(flx.flags), 4)
     self.assertEqual(flx.flags[0].value(), True)
     self.assertEqual(flx.flags[1].value(), False)
     self.assertEqual(flx.flags[2].value(), True)
     self.assertEqual(flx.flags[3].value(), True)
     self.assertEqual(flx.name.value(), "Maxim")
     self.assertEqual(flx.address.city.value(), "Bla")
     self.assertEqual(flx.address.zip.value(), 12345)
     self.assertEqual(flx.address.countryCode.value(), "XX")
 def test_class(self):
     person = Person("Max")
     buffer = FlxBuilder.fromValue(person)
     flx = FlxValue.from_bytes(buffer)
     self.assertEqual(flx.age.value(), 38)
     self.assertEqual(flx.weight.value(), 73.1)
     self.assertEqual(flx.name.value(), "Max")
 def test_dict(self):
     obj = {
         "age": 38,
         "weight": 73.1,
         "flags": [True, False, True, True],
         "name": "Maxim",
         "address": {
             "city": "Bla",
             "zip": 12345,
             "countryCode": "XX"
         }
     }
     buffer = FlxBuilder.fromValue(obj)
     flx = FlxValue.from_bytes(buffer)
     self.assertEqual(flx.age.value(), 38)
     self.assertEqual(flx.weight.value(), 73.1)
     self.assertEqual(len(flx.flags), 4)
     self.assertEqual(flx.flags[0].value(), True)
     self.assertEqual(flx.flags[1].value(), False)
     self.assertEqual(flx.flags[2].value(), True)
     self.assertEqual(flx.flags[3].value(), True)
     self.assertEqual(flx.name.value(), "Maxim")
     self.assertEqual(flx.address.city.value(), "Bla")
     self.assertEqual(flx.address.zip.value(), 12345)
     self.assertEqual(flx.address.countryCode.value(), "XX")
 def test_vector_of_dicts_with_same_keys(self):
     self.assertEqual(
         FlxBuilder.fromValue([{
             "something": 12
         }, {
             "something": 45
         }]),
         bytes([
             115, 111, 109, 101, 116, 104, 105, 110, 103, 0, 1, 11, 1, 1, 1,
             12, 4, 6, 1, 1, 45, 4, 2, 8, 4, 36, 36, 4, 40, 1
         ]))
 def test_vector_with_same_key_map(self):
     buffer = FlxBuilder.fromValue([{"something": 12}, {"something": 45}])
     flx = FlxValue.from_bytes(buffer)
     self.assertEqual(len(flx), 2)
     self.assertEqual(flx[0].something.num(), 12)
     self.assertEqual(flx[1].something.num(), 45)
 def test_blob(self):
     self.assertEqual(FlxBuilder.fromValue(bytes([1, 2, 3])),
                      bytes([3, 1, 2, 3, 3, 100, 1]))
    def test_vector(self):
        self.assertEqual(FlxBuilder.fromValue([1, 2]), bytes([1, 2, 2, 64, 1]))
        self.assertEqual(FlxBuilder.fromValue([-1, 256]),
                         bytes([255, 255, 0, 1, 4, 65, 1]))
        self.assertEqual(FlxBuilder.fromValue([-45, 256000]),
                         bytes([211, 255, 255, 255, 0, 232, 3, 0, 8, 66, 1]))
        # self.assertEqual(FlxBuilder.fromValue([-45, 9223372036854775807]), bytes([211, 255, 255, 255, 0, 232, 3, 0, 8, 66, 1]))
        self.assertEqual(
            FlxBuilder.fromValue([1.1, -256.0]),
            bytes([
                154, 153, 153, 153, 153, 153, 241, 63, 0, 0, 0, 0, 0, 0, 112,
                192, 16, 75, 1
            ]))
        self.assertEqual(FlxBuilder.fromValue([1, 2, 4]),
                         bytes([1, 2, 4, 3, 76, 1]))
        self.assertEqual(FlxBuilder.fromValue([-1, 256, 4]),
                         bytes([255, 255, 0, 1, 4, 0, 6, 77, 1]))
        self.assertEqual(FlxBuilder.fromValue([-1, 256, 4]),
                         bytes([255, 255, 0, 1, 4, 0, 6, 77, 1]))
        # self.assertEqual(FlxBuilder.fromValue([-45, 256000, 4]), bytes([
        #     211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 4, 0, 0, 0, 0, 0, 0, 0, 24, 79, 1
        # ]))

        self.assertEqual(FlxBuilder.fromValue([[61], 64]),
                         bytes([1, 61, 2, 2, 64, 44, 4, 4, 40, 1]))
        self.assertEqual(
            FlxBuilder.fromValue(["foo", "bar", "baz"]),
            bytes([
                3, 102, 111, 111, 0, 3, 98, 97, 114, 0, 3, 98, 97, 122, 0, 3,
                15, 11, 7, 3, 60, 1
            ]))
        self.assertEqual(
            FlxBuilder.fromValue(["foo", "bar", "baz", "foo", "bar", "baz"]),
            bytes([
                3, 102, 111, 111, 0, 3, 98, 97, 114, 0, 3, 98, 97, 122, 0, 6,
                15, 11, 7, 18, 14, 10, 6, 60, 1
            ]))
        self.assertEqual(FlxBuilder.fromValue([True, False, True]),
                         bytes([3, 1, 0, 1, 3, 144, 1]))
        self.assertEqual(
            FlxBuilder.fromValue(["foo", 1, -5, 1.3, True]),
            bytes([
                3, 102, 111, 111, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0,
                0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 251, 255, 255, 255, 255,
                255, 255, 255, 205, 204, 204, 204, 204, 204, 244, 63, 1, 0, 0,
                0, 0, 0, 0, 0, 20, 4, 4, 15, 104, 45, 43, 1
            ]))
 def _build_single_string(self, value, data):
     fbb = FlxBuilder(1)
     fbb._addString(value)
     data1 = fbb._finish()
     self.assertEqual(data1, data)