# vim: set fileencoding=utf-8
import unittest
from bemani.protocol.xml import XmlDecoder
class TestXmlDecoder(unittest.TestCase):
def test_detect_encoding(self) -> None:
xml = XmlDecoder(b'', "ascii")
tree = xml.get_tree()
self.assertEqual(xml.encoding, "utf-8")
self.assertEqual(tree, None)
xml = XmlDecoder(b'', "ascii")
tree = xml.get_tree()
self.assertEqual(xml.encoding, "utf-8")
self.assertEqual(tree, None)
def test_decode_void(self) -> None:
xml = XmlDecoder(b"", "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {})
self.assertEqual(tree.data_type, "void")
self.assertEqual(tree.value, None)
xml = XmlDecoder(b"", "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {})
self.assertEqual(tree.data_type, "void")
self.assertEqual(tree.value, None)
def test_decode_attributes(self) -> None:
xml = XmlDecoder(b'', "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {"attr1": "foo", "attr2": "bar"})
self.assertEqual(tree.data_type, "void")
self.assertEqual(tree.value, None)
xml = XmlDecoder(b'', "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {"attr1": "foo", "attr2": "bar"})
self.assertEqual(tree.data_type, "void")
self.assertEqual(tree.value, None)
xml = XmlDecoder(b'', "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {"attr1": "foo", "attr2": "bar"})
self.assertEqual(tree.data_type, "void")
self.assertEqual(tree.value, None)
def test_decode_bin(self) -> None:
xml = XmlDecoder(b'DEADBEEF', "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {})
self.assertEqual(tree.data_type, "bin")
self.assertEqual(tree.value, b"\xDE\xAD\xBE\xEF")
xml = XmlDecoder(b'\nDEADBEEF\n', "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {})
self.assertEqual(tree.data_type, "bin")
self.assertEqual(tree.value, b"\xDE\xAD\xBE\xEF")
xml = XmlDecoder(b' D E A D B E E F ', "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {})
self.assertEqual(tree.data_type, "bin")
self.assertEqual(tree.value, b"\xDE\xAD\xBE\xEF")
def test_decode_array(self) -> None:
xml = XmlDecoder(b'1 2 3 4', "ascii")
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {})
self.assertEqual(tree.data_type, "u32")
self.assertEqual(tree.value, [1, 2, 3, 4])
xml = XmlDecoder(
b'\n1\n2\n3\n4\n', "ascii"
)
tree = xml.get_tree()
self.assertEqual(tree.children, [])
self.assertEqual(tree.name, "node")
self.assertEqual(tree.attributes, {})
self.assertEqual(tree.data_type, "u32")
self.assertEqual(tree.value, [1, 2, 3, 4])