diff options
Diffstat (limited to 'tests/python/view_layer/test_scene_copy_f.py')
-rw-r--r-- | tests/python/view_layer/test_scene_copy_f.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tests/python/view_layer/test_scene_copy_f.py b/tests/python/view_layer/test_scene_copy_f.py new file mode 100644 index 00000000000..13586a66f3d --- /dev/null +++ b/tests/python/view_layer/test_scene_copy_f.py @@ -0,0 +1,89 @@ +# ############################################################ +# Importing - Same For All Render Layer Tests +# ############################################################ + +import unittest +import os +import sys + +from view_layer_common import * + + +# ############################################################ +# Testing +# ############################################################ + +class UnitTesting(ViewLayerTesting): + 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 + + enabled_lookup = [True, False, False, True] + enabled_lookup_sub = [False, True, False] + + selectable_lookup = [True, True, False, False] + selectable_lookup_sub = [False, True, False, True] + new_collections = [] + + # clean everything + for layer in scene.view_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.view_layers: + for i, collection in enumerate(new_collections): + layer.collections.link(collection) + self.assertEqual(layer.collections[-1], layer.collections[i]) + + layer.collections[i].enabled = enabled_lookup[i] + layer.collections[i].selectable = selectable_lookup[i] + + for j, sub_collection in enumerate(layer.collections[i].collections): + sub_collection.enabled = enabled_lookup_sub[j] + sub_collection.selectable = selectable_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.view_layers): + new_layer = new_scene.view_layers[h] + + for i, collection in enumerate(layer.collections): + new_collection = new_layer.collections[i] + self.assertEqual(collection.enabled, new_collection.enabled) + self.assertEqual(collection.selectable, new_collection.selectable) + + for j, sub_collection in enumerate(layer.collections[i].collections): + new_sub_collection = new_collection.collections[j] + self.assertEqual(sub_collection.enabled, new_sub_collection.enabled) + self.assertEqual(sub_collection.selectable, new_sub_collection.selectable) + + +# ############################################################ +# Main - Same For All Render Layer Tests +# ############################################################ + +if __name__ == '__main__': + UnitTesting._extra_arguments = setup_extra_arguments(__file__) + unittest.main() |