diff options
Diffstat (limited to 'tests/python/render_layer')
19 files changed, 161 insertions, 2 deletions
diff --git a/tests/python/render_layer/CMakeLists.txt b/tests/python/render_layer/CMakeLists.txt index 526b169bc3d..5ff985073e3 100644 --- a/tests/python/render_layer/CMakeLists.txt +++ b/tests/python/render_layer/CMakeLists.txt @@ -170,4 +170,6 @@ RENDER_LAYER_TEST(scene_copy_b) RENDER_LAYER_TEST(scene_copy_c) RENDER_LAYER_TEST(scene_copy_d) RENDER_LAYER_TEST(scene_copy_e) +RENDER_LAYER_TEST(scene_copy_f) +RENDER_LAYER_TEST(scene_delete) RENDER_LAYER_TEST(scene_write_read) diff --git a/tests/python/render_layer/render_layer_common.py b/tests/python/render_layer/render_layer_common.py index f6e16459ed3..adc32f062ea 100644 --- a/tests/python/render_layer/render_layer_common.py +++ b/tests/python/render_layer/render_layer_common.py @@ -55,9 +55,15 @@ def get_layer(layer): name = layer.get(b'name') data['name'] = name - data['active_object'] = layer.get((b'basact', b'object', b'id', b'name'))[2:] data['engine'] = layer.get(b'engine') + active_base = layer.get_pointer(b'basact') + if active_base: + ob = active_base.get_pointer(b'object') + data['active_object'] = ob.get((b'id', b'name'))[2:] + else: + data['active_object'] = "" + objects = [] for link in linkdata_iter(layer, b'object_bases'): ob = link.get_pointer(b'object') @@ -747,6 +753,7 @@ class Clay: layer = self._scene.render_layers.new('Evaluation Test') layer.collections.unlink(layer.collections[0]) + self._scene.render_layers.active = layer bpy.context.workspace.render_layer = layer # remove all other layers diff --git a/tests/python/render_layer/test_evaluation_selectability_a.py b/tests/python/render_layer/test_evaluation_selectability_a.py index 6faebac79aa..393f406eefc 100644 --- a/tests/python/render_layer/test_evaluation_selectability_a.py +++ b/tests/python/render_layer/test_evaluation_selectability_a.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Selectability Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_selectability_b.py b/tests/python/render_layer/test_evaluation_selectability_b.py index f2a11865d09..ea05710ebcf 100644 --- a/tests/python/render_layer/test_evaluation_selectability_b.py +++ b/tests/python/render_layer/test_evaluation_selectability_b.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Selectability Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_selectability_c.py b/tests/python/render_layer/test_evaluation_selectability_c.py index 5ec6d6e7d9c..8487ee1a8af 100644 --- a/tests/python/render_layer/test_evaluation_selectability_c.py +++ b/tests/python/render_layer/test_evaluation_selectability_c.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Selectability Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_selectability_d.py b/tests/python/render_layer/test_evaluation_selectability_d.py index 3ce9c07c907..b2a924dd6bc 100644 --- a/tests/python/render_layer/test_evaluation_selectability_d.py +++ b/tests/python/render_layer/test_evaluation_selectability_d.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Selectability Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_selectability_e.py b/tests/python/render_layer/test_evaluation_selectability_e.py index df308845292..70ede58cb9e 100644 --- a/tests/python/render_layer/test_evaluation_selectability_e.py +++ b/tests/python/render_layer/test_evaluation_selectability_e.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Selectability Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_visibility_a.py b/tests/python/render_layer/test_evaluation_visibility_a.py index a3a6bb261f5..b9f57539330 100644 --- a/tests/python/render_layer/test_evaluation_visibility_a.py +++ b/tests/python/render_layer/test_evaluation_visibility_a.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Visibility Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_visibility_b.py b/tests/python/render_layer/test_evaluation_visibility_b.py index 4f81cd540e2..712cc9bd277 100644 --- a/tests/python/render_layer/test_evaluation_visibility_b.py +++ b/tests/python/render_layer/test_evaluation_visibility_b.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Visibility Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_visibility_c.py b/tests/python/render_layer/test_evaluation_visibility_c.py index 6b88f6e3c3a..5e378fb07e3 100644 --- a/tests/python/render_layer/test_evaluation_visibility_c.py +++ b/tests/python/render_layer/test_evaluation_visibility_c.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Visibility Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_visibility_d.py b/tests/python/render_layer/test_evaluation_visibility_d.py index b19166bd750..e4f0957bd26 100644 --- a/tests/python/render_layer/test_evaluation_visibility_d.py +++ b/tests/python/render_layer/test_evaluation_visibility_d.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Visibility Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_visibility_e.py b/tests/python/render_layer/test_evaluation_visibility_e.py index f9f11cb8f23..33c6d7be111 100644 --- a/tests/python/render_layer/test_evaluation_visibility_e.py +++ b/tests/python/render_layer/test_evaluation_visibility_e.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Visibility Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_evaluation_visibility_f.py b/tests/python/render_layer/test_evaluation_visibility_f.py index 497087cb9ca..66948b343cb 100644 --- a/tests/python/render_layer/test_evaluation_visibility_f.py +++ b/tests/python/render_layer/test_evaluation_visibility_f.py @@ -26,6 +26,7 @@ class UnitTesting(RenderLayerTesting): layer = scene.render_layers.new('Visibility Test') layer.collections.unlink(layer.collections[0]) + scene.render_layers.active = layer workspace.render_layer = layer scene_collection_mom = scene.master_collection.collections.new("Mom") diff --git a/tests/python/render_layer/test_object_copy.py b/tests/python/render_layer/test_object_copy.py index 69e05d46140..1e6e9e5b889 100644 --- a/tests/python/render_layer/test_object_copy.py +++ b/tests/python/render_layer/test_object_copy.py @@ -42,6 +42,7 @@ class UnitTesting(RenderLayerTesting): layer.collections.link(subzero) scene.render_layers.active_index = len(scene.render_layers) - 1 + bpy.context.workspace.render_layer = bpy.context.scene.render_layers['Fresh new Layer'] if mode == 'DUPLICATE': # assuming the latest layer is the active layer diff --git a/tests/python/render_layer/test_object_link_b.py b/tests/python/render_layer/test_object_link_b.py index e0228594be7..b18eb844fc4 100644 --- a/tests/python/render_layer/test_object_link_b.py +++ b/tests/python/render_layer/test_object_link_b.py @@ -19,6 +19,7 @@ class UnitTesting(RenderLayerTesting): See if we can link objects via bpy.context.scene_collection """ import bpy + bpy.context.scene.render_layers.active_index = len(bpy.context.scene.render_layers) - 1 bpy.context.workspace.render_layer = bpy.context.scene.render_layers['Viewport'] master_collection = bpy.context.scene_collection self.do_object_link(master_collection) diff --git a/tests/python/render_layer/test_operator_context.py b/tests/python/render_layer/test_operator_context.py index 05a8957fa20..5055d957551 100644 --- a/tests/python/render_layer/test_operator_context.py +++ b/tests/python/render_layer/test_operator_context.py @@ -88,6 +88,10 @@ class UnitTesting(RenderLayerTesting): layer.collections.active_index = 3 self.assertEqual(layer.collections.active.name, 'scorpion') + # Change active scene layer (do it for workspace too just to don't get mangled in workspace bugs) + scene = bpy.context.scene + scene.render_layers.active_index = len(scene.render_layers) - 2 + self.assertEqual(scene.render_layers.active.name, "Viewport") bpy.context.workspace.render_layer = bpy.context.scene.render_layers['Viewport'] # old layer diff --git a/tests/python/render_layer/test_scene_copy_d.py b/tests/python/render_layer/test_scene_copy_d.py index 54988f49036..f398650eade 100644 --- a/tests/python/render_layer/test_scene_copy_d.py +++ b/tests/python/render_layer/test_scene_copy_d.py @@ -16,7 +16,7 @@ from render_layer_common import * class UnitTesting(RenderLayerTesting): def test_scene_layers_link(self): """ - See if scene copying 'FULL_COPY' is working for scene layers + See if scene copying 'LINK_OBJECTS' is working for scene layers """ import os ROOT = self.get_root() diff --git a/tests/python/render_layer/test_scene_copy_f.py b/tests/python/render_layer/test_scene_copy_f.py new file mode 100644 index 00000000000..fd4298675f2 --- /dev/null +++ b/tests/python/render_layer/test_scene_copy_f.py @@ -0,0 +1,94 @@ +# ############################################################ +# Importing - Same For All Render Layer Tests +# ############################################################ + +import unittest +import os +import sys + +from render_layer_common import * + + +# ############################################################ +# Testing +# ############################################################ + +class UnitTesting(RenderLayerTesting): + def test_shared_layer_collections_copy_full(self): + """ + See if scene copying 'FULL_COPY' is keeping collections visibility + and selectability. + """ + import os + import bpy + + scene = bpy.context.scene + + hide_lookup = [0, 1, 1, 0] + hide_lookup_sub = [1, 0, 1] + + hide_select_lookup = [0, 0, 1, 1] + hide_select_lookup_sub = [1, 0, 1, 0] + new_collections = [] + + # clean everything + for layer in scene.render_layers: + while layer.collections: + layer.collections.unlink(layer.collections[0]) + + # create new collections + for i in range(4): + collection = scene.master_collection.collections.new(str(i)) + new_collections.append(collection) + + for j in range(3): + sub_collection = collection.collections.new("{0}:{1}".format(i, j)) + + # link to the original scene + for layer in scene.render_layers: + for i, collection in enumerate(new_collections): + layer.collections.link(collection) + self.assertEqual(layer.collections[-1], layer.collections[i]) + + layer.collections[i].hide = hide_lookup[i] + layer.collections[i].hide_select = hide_select_lookup[i] + + for j, sub_collection in enumerate(layer.collections[i].collections): + sub_collection.hide = hide_lookup_sub[j] + sub_collection.hide_select = hide_select_lookup_sub[j] + + # copy scene + bpy.ops.scene.new(type='FULL_COPY') + new_scene = bpy.context.scene + self.assertNotEqual(scene, new_scene) + + # update depsgrah + scene.update() # update depsgraph + + # compare scenes + for h, layer in enumerate(scene.render_layers): + new_layer = new_scene.render_layers[h] + + for i, collection in enumerate(layer.collections): + new_collection = new_layer.collections[i] + self.assertEqual(collection.hide, new_collection.hide) + self.assertEqual(collection.hide_select, new_collection.hide_select) + + for j, sub_collection in enumerate(layer.collections[i].collections): + new_sub_collection = new_collection.collections[j] + self.assertEqual(sub_collection.hide, new_sub_collection.hide) + self.assertEqual(sub_collection.hide_select, new_sub_collection.hide_select) + + +# ############################################################ +# 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_scene_delete.py b/tests/python/render_layer/test_scene_delete.py new file mode 100644 index 00000000000..cd59a446c9a --- /dev/null +++ b/tests/python/render_layer/test_scene_delete.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_scene_delete(self): + """ + See if a scene can be properly deleted + """ + import bpy + + scene = bpy.context.scene + bpy.data.scenes.new('New') + bpy.data.scenes.remove(scene) + + +# ############################################################ +# 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() |