From 2255278b0e81fc20faff48536f524e1466046c8a Mon Sep 17 00:00:00 2001
From: Ben Connors <benconnors@outlook.com>
Date: Sun, 29 Sep 2019 16:51:42 -0400
Subject: Update tests

---
 tests/test_functions_scene.py | 43 ++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 38 insertions(+), 5 deletions(-)

(limited to 'tests/test_functions_scene.py')

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)
-- 
cgit v1.2.3