From 5a9fc42f265f054eea1c2f8e139eabf958b75acf Mon Sep 17 00:00:00 2001 From: martinRenou <martin.renou@gmail.com> Date: Thu, 24 Aug 2017 13:19:44 +0100 Subject: [PATCH] Create probe data source classes --- force_bdss/tests/probe_classes/data_source.py | 66 +++++++++++++++++++ .../tests/probe_classes/evaluator_factory.py | 25 +++++++ .../probe_classes/factory_registry_plugin.py | 6 +- .../tests/probe_classes/kpi_calculator.py | 29 +------- 4 files changed, 99 insertions(+), 27 deletions(-) create mode 100644 force_bdss/tests/probe_classes/data_source.py create mode 100644 force_bdss/tests/probe_classes/evaluator_factory.py 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 0000000..8cc11cb --- /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 0000000..f976242 --- /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 2323905..08b6e0a 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 351ab6c..c3e4555 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') -- GitLab