diff options
Diffstat (limited to 'tests/test_functions_scene.py')
-rw-r--r-- | tests/test_functions_scene.py | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/tests/test_functions_scene.py b/tests/test_functions_scene.py index 77b2d6f..4ce328a 100644 --- a/tests/test_functions_scene.py +++ b/tests/test_functions_scene.py @@ -1,9 +1,12 @@ -import pytest +"""Tests for scene primitive.""" import xml.etree.ElementTree as et +import pytest + from blc2.functions.scene import Scene from blc2.constants import INFTY, BXW +from blc2.exceptions import LoadError def test_scene(aws): """Test creation and modification of scenes.""" @@ -85,11 +88,12 @@ def test_scene(aws): s1[c1] = -256 assert s1[c1] == 10 + assert s1.copy_data(None) is None + del s1[c4] del s1[c4] def test_scene_serialize(aws, test_xml_eq): - return c1, c2, c3, c4 = aws.fixtures[0].channels s = Scene(aws, id_=123, name="Test Scene", values={c1: 1, c2: 2, c3: 3, c4: 4}) @@ -103,10 +107,39 @@ def test_scene_serialize(aws, test_xml_eq): <value fixture="{f3}" channel="{i3}">3</value> <value fixture="{f4}" channel="{i4}">4</value> </function> -""".format(bxw=BXW.strip("{}"), f1=f1, f2=f2, f3=f3, f4=f4, i1=i1,i2=i2,i3=i3,i4=i4) +""".format(bxw=BXW.strip("{}"), f1=f1, f2=f2, f3=f3, f4=f4, i1=i1,i2=i2,i3=i3,i4=i4).replace("\n", "") et.register_namespace("", BXW) - print(et.tostring(e, encoding="utf-8")) - print(expected) assert test_xml_eq(e, expected) + +def test_scene_deserialize(aws, test_xml_eq): + fail = [ + """<function xmlns={} type="asdf"/>""", + """<asdf/>""", + """<function xmlns={} type="Scene" id="asdf"/>""", + """<function xmlns={} type="Scene" id="123" name="Test Scene"> + <asdf/></function>""", + """<function xmlns={} type="Scene" id="123" name="Test Scene"> + <value/></function>""", + """<function xmlns={} type="Scene" id="123" name="Test Scene"> + <value fixture="10" channel="45"/></function>""", + """<function xmlns={} type="Scene" id="123" name="Test Scene"> + <value fixture="0" channel="10"/></function>""", + """<function xmlns={} type="Scene" id="123" name="Test Scene"> + <value fixture="0" channel="1"/></function>""", + ] + + for case in fail: + case = case.format('"'+BXW.strip("{}")+'"') + with pytest.raises(LoadError): + Scene.deserialize(aws, et.fromstring(case)) + + + case = """<function xmlns={} type="Scene" id="123" name="Test Scene"> + <value fixture="0" channel="0">123</value></function>""" + case = case.format('"'+BXW.strip("{}")+'"').replace('\n', "") + + s = Scene.deserialize(aws, et.fromstring(case)) + + assert test_xml_eq(s.serialize(), case) |