Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2017-04-13 17:28:47 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-04-13 17:28:50 +0300
commit5a5f1dc8e495d8c3e8c4acce0f45830e968979c2 (patch)
treeffa8e4d9d597179818281782e468ce20b2da800e /tests/python/render_layer
parent9b53bab0b7e29931b42c1969c401fc33a268ec12 (diff)
Unittests for depsgraph layer collection render settings evaluation
Some of the tests are failing at the moment. Those problems were introduced in eba09b1520
Diffstat (limited to 'tests/python/render_layer')
-rw-r--r--tests/python/render_layer/CMakeLists.txt7
-rw-r--r--tests/python/render_layer/render_layer_common.py85
-rw-r--r--tests/python/render_layer/test_evaluation_render_settings_a.py38
-rw-r--r--tests/python/render_layer/test_evaluation_render_settings_b.py39
-rw-r--r--tests/python/render_layer/test_evaluation_render_settings_c.py38
-rw-r--r--tests/python/render_layer/test_evaluation_render_settings_d.py38
-rw-r--r--tests/python/render_layer/test_evaluation_render_settings_e.py39
-rw-r--r--tests/python/render_layer/test_evaluation_render_settings_f.py40
-rw-r--r--tests/python/render_layer/test_evaluation_render_settings_g.py40
9 files changed, 364 insertions, 0 deletions
diff --git a/tests/python/render_layer/CMakeLists.txt b/tests/python/render_layer/CMakeLists.txt
index efe7e280a41..2ec944d693f 100644
--- a/tests/python/render_layer/CMakeLists.txt
+++ b/tests/python/render_layer/CMakeLists.txt
@@ -62,6 +62,13 @@ endmacro()
RENDER_LAYER_TEST(active_collection)
RENDER_LAYER_TEST(collection_rename)
+RENDER_LAYER_TEST(evaluation_render_settings_a)
+RENDER_LAYER_TEST(evaluation_render_settings_b)
+RENDER_LAYER_TEST(evaluation_render_settings_c)
+RENDER_LAYER_TEST(evaluation_render_settings_d)
+RENDER_LAYER_TEST(evaluation_render_settings_e)
+RENDER_LAYER_TEST(evaluation_render_settings_f)
+RENDER_LAYER_TEST(evaluation_render_settings_g)
RENDER_LAYER_TEST(evaluation_visibility_a)
RENDER_LAYER_TEST(evaluation_visibility_b)
RENDER_LAYER_TEST(evaluation_visibility_c)
diff --git a/tests/python/render_layer/render_layer_common.py b/tests/python/render_layer/render_layer_common.py
index 4fb714e429e..586b9dd0af9 100644
--- a/tests/python/render_layer/render_layer_common.py
+++ b/tests/python/render_layer/render_layer_common.py
@@ -693,3 +693,88 @@ class MoveLayerCollectionTesting(MoveSceneCollectionSyncTesting):
layer_collection_src = self.parse_move(src)
layer_collection_dst = self.parse_move(dst)
return layer_collection_src.move_below(layer_collection_dst)
+
+
+class Clay:
+ def __init__(self, extra_kid_layer=False):
+ import bpy
+
+ self._scene = bpy.context.scene
+ self._layer = self._fresh_layer()
+ self._object = bpy.data.objects.new('guinea pig', bpy.data.meshes.new('mesh'))
+
+ # update depsgraph
+ self._scene.update()
+
+ scene_collection_grandma = self._scene.master_collection.collections.new("Grandma")
+ scene_collection_mom = scene_collection_grandma.collections.new("Mom")
+ scene_collection_kid = scene_collection_mom.collections.new("Kid")
+ scene_collection_kid.objects.link(self._object)
+
+ layer_collection_grandma = self._layer.collections.link(scene_collection_grandma)
+ layer_collection_mom = layer_collection_grandma.collections[0]
+ layer_collection_kid = layer_collection_mom.collections[0]
+
+ # store the variables
+ self._scene_collections = {
+ 'grandma': scene_collection_grandma,
+ 'mom': scene_collection_mom,
+ 'kid': scene_collection_kid,
+ }
+ self._layer_collections = {
+ 'grandma': layer_collection_grandma,
+ 'mom': layer_collection_mom,
+ 'kid': layer_collection_kid,
+ }
+
+ if extra_kid_layer:
+ layer_collection_extra = self._layer.collections.link(scene_collection_kid)
+ self._layer_collections['extra'] = layer_collection_extra
+
+ self._update()
+
+ def _fresh_layer(self):
+ import bpy
+
+ # remove all other objects
+ while bpy.data.objects:
+ bpy.data.objects.remove(bpy.data.objects[0])
+
+ layer = self._scene.render_layers.new('Evaluation Test')
+ layer.collections.unlink(layer.collections[0])
+ self._scene.render_layers.active = layer
+
+ # remove all other layers
+ for layer_iter in self._scene.render_layers:
+ if layer_iter != layer:
+ self._scene.render_layers.remove(layer_iter)
+
+ return layer
+
+ def _update(self):
+ """
+ Force depsgrpah evaluation
+ and update pointers to IDProperty collections
+ """
+ ENGINE = 'BLENDER_CLAY'
+
+ self._scene.update() # update depsgraph
+ self._layer.update() # flush depsgraph evaluation
+
+ # change scene settings
+ self._properties = {
+ 'scene': self._scene.collection_properties[ENGINE],
+ 'object': self._object.collection_properties[ENGINE],
+ }
+
+ for key, value in self._layer_collections.items():
+ self._properties[key] = self._layer_collections[key].engine_overrides[ENGINE]
+
+ def get(self, name, data_path):
+ self._update()
+ return getattr(self._properties[name], data_path)
+
+ def set(self, name, data_path, value):
+ self._update()
+ self._properties[name].use(data_path)
+ setattr(self._properties[name], data_path, value)
diff --git a/tests/python/render_layer/test_evaluation_render_settings_a.py b/tests/python/render_layer/test_evaluation_render_settings_a.py
new file mode 100644
index 00000000000..62565adaff1
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_render_settings_a.py
@@ -0,0 +1,38 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+ def test_render_settings(self):
+ """
+ See if the depsgraph evaluation is correct
+ """
+ clay = Clay()
+ self.assertEqual(clay.get('object', 'matcap_icon'), '01')
+ clay.set('scene', 'matcap_icon', '05')
+ self.assertEqual(clay.get('object', 'matcap_icon'), '05')
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()
diff --git a/tests/python/render_layer/test_evaluation_render_settings_b.py b/tests/python/render_layer/test_evaluation_render_settings_b.py
new file mode 100644
index 00000000000..64475dabfc3
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_render_settings_b.py
@@ -0,0 +1,39 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+ def test_render_settings(self):
+ """
+ See if the depsgraph evaluation is correct
+ """
+ clay = Clay()
+ self.assertEqual(clay.get('object', 'matcap_icon'), '01')
+ clay.set('scene', 'matcap_icon', '05')
+ clay.set('grandma', 'matcap_icon', '03')
+ self.assertEqual(clay.get('object', 'matcap_icon'), '03')
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()
diff --git a/tests/python/render_layer/test_evaluation_render_settings_c.py b/tests/python/render_layer/test_evaluation_render_settings_c.py
new file mode 100644
index 00000000000..325a4efdfc0
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_render_settings_c.py
@@ -0,0 +1,38 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+ def test_render_settings(self):
+ """
+ See if the depsgraph evaluation is correct
+ """
+ clay = Clay()
+ self.assertEqual(clay.get('object', 'matcap_icon'), '01')
+ clay.set('mom', 'matcap_icon', '02')
+ self.assertEqual(clay.get('object', 'matcap_icon'), '02')
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()
diff --git a/tests/python/render_layer/test_evaluation_render_settings_d.py b/tests/python/render_layer/test_evaluation_render_settings_d.py
new file mode 100644
index 00000000000..faa3d437aca
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_render_settings_d.py
@@ -0,0 +1,38 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+ def test_render_settings(self):
+ """
+ See if the depsgraph evaluation is correct
+ """
+ clay = Clay()
+ self.assertEqual(clay.get('object', 'matcap_icon'), '01')
+ clay.set('kid', 'matcap_icon', '05')
+ self.assertEqual(clay.get('object', 'matcap_icon'), '05')
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()
diff --git a/tests/python/render_layer/test_evaluation_render_settings_e.py b/tests/python/render_layer/test_evaluation_render_settings_e.py
new file mode 100644
index 00000000000..4e3fe221923
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_render_settings_e.py
@@ -0,0 +1,39 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+ def test_render_settings(self):
+ """
+ See if the depsgraph evaluation is correct
+ """
+ clay = Clay()
+ self.assertEqual(clay.get('object', 'matcap_icon'), '01')
+ clay.set('grandma', 'matcap_icon', '04')
+ clay.set('kid', 'matcap_icon', '05')
+ self.assertEqual(clay.get('object', 'matcap_icon'), '05')
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()
diff --git a/tests/python/render_layer/test_evaluation_render_settings_f.py b/tests/python/render_layer/test_evaluation_render_settings_f.py
new file mode 100644
index 00000000000..1c69c1588af
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_render_settings_f.py
@@ -0,0 +1,40 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+ def test_render_settings(self):
+ """
+ See if the depsgraph evaluation is correct
+ """
+ clay = Clay(extra_kid_layer=True)
+ self.assertEqual(clay.get('object', 'matcap_icon'), '01')
+
+ clay.set('scene', 'matcap_icon', '05')
+ clay.set('extra', 'matcap_icon', '07')
+ self.assertEqual(clay.get('object', 'matcap_icon'), '07')
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()
diff --git a/tests/python/render_layer/test_evaluation_render_settings_g.py b/tests/python/render_layer/test_evaluation_render_settings_g.py
new file mode 100644
index 00000000000..99c4c0e34e0
--- /dev/null
+++ b/tests/python/render_layer/test_evaluation_render_settings_g.py
@@ -0,0 +1,40 @@
+# ############################################################
+# Importing - Same For All Render Layer Tests
+# ############################################################
+
+import unittest
+import os
+import sys
+
+from render_layer_common import *
+
+
+# ############################################################
+# Testing
+# ############################################################
+
+class UnitTesting(RenderLayerTesting):
+ def test_render_settings(self):
+ """
+ See if the depsgraph evaluation is correct
+ """
+ clay = Clay(extra_kid_layer=True)
+ self.assertEqual(clay.get('object', 'matcap_icon'), '01')
+
+ clay.set('mom', 'matcap_icon', '02')
+ clay.set('extra', 'matcap_icon', '06')
+ self.assertEqual(clay.get('object', 'matcap_icon'), '06')
+
+
+# ############################################################
+# Main - Same For All Render Layer Tests
+# ############################################################
+
+if __name__ == '__main__':
+ import sys
+
+ extra_arguments = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
+ sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 2:] if "--" in sys.argv else [])
+
+ UnitTesting._extra_arguments = extra_arguments
+ unittest.main()