1# -*- coding: utf-8 -*-
2
3import thriftpy2
4
5from thriftpy2.utils import serialize, deserialize
6
7thriftpy2.install_import_hook()
8
9import container_thrift as container  # noqa
10
11
12def test_list_item():
13    l_item = container.ListItem()
14    l_item.list_string = ['foo', 'bar']
15    l_item.list_list_string = [['foo', 'bar']]
16
17    b = serialize(l_item)
18    l_item2 = deserialize(container.ListItem(), b)
19    assert l_item == l_item2
20
21    l_item3 = container.ListItem()
22    assert l_item != l_item3
23
24
25def test_map_item():
26    m_item = container.MapItem()
27    m_item.map_string = {'foo': 'bar'}
28    m_item.map_map_string = {'foo': {'hello': 'world'}}
29
30    b = serialize(m_item)
31    m_item2 = deserialize(container.MapItem(), b)
32    assert m_item == m_item2
33
34
35def test_mix_item():
36    x_item = container.MixItem()
37    x_item.list_map = [{'foo': 'bar'}]
38    x_item.map_list = {'foo': ['hello', 'world']}
39
40    b = serialize(x_item)
41    x_item2 = deserialize(container.MixItem(), b)
42    assert x_item == x_item2
43
44
45def test_list_struct():
46    l_item = container.ListItem()
47    l_item.list_string = ['foo', 'bar'] * 100
48    l_item.list_list_string = [['foo', 'bar']] * 100
49
50    l_struct = container.ListStruct()
51    l_struct.list_items = [l_item] * 100
52
53    b = serialize(l_struct)
54    l_struct2 = deserialize(container.ListStruct(), b)
55    assert l_struct == l_struct2
56