Skip to content
Snippets Groups Projects
Commit 5d93ca8e authored by Stefano Borini's avatar Stefano Borini
Browse files

Documentation and testing for various parameter classes

parent cb1bf681
No related branches found
No related tags found
1 merge request!45Added support for MCO named parameters.
from traits.api import HasStrictTraits, String, Type, Instance
from traits.api import HasStrictTraits, String, Instance
class BaseMCOParameterFactory(HasStrictTraits):
id = String()
name = String("Undefined parameter")
description = String("Undefined parameter")
model_class = Type('BaseMCOParameter')
def create_model(self, data_values=None):
if data_values is None:
data_values = {}
return self.model_class(factory=self, **data_values)
from force_bdss.mco.parameters.base_mco_parameter_factory import \
BaseMCOParameterFactory
class BaseMCOParameter(HasStrictTraits):
"""The base class of all MCO Parameter models.
Must be reimplemented by specific classes handling the specific parameter
that MCOs understand.
"""
factory = Instance(BaseMCOParameterFactory)
value_name = String()
value_type = String()
......
......@@ -3,12 +3,26 @@ from traits.trait_types import String, Type
class BaseMCOParameterFactory(HasStrictTraits):
"""Factory that produces the model instance of a given BASEMCOParameter
instance.
Must be reimplemented for the specific parameter."""
#: A unique string identifying the parameter
id = String()
#: A user friendly name (for the UI)
name = String("Undefined parameter")
#: A long description of the parameter
description = String("Undefined parameter")
# The model class to instantiate when create_model is called.
model_class = Type('BaseMCOParameter')
def create_model(self, data_values=None):
"""Creates the instance of the model class and returns it.
"""
if data_values is None:
data_values = {}
......
from traits.api import Float
from ...ids import mco_parameter_id
from .base_mco_parameter import BaseMCOParameter, BaseMCOParameterFactory
from .base_mco_parameter import BaseMCOParameter
from force_bdss.mco.parameters.base_mco_parameter_factory import \
BaseMCOParameterFactory
class RangedMCOParameter(BaseMCOParameter):
"""Expresses a MCO parameter that has a range between two floating
point values."""
initial_value = Float()
upper_bound = Float()
lower_bound = Float()
class RangedMCOParameterFactory(BaseMCOParameterFactory):
"""The factory of the above model"""
id = mco_parameter_id("enthought", "ranged")
model_class = RangedMCOParameter
name = "Range"
......@@ -18,6 +23,7 @@ class RangedMCOParameterFactory(BaseMCOParameterFactory):
def all_core_factories():
"""Produces a list of all factories contained in this module."""
import inspect
return [c for c in inspect.getmodule(all_core_factories).__dict__.values()
......
import unittest
from traits.api import Int
from force_bdss.mco.parameters.base_mco_parameter import BaseMCOParameter
from force_bdss.mco.parameters.base_mco_parameter_factory import \
BaseMCOParameterFactory
class DummyMCOParameter(BaseMCOParameter):
x = Int()
class DummyMCOParameterFactory(BaseMCOParameterFactory):
id = "foo"
name = "bar"
description = "baz"
model_class = DummyMCOParameter
class TestBaseMCOParameterFactory(unittest.TestCase):
def test_initialization(self):
factory = DummyMCOParameterFactory()
model = factory.create_model({"x": 42})
self.assertIsInstance(model, DummyMCOParameter)
self.assertEqual(model.x, 42)
import unittest
from force_bdss.mco.parameters import core_mco_parameters
from force_bdss.mco.parameters.base_mco_parameter import \
from force_bdss.mco.parameters.base_mco_parameter_factory import \
BaseMCOParameterFactory
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment