cobiz / tests /hwp5_tests /test_xmlformat.py
seawolf2357's picture
Add tests
3315103 verified
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
from unittest import TestCase
import logging
from hwp5.dataio import Struct
from hwp5.dataio import INT32, BSTR
from hwp5.treeop import STARTEVENT
from hwp5.treeop import ENDEVENT
from hwp5.xmlformat import element
from hwp5.xmlformat import xmlattr_uniqnames
class TestHello(TestCase):
def test_hello(self):
context = dict(logging=logging)
class SomeStruct(Struct):
@staticmethod
def attributes():
yield INT32, 'a'
yield BSTR, 'b'
class SomeStruct2(Struct):
@staticmethod
def attributes():
yield SomeStruct, 'somestruct'
result = element(
context,
(SomeStruct2, dict(somestruct=dict(a=1, b=u'b')))
)
result = list(result)
# for x in result: x[0](*x[1:])
expected = [
(STARTEVENT, ('SomeStruct2', dict())),
(STARTEVENT, ('SomeStruct', {'attribute-name': 'somestruct',
'a': '1', 'b': 'b'})),
(ENDEVENT, 'SomeStruct'),
(ENDEVENT, 'SomeStruct2'),
]
self.assertEqual(expected, result)
result = element(
context,
(SomeStruct, dict(a=1, b=u'b', c=dict(foo=1)))
)
result = list(result)
# for x in result: x[0](*x[1:])
expected = [
(STARTEVENT, ('SomeStruct', dict(a='1', b='b'))),
(STARTEVENT, ('dict', {'attribute-name': 'c', 'foo': '1'})),
(ENDEVENT, 'dict'),
(ENDEVENT, 'SomeStruct')
]
self.assertEqual(expected, result)
def test_xmlattr_uniqnames(self):
a = [('a', 1), ('b', 2)]
self.assertEqual([('a', 1), ('b', 2)], list(xmlattr_uniqnames(a)))
a = [('a', 1), ('a', 2)]
result = xmlattr_uniqnames(a)
self.assertRaises(Exception, list, result)