Пример #1
0
    def data(self):
        data = {'properties': Base.data(self)} if self.type == Pattern.DICT \
                                                                        else {}

        for key in ['type', 'min', 'max', 'default', 'text', 'values',
                    'option', 'incr']:
            value = getattr(self, key)
            if value:
                data.setdefault(key, value)

        if self.type in Pattern.list_types:
            data.setdefault('items', self.items.data())

        return data
Пример #2
0
    def data(self):
        data = {'properties': Base.data(self)} if self.type == Pattern.DICT \
                                                                        else {}

        for key in [
                'type', 'min', 'max', 'default', 'text', 'values', 'option',
                'incr'
        ]:
            value = getattr(self, key)
            if value:
                data.setdefault(key, value)

        if self.type in Pattern.list_types:
            data.setdefault('items', self.items.data())

        return data
Пример #3
0
class Test(BaseCase):
    def setUp(self):
        self.base = Base('')

    def test_get_item(self):
        item = self.base.add('1')

        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        self.base.remove_all()

        item = self.base.add(1)
        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        for doc in self.base:
            self.eq(doc, item)

    def test_remove_item(self):
        self.base.add('1')
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add('1')
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

    def test_len(self):
        self.eq(self.base.length(), 0)

        self.base.add(1)
        self.base.add('1')
        self.eq(self.base.length(), 1)

        self.base.add(2)
        self.base.add('3')
        self.eq(self.base.length(), 3)

        self.base.remove(2)
        self.eq(self.base.get(2), None)
        self.base.remove('2')
        self.eq(self.base.length(), 2)

        self.base.remove_all()
        self.eq(self.base.length(), 0)

    def test_data(self):
        self.base.add(1)
        self.base.add(2)
        self.eq(self.base.data(), {'1': {}, '2': {}})

        item_list = self.base.add(3, type_list='list')
        self.eq(item_list.data(), [])
        self.eq(self.base.data(), {'1': {}, '2': {}, '3': []})

    def test_nested_list_data(self):
        self.base.add(1)
        l = self.base.add('d', type_list='list')
        ll = l.add(type_list='list')
        lll = ll.add()
        lll.add('sub1')
        lll.add('sub2')
        item1 = l.add()
        item2 = l.add()
        item1.add('item1')
        item2.add('item2')
        self.eq(self.base.data(), {'1': {}, 'd': [[{'sub1': {}, \
                            'sub2': {}}], {'item1':{}}, {'item2':{}}]})

    def test_list(self):
        base_list = self.base.add(1, type_list='list')
        self.eq(base_list.name, '1')

        item0 = base_list.add()
        self.eq(base_list.length(), 1)
        self.eq(item0.name, '0')
        self.eq(base_list.get('0'), item0)
        self.eq(base_list.get(0), item0)

        item1 = base_list.add(list=True)
        self.eq(base_list.length(), 2)
        self.eq(item1.name, '1')
        self.eq(base_list.get('1'), item1)
        self.eq(base_list.get(1), item1)

        base_list.remove_all()
        self.eq(base_list.length(), 0)

        # remove
        item0 = base_list.add()
        item1 = base_list.add()
        item2 = base_list.add()
        item3 = base_list.add()
        self.eq(base_list.length(), 4)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item1)
        self.eq(item0.name, '0')
        self.eq(item2.name, '1')
        self.eq(item3.name, '2')
        self.eq(item0, base_list.get(0))
        self.eq(item2, base_list.get(1))
        self.eq(item3, base_list.get(2))
        self.eq(None, base_list.get(3))
        self.eq(base_list.length(), 3)

        remove_item = base_list.remove(0)
        self.eq(remove_item, item0)
        self.eq(item2.name, '0')
        self.eq(item3.name, '1')
        self.eq(item2, base_list.get(0))
        self.eq(item3, base_list.get(1))
        self.eq(None, base_list.get(2))
        self.eq(base_list.length(), 2)

        self.eq(base_list.remove(2), None)
        self.eq(base_list.length(), 2)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item3)
        self.eq(item2.name, '0')
        self.eq(item2, base_list.get(0))
        self.eq(None, base_list.get(1))
        self.eq(base_list.length(), 1)

        new_item = base_list.add()
        self.eq(new_item.name, '1')
        self.eq(base_list.get(1), new_item)
        self.eq(base_list.length(), 2)

    def test_parent(self):
        self.eq(self.base.parent, None)

        base1 = self.base.add('1')
        self.eq(base1.parent, self.base)

        base_list = base1.add('list', type_list='list')
        self.eq(base_list.parent, base1)

    def test_path(self):
        self.eq(self.base.path, '')

        base1 = self.base.add('1')
        self.eq(base1.path, '1')

        base1_field = base1.add('field')
        self.eq(base1_field.path, '1.field')

        base_list = base1_field.add('list', type_list='list')
        self.eq(base_list.path, '1.field.list')

        list_item1 = base_list.add()
        list_item1_field = list_item1.add('field')
        list_item2 = base_list.add()
        list_item2_list = list_item2.add('list', type_list='list')
        list_item2_list_item = list_item2_list.add()
        list_item3 = base_list.add(type_list='list')
        list_item3_item = list_item3.add()

        self.eq(list_item1.path, '1.field.list.0')
        self.eq(list_item1_field.path, '1.field.list.0.field')
        self.eq(list_item2.path, '1.field.list.1')
        self.eq(list_item2_list.path, '1.field.list.1.list')
        self.eq(list_item2_list_item.path, '1.field.list.1.list.0')
        self.eq(list_item3.path, '1.field.list.2')
        self.eq(list_item3_item.path, '1.field.list.2.0')

        # get
        self.eq(self.base.get('1'), base1)
        self.eq(self.base.get('1.field'), base1_field)
        self.eq(self.base.get('1.field.list.1.list.0'), list_item2_list_item)
        self.eq(self.base.get('1.field.list.2.0'), list_item3_item)

        self.eq(base1.get('field'), base1_field)
        self.eq(base1.get('field.list.1.list.0'), list_item2_list_item)
        self.eq(base1.get('field.list.2.0'), list_item3_item)

        self.eq(base_list.get('0'), list_item1)
        self.eq(base_list.get('1.list.0'), list_item2_list_item)
        self.eq(base_list.get('2.0'), list_item3_item)

    def test_keys(self):
        items_name = [
            '1', 12, 10, '3', '4', '5', '6', '7', '8', '9', '11', 'a', 'b'
        ]

        for i in xrange(0, len(items_name)):
            item = self.base.add(items_name[i])
            self.eq(item.name, str(items_name[i]))

        self.eq(self.base.keys(),
                [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'a', 'b'])
