Commit: 75c1016853f4a0e2938f7d5b1b374d6b5c6b380d
Author: calra123
Date: Wed Aug 5 23:45:44 2020 +0530
Branches: soc-2020-testing-frameworks
https://developer.blender.org/rB75c1016853f4a0e2938f7d5b1b374d6b5c6b380d
Refactor 1: Traversing nested parameters using DFS
===================================================================
M tests/python/modules/mesh_test.py
M tests/python/physics_fluid.py
===================================================================
diff --git a/tests/python/modules/mesh_test.py
b/tests/python/modules/mesh_test.py
index 4dc643ba6a3..c181b76c492 100644
--- a/tests/python/modules/mesh_test.py
+++ b/tests/python/modules/mesh_test.py
@@ -278,7 +278,7 @@ class MeshTest:
"""
self.operations_stack.append(modifier_spec)
if self.verbose:
- print("Added modififier {}".format(modifier_spec))
+ print("Added modifier {}".format(modifier_spec))
def add_operator(self, operator_spec: OperatorSpec):
"""
@@ -323,6 +323,43 @@ class MeshTest:
"""
return self._test_updated
+ def _set_parameters_util(self, modifier, modifier_parameters, settings):
+ """
+ Doing a depth first traversal of the modifier parameters and setting
their values.
+ """
+ if not isinstance(modifier_parameters, dict):
+ param_setting = None
+ for i, setting in enumerate(settings):
+ if i == len(settings)-1:
+ setattr(modifier, setting, modifier_parameters)
+ else:
+ try:
+ param_setting = getattr(modifier, setting)
+ modifier = param_setting
+ except AttributeError:
+ # Clean up first
+ bpy.ops.object.delete()
+ raise AttributeError("Modifier '{}' has no parameter
named '{}'".
+ format(modifier.name, setting))
+
+ settings.pop()
+ return
+
+ for key in modifier_parameters:
+ settings.append(key)
+ self._set_parameters_util(modifier, modifier_parameters[key],
settings)
+
+ if len(settings) != 0:
+ settings.pop()
+
+ def set_parameters(self, modifier, modifier_parameters):
+ """
+ Outer interface for _set_parameters_util
+ """
+ settings = []
+ modifier_copy = modifier
+ self._set_parameters_util(modifier_copy, modifier_parameters, settings)
+
def _add_modifier(self, test_object, modifier_spec: ModifierSpec):
"""
Add modifier to object and apply (if modifier_spec.apply_modifier is
True)
@@ -335,17 +372,8 @@ class MeshTest:
print("Created modifier '{}' of type '{}'.".
format(modifier_spec.modifier_name,
modifier_spec.modifier_type))
- for param_name in modifier_spec.modifier_parameters:
- try:
- setattr(modifier, param_name,
modifier_spec.modifier_parameters[param_name])
- if self.verbose:
- print("\t set parameter '{}' with value '{}'".
- format(param_name,
modifier_spec.modifier_parameters[param_name]))
- except AttributeError:
- # Clean up first
- bpy.ops.object.delete()
- raise AttributeError("Modifier '{}' has no parameter named
'{}'".
- format(modifier_spec.modifier_type,
param_name))
+ self.set_parameters(test_object.modifiers[modifier_spec.modifier_name],
+ modifier_spec.modifier_parameters)
def _apply_modifier(self, test_object, modifier_name):
# Modifier automatically gets applied when converting from Curve to
Mesh.
diff --git a/tests/python/physics_fluid.py b/tests/python/physics_fluid.py
index fc4829b425d..4ac2ff4e90f 100644
--- a/tests/python/physics_fluid.py
+++ b/tests/python/physics_fluid.py
@@ -24,15 +24,20 @@ import sys
import bpy
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
-from modules.mesh_test import ModifierTest, FluidSpec
+from modules.mesh_test import ModifierTest, ModifierSpec
def main():
test = [
#
+ # ["FluidLiquid", "test", "exp",
+ # [FluidSpec('fluid_liquid', 'FLUID', 'DOMAIN', {'domain_type':
'LIQUID', 'use_mesh': True, 'cache_type': 'ALL',
+ # 'cache_frame_end': 20}, 20)]],
+
["FluidLiquid", "test", "exp",
- [FluidSpec('fluid_liquid', 'FLUID', 'DOMAIN', {'domain_type':
'LIQUID', 'use_mesh': True, 'cache_type': 'ALL',
- 'cache_frame_end': 20}, 20)]],
+ [ModifierSpec('fluid_liquid', 'FLUID', {'fluid_type': 'DOMAIN',
'domain_settings': {'domain_type': 'LIQUID', 'use_mesh': True, 'cache_type':
'ALL',
+
'cache_frame_end': 20}})]],
+
]
fluid_test = ModifierTest(test)
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs