diff --git a/force_bdss/tests/probe_classes/data_source.py b/force_bdss/tests/probe_classes/data_source.py new file mode 100644 index 0000000000000000000000000000000000000000..8cc11cb7117f4cdf00adab313b8e4dbf4ea5f8a3 --- /dev/null +++ b/force_bdss/tests/probe_classes/data_source.py @@ -0,0 +1,66 @@ +from traits.api import Bool, Function, Str, Int, on_trait_change + +from force_bdss.api import ( + BaseDataSourceFactory, BaseDataSourceModel, BaseDataSource, + Slot +) + +from .evaluator_factory import ProbeEvaluatorFactory + + +class ProbeDataSource(BaseDataSource): + run_function = Function + + run_called = Bool(False) + slots_called = Bool(False) + + def run(self, model, parameters): + self.run_called = True + self.run_function(model, parameters) + + def slots(self, model): + self.slots_called = True + return ( + tuple(Slot(type=model.input_slots_type) + for _ in range(model.input_slots_size)) + ), ( + tuple(Slot(type=model.output_slots_type) + for _ in range(model.output_slots_size)) + ) + + +class ProbeDataSourceModel(BaseDataSourceModel): + input_slots_type = Str('PRESSURE') + output_slots_type = Str('PRESSURE') + + input_slots_size = Int(0) + output_slots_size = Int(0) + + @on_trait_change('input_slots_type,output_slots_type,' + 'input_slots_size,output_slots_size') + def update_slots(self): + self.changes_slots = True + + +class ProbeDataSourceFactory(BaseDataSourceFactory, + ProbeEvaluatorFactory): + id = Str('enthought.test.data_source') + name = Str('test_data_source') + + model_class = ProbeDataSourceModel + + def create_model(self, model_data=None): + return self.model_class( + factory=self, + input_slots_type=self.input_slots_type, + output_slots_type=self.output_slots_type, + input_slots_size=self.input_slots_size, + output_slots_size=self.output_slots_size, + **model_data + ) + + def create_data_source(self): + return ProbeDataSource( + factory=self, + run_function=self.run_function, + ) diff --git a/force_bdss/tests/probe_classes/evaluator_factory.py b/force_bdss/tests/probe_classes/evaluator_factory.py new file mode 100644 index 0000000000000000000000000000000000000000..f9762428123c2661297dc625803186ec5bb7594f --- /dev/null +++ b/force_bdss/tests/probe_classes/evaluator_factory.py @@ -0,0 +1,25 @@ +try: + import mock +except ImportError: + from unittest import mock + +from envisage.plugin import Plugin + +from traits.api import HasStrictTraits, Function, Str, Int + + +class ProbeEvaluatorFactory(HasStrictTraits): + def __init__(self, plugin=None, *args, **kwargs): + if plugin is None: + plugin = mock.Mock(Plugin) + + super(ProbeEvaluatorFactory, self).__init__( + plugin=plugin, *args, **kwargs) + + run_function = Function + + input_slots_type = Str('PRESSURE') + output_slots_type = Str('PRESSURE') + + input_slots_size = Int(0) + output_slots_size = Int(0) diff --git a/force_bdss/tests/probe_classes/factory_registry_plugin.py b/force_bdss/tests/probe_classes/factory_registry_plugin.py index 232390508467042aca4f9f3d12749d83a7224466..08b6e0a96c329cb240d2d18cb5a78e58137f29a1 100644 --- a/force_bdss/tests/probe_classes/factory_registry_plugin.py +++ b/force_bdss/tests/probe_classes/factory_registry_plugin.py @@ -3,6 +3,7 @@ from traits.api import List from force_bdss.factory_registry_plugin import FactoryRegistryPlugin from .kpi_calculator import ProbeKPICalculatorFactory +from .data_source import ProbeDataSourceFactory class ProbeFactoryRegistryPlugin(FactoryRegistryPlugin): @@ -12,4 +13,7 @@ class ProbeFactoryRegistryPlugin(FactoryRegistryPlugin): notification_listener_factories = List() def _kpi_calculator_factories_default(self): - return ProbeKPICalculatorFactory(self) + return [ProbeKPICalculatorFactory(self)] + + def _data_source_factories_default(self): + return [ProbeDataSourceFactory(self)] diff --git a/force_bdss/tests/probe_classes/kpi_calculator.py b/force_bdss/tests/probe_classes/kpi_calculator.py index 351ab6cba6bcd3b66ab4ba7a82f2ba5f820eb96f..c3e455597371ca8f8b614cb44fcab5f9eac991aa 100644 --- a/force_bdss/tests/probe_classes/kpi_calculator.py +++ b/force_bdss/tests/probe_classes/kpi_calculator.py @@ -1,18 +1,12 @@ -try: - import mock -except ImportError: - from unittest import mock - -from envisage.plugin import Plugin - -from traits.api import (HasStrictTraits, Bool, Function, Str, Int, - on_trait_change) +from traits.api import Bool, Function, Str, Int, on_trait_change from force_bdss.api import ( BaseKPICalculatorFactory, BaseKPICalculatorModel, BaseKPICalculator, Slot ) +from .evaluator_factory import ProbeEvaluatorFactory + class ProbeEvaluator(BaseKPICalculator): run_function = Function @@ -35,23 +29,6 @@ class ProbeEvaluator(BaseKPICalculator): ) -class ProbeEvaluatorFactory(HasStrictTraits): - def __init__(self, plugin=None, *args, **kwargs): - if plugin is None: - plugin = mock.Mock(Plugin) - - super(ProbeEvaluatorFactory, self).__init__( - plugin=plugin, *args, **kwargs) - - run_function = Function - - input_slots_type = Str('PRESSURE') - output_slots_type = Str('PRESSURE') - - input_slots_size = Int(0) - output_slots_size = Int(0) - - class ProbeKPICalculatorModel(BaseKPICalculatorModel): input_slots_type = Str('PRESSURE') output_slots_type = Str('PRESSURE')