Пример #4
0
class Test(BaseCase):

    def setUp(self):
        self.base = Base('')

    def test_get_item(self):
        item = self.base.add('1')

        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        self.base.remove_all()

        item = self.base.add(1)
        self.eq(self.base.get(1), item)
        self.eq(self.base.get('1'), item)
        self.eq(self.base['1'], item)
        self.eq(self.base[0], item)

        for doc in self.base:
            self.eq(doc, item)

    def test_remove_item(self):
        self.base.add('1')
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add('1')
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove(1)

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

        self.base.add(1)
        self.base.remove('1')

        self.eq(self.base.get('1'), None)
        self.eq(self.base.get(1), None)
        self.eq(self.base['1'], None)

    def test_len(self):
        self.eq(self.base.length(), 0)

        self.base.add(1)
        self.base.add('1')
        self.eq(self.base.length(), 1)

        self.base.add(2)
        self.base.add('3')
        self.eq(self.base.length(), 3)

        self.base.remove(2)
        self.eq(self.base.get(2), None)
        self.base.remove('2')
        self.eq(self.base.length(), 2)

        self.base.remove_all()
        self.eq(self.base.length(), 0)

    def test_data(self):
        self.base.add(1)
        self.base.add(2)
        self.eq(self.base.data(), {'1': {}, '2': {}})

        item_list = self.base.add(3, type_list='list')
        self.eq(item_list.data(), [])
        self.eq(self.base.data(), {'1': {}, '2': {}, '3': []})

    def test_nested_list_data(self):
        self.base.add(1)
        l = self.base.add('d', type_list='list')
        ll = l.add(type_list='list')
        lll = ll.add()
        lll.add('sub1')
        lll.add('sub2')
        item1 = l.add()
        item2 = l.add()
        item1.add('item1')
        item2.add('item2')
        self.eq(self.base.data(), {'1': {}, 'd': [[{'sub1': {}, \
                            'sub2': {}}], {'item1':{}}, {'item2':{}}]})

    def test_list(self):
        base_list = self.base.add(1, type_list='list')
        self.eq(base_list.name, '1')

        item0 = base_list.add()
        self.eq(base_list.length(), 1)
        self.eq(item0.name, '0')
        self.eq(base_list.get('0'), item0)
        self.eq(base_list.get(0), item0)

        item1 = base_list.add(list=True)
        self.eq(base_list.length(), 2)
        self.eq(item1.name, '1')
        self.eq(base_list.get('1'), item1)
        self.eq(base_list.get(1), item1)

        base_list.remove_all()
        self.eq(base_list.length(), 0)

        # remove
        item0 = base_list.add()
        item1 = base_list.add()
        item2 = base_list.add()
        item3 = base_list.add()
        self.eq(base_list.length(), 4)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item1)
        self.eq(item0.name, '0')
        self.eq(item2.name, '1')
        self.eq(item3.name, '2')
        self.eq(item0, base_list.get(0))
        self.eq(item2, base_list.get(1))
        self.eq(item3, base_list.get(2))
        self.eq(None, base_list.get(3))
        self.eq(base_list.length(), 3)

        remove_item = base_list.remove(0)
        self.eq(remove_item, item0)
        self.eq(item2.name, '0')
        self.eq(item3.name, '1')
        self.eq(item2, base_list.get(0))
        self.eq(item3, base_list.get(1))
        self.eq(None, base_list.get(2))
        self.eq(base_list.length(), 2)

        self.eq(base_list.remove(2), None)
        self.eq(base_list.length(), 2)

        remove_item = base_list.remove(1)
        self.eq(remove_item, item3)
        self.eq(item2.name, '0')
        self.eq(item2, base_list.get(0))
        self.eq(None, base_list.get(1))
        self.eq(base_list.length(), 1)

        new_item = base_list.add()
        self.eq(new_item.name, '1')
        self.eq(base_list.get(1), new_item)
        self.eq(base_list.length(), 2)

    def test_parent(self):
        self.eq(self.base.parent, None)

        base1 = self.base.add('1')
        self.eq(base1.parent, self.base)

        base_list = base1.add('list', type_list='list')
        self.eq(base_list.parent, base1)

    def test_path(self):
        self.eq(self.base.path, '')

        base1 = self.base.add('1')
        self.eq(base1.path, '1')

        base1_field = base1.add('field')
        self.eq(base1_field.path, '1.field')

        base_list = base1_field.add('list', type_list='list')
        self.eq(base_list.path, '1.field.list')

        list_item1 = base_list.add()
        list_item1_field = list_item1.add('field')
        list_item2 = base_list.add()
        list_item2_list = list_item2.add('list', type_list='list')
        list_item2_list_item = list_item2_list.add()
        list_item3 = base_list.add(type_list='list')
        list_item3_item = list_item3.add()

        self.eq(list_item1.path, '1.field.list.0')
        self.eq(list_item1_field.path, '1.field.list.0.field')
        self.eq(list_item2.path, '1.field.list.1')
        self.eq(list_item2_list.path, '1.field.list.1.list')
        self.eq(list_item2_list_item.path, '1.field.list.1.list.0')
        self.eq(list_item3.path, '1.field.list.2')
        self.eq(list_item3_item.path, '1.field.list.2.0')

        # get
        self.eq(self.base.get('1'), base1)
        self.eq(self.base.get('1.field'), base1_field)
        self.eq(self.base.get('1.field.list.1.list.0'), list_item2_list_item)
        self.eq(self.base.get('1.field.list.2.0'), list_item3_item)

        self.eq(base1.get('field'), base1_field)
        self.eq(base1.get('field.list.1.list.0'), list_item2_list_item)
        self.eq(base1.get('field.list.2.0'), list_item3_item)

        self.eq(base_list.get('0'), list_item1)
        self.eq(base_list.get('1.list.0'), list_item2_list_item)
        self.eq(base_list.get('2.0'), list_item3_item)

    def test_keys(self):
        items_name = ['1', 12, 10, '3', '4', '5', '6', '7', '8', '9', '11', 'a', 'b']

        for i in xrange(0, len(items_name)):
            item = self.base.add(items_name[i])
            self.eq(item.name, str(items_name[i]))

        self.eq(self.base.keys(), [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'a', 'b'])
Пример #5
0
 def data(self):
     return {'table': Base.data(self), 'values': dict(self.values)}
Пример #6
0
 def data(self):
     return {'table': Base.data(self), 'values': dict(self.values)}