Exemple #1
0
def test_nonnegative():
    s = Serializer()
    assert (len(s.buffer) == 0)
    s.write_nonnegative(0)
    assert (len(s.buffer) == 1)
    d = Deserializer(s.buffer)
    v, n = d.read_nonnegative()
    assert (v == 0)
    assert (n == 1)
    assert (len(s.buffer) == 1)

    s.write_nonnegative(1)
    v, n = d.read_nonnegative()
    assert (v == 1)
    assert (n == 1)

    s.write_nonnegative(127)
    v, n = d.read_nonnegative()
    assert (v == 127)
    assert (n == 1)

    s.write_nonnegative(128)
    v, n = d.read_nonnegative()
    assert (v == 128)
    assert (n == 2)
Exemple #2
0
def test_byte():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)
    for test_value in [0, 1, 0x07f, 0x080, 0x0ff]:
        s.write_byte(None, test_value)
        value = d.read_byte(None)
        assert value == test_value
Exemple #3
0
    def build_header(self, buffer, transformed):
        length = len(buffer)
        header = 1 if transformed else 0
        header = header | (length << 1)

        result = bytearray()
        Serializer.write_variable(result, header)
        return result
Exemple #4
0
def test_int64():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)
    for test_value in [-9223372036854775808, -1, 0, 1, 9223372036854775807]:
        s.write_int64(None, test_value)
        value = d.read_int64(None)
        assert value == test_value
Exemple #5
0
def test_float64():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)
    for test_value in [0.01]:
        s.write_float64(None, test_value)
        value = d.read_float64(None)
        assert value == test_value
Exemple #6
0
def test_int16():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)
    for test_value in [-32768, -1, 0, 1, 32767]:
        s.write_int16(None, test_value)
        value = d.read_int16(None)
        assert value == test_value
Exemple #7
0
def test_int32():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)
    for test_value in [-2147483648, -1, 0, 1, 2147483647]:
        s.write_int32(None, test_value)
        value = d.read_int32(None)
        assert value == test_value
Exemple #8
0
def test_bytes():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)

    test_value = b'abcd'
    s.write_bytes(None, test_value)
    assert len(buffer) == 5
    value = d.read_bytes(None)
    assert value == test_value
Exemple #9
0
def test_cell():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)

    metaprop = MetaProperty(None, MetaProperty.CELL, runtime_type=MyCell1)

    test_value = MyCell1()
    test_value.foo = 1
    s.write_cell(metaprop, test_value)

    value = d.read_cell(metaprop)
    assert value == test_value
Exemple #10
0
def test_datetime():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)
    for test_value in [
            datetime.datetime.now(),
            datetime.datetime(1969, 12, 31)
    ]:
        s.write_datetime(None, test_value)
        value = d.read_datetime(None)
        truncated = test_value - datetime.timedelta(
            microseconds=(test_value.microsecond % 1000))
        assert value == truncated
Exemple #11
0
def test_list():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)

    # list(int32)
    metaprop = MetaProperty('List', 13, details=[MetaProperty('None', 5)])

    test_value = [1, 2, 3]
    s.write_list(metaprop, test_value)

    value = d.read_list(metaprop)
    assert len(value) == len(test_value)
    assert value == test_value
Exemple #12
0
def test_partial_serialization():
    s = Serializer(bytearray())
    d = Deserializer(s.buffer)

    c1 = MyCell1()
    c1.foo = 1
    c2 = MyCell2()
    c2.foo = 1
    c2.bar = 'bar'

    metaprop1 = MetaProperty(None, MetaProperty.CELL, runtime_type=type(c1))
    metaprop2 = MetaProperty(None, MetaProperty.CELL, runtime_type=type(c2))

    l2 = Serializer.length_cell(metaprop2, c2)
    s.write_cell(metaprop2, c2)
    assert l2 == len(s.buffer)
    v2 = d.read_cell(metaprop2)
    assert c2 == v2

    d.buffer = s.buffer = bytearray()
    d.pos = 0
    l1 = Serializer.length_cell(metaprop1, c2)
    s.write_cell(metaprop1, c2)
    assert l1 == len(s.buffer)
    assert l1 < l2
    v1 = d.read_cell(metaprop1)
    assert c1 == v1
Exemple #13
0
def test_map():
    buffer = bytearray()
    s = Serializer(buffer)
    d = Deserializer(buffer)

    # map(int32, string)
    metaprop = MetaProperty(
        'Map', 14, details=[MetaProperty(None, 5),
                            MetaProperty(None, 9)])

    test_value = {1: "one", 2: 'two', 3: 'three'}
    s.write_map(metaprop, test_value)

    value = d.read_map(metaprop)
    assert len(value) == len(test_value)
    assert value == test_value
Exemple #14
0
def test_string():
    if sys.version_info.major >= 3:
        strs = ['abcd', '한글']
    else:
        strs = ['abcd']
    for s in strs:
        encoded = s.encode('utf-8')
        assert Serializer.length_utf8(s) == len(encoded)

        buffer = bytearray()
        serializer = Serializer(buffer)
        serializer.write_string(None, s)
        assert bytes(buffer[1:]) == encoded

        d = Deserializer(buffer)
        decoded = d.read_string(None)
        assert decoded == s
        assert d.pos == len(buffer)
Exemple #15
0
    def send(self, event):
        serializer = Serializer()
        serializer.write_int32(None, event.type_id())
        event.serialize(serializer)
        buffer = serializer.buffer

        transformed = False
        if self.has_channel_strategy and event._transform:
            transformed, buffer = self.channel_strategy.before_send(buffer)

        header_buffer = self.build_header(buffer, transformed)

        data = bytes(header_buffer + buffer)

        if self.has_heartbeat_strategy:
            self.heartbeat_strategy.on_send(event)

        self._send(data)
Exemple #16
0
def test_serialization():
    c1 = MyCell1()
    c1.foo = 1

    s = Serializer()
    c1.serialize(s)
    assert len(s.buffer) == c1.get_length()

    c2 = MyCell1()
    assert c1 != c2
    c2.deserialize(Deserializer(s.buffer))
    assert c1 == c2
Exemple #17
0
def test_serialization():
    fp1 = Fingerprint(33)
    fp1.touch(31)
    fp1.touch(32)

    s = Serializer()
    fp1.serialize(s)
    assert len(s.buffer) == fp1.get_length()

    fp2 = Fingerprint(33)
    assert fp1 != fp2
    fp2.deserialize(Deserializer(s.buffer))
    assert fp1 == fp2
Exemple #18
0
 def _get_length(self, tag, target_type, flag):
     result = 0
     if tag.base is not None:
         length, flag = self._get_length(tag.base, target_type, flag)
         result += length
         if not flag:
             return result, flag
     if len(tag.props) == 0:
         return result, flag
     base = tag.offset
     for index, prop in enumerate(tag.props):
         if prop.name.startswith('_'):
             if prop.name == '_Handle':
                 continue
         if self.fingerprint.get(base + index):
             result += Serializer.get_length(prop,
                                             self.values[base + index])
     if (target_type is not None) and (target_type.__name__
                                       == tag.type_name):
         flag = False
     return result, flag
Exemple #19
0
 def get_length(self):
     return Serializer.get_length_nonnegative(
         self.length) + self.length_in_bytes