Unittests for depsgraph layer collection render settings evaluation

Some of the tests are failing at the moment.
Those problems were introduced in eba09b1520
This commit is contained in:
Dalai Felinto 2017-04-13 16:28:47 +02:00
parent 9b53bab0b7
commit 5a5f1dc8e4
9 changed files with 364 additions and 0 deletions

@ -62,6 +62,13 @@ endmacro()
RENDER_LAYER_TEST(active_collection) RENDER_LAYER_TEST(active_collection)
RENDER_LAYER_TEST(collection_rename) 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_a)
RENDER_LAYER_TEST(evaluation_visibility_b) RENDER_LAYER_TEST(evaluation_visibility_b)
RENDER_LAYER_TEST(evaluation_visibility_c) RENDER_LAYER_TEST(evaluation_visibility_c)

@ -693,3 +693,88 @@ class MoveLayerCollectionTesting(MoveSceneCollectionSyncTesting):
layer_collection_src = self.parse_move(src) layer_collection_src = self.parse_move(src)
layer_collection_dst = self.parse_move(dst) layer_collection_dst = self.parse_move(dst)
return layer_collection_src.move_below(layer_collection_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)

@ -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()

@ -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()

@ -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()

@ -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()

@ -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()

@ -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()

@ -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()