[Bf-blender-cvs] [5a5f1dc8e49] blender2.8: Unittests for depsgraph layer collection render settings evaluation
Dalai Felinto
noreply at git.blender.org
Thu Apr 13 16:29:16 CEST 2017
Commit: 5a5f1dc8e495d8c3e8c4acce0f45830e968979c2
Author: Dalai Felinto
Date: Thu Apr 13 16:28:47 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB5a5f1dc8e495d8c3e8c4acce0f45830e968979c2
Unittests for depsgraph layer collection render settings evaluation
Some of the tests are failing at the moment.
Those problems were introduced in eba09b1520
===================================================================
M tests/python/render_layer/CMakeLists.txt
M tests/python/render_layer/render_layer_common.py
A tests/python/render_layer/test_evaluation_render_settings_a.py
A tests/python/render_layer/test_evaluation_render_settings_b.py
A tests/python/render_layer/test_evaluation_render_settings_c.py
A tests/python/render_layer/test_evaluation_render_settings_d.py
A tests/python/render_layer/test_evaluation_render_settings_e.py
A tests/python/render_layer/test_evaluation_render_settings_f.py
A tests/python/render_layer/test_evaluation_render_settings_g.py
===================================================================
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
+# #######################################################
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list