Skip to content
Snippets Groups Projects
Commit 7fddd477 authored by Matthew Andrew's avatar Matthew Andrew
Browse files

Re #10712 Added unit tests

parent c1c08fe8
No related branches found
No related tags found
No related merge requests found
......@@ -83,7 +83,8 @@ class SANSCentreFinder(object):
super(SANSCentreFinder, self).__init__()
def __call__(self, state, r_min = 60, r_max = 280, max_iter = 20, x_start = 0.0, y_start = 0.0,
tolerance = 1.251e-4, find_direction = FindDirectionEnum.All, reduction_method = True, verbose=False, component=DetectorType.LAB):
tolerance = 1.251e-4, find_direction = FindDirectionEnum.All, reduction_method = True, verbose=False,
component=DetectorType.LAB):
"""
This is the start of the beam centre finder algorithm.
......
......@@ -3,7 +3,7 @@ from __future__ import (absolute_import, division, print_function)
import unittest
import sys
from sans.algorithm_detail.centre_finder_new import centre_finder_new, centre_finder_mass
from sans.common.enums import (SANSDataType, FindDirectionEnum)
from sans.common.enums import (SANSDataType, FindDirectionEnum, DetectorType)
if sys.version_info.major == 3:
from unittest import mock
......@@ -31,14 +31,14 @@ class CentreFinderNewTest(unittest.TestCase):
SANSDataType.SampleScatter: [mock.MagicMock()]}
beam_centre_finder = "SANSBeamCentreFinder"
beam_centre_finder_options = {"Iterations": iterations, "RMin": r_min / 1000, "RMax": r_max / 1000,
beam_centre_finder_options = {"Component":'LAB', "Iterations": iterations, "RMin": r_min / 1000, "RMax": r_max / 1000,
"Position1Start": position_1_start, "Position2Start": position_2_start,
"Tolerance": tolerance, "Direction": FindDirectionEnum.to_string(find_direction),
"Verbose": verbose}
centre_finder_new(self.state, r_min=r_min, r_max=r_max, iterations=iterations, position_1_start=position_1_start
,position_2_start=position_2_start, tolerance=tolerance, find_direction=find_direction
,verbose=verbose)
,verbose=verbose, component=DetectorType.LAB)
make_algorithm_mock.assert_called_once_with(beam_centre_finder, **beam_centre_finder_options)
......@@ -57,10 +57,10 @@ class CentreFinderNewTest(unittest.TestCase):
beam_centre_finder = "SANSBeamCentreFinderMassMethod"
beam_centre_finder_options = {"RMin": r_min / 1000,
"Centre1": position_1_start, "Centre2": position_2_start,
"Tolerance": tolerance}
"Component": 'LAB', "Tolerance": tolerance}
centre_finder_mass(self.state, r_min=r_min, max_iter=iterations, position_1_start=position_1_start
, position_2_start=position_2_start, tolerance=tolerance)
, position_2_start=position_2_start, tolerance=tolerance, component=DetectorType.LAB)
make_algorithm_mock.assert_called_once_with(beam_centre_finder, **beam_centre_finder_options)
......
......@@ -53,25 +53,69 @@ class BeamCentrePresenterTest(unittest.TestCase):
self.presenter.on_update_rows()
self.assertTrue(self.view.set_options.call_count == 2)
def test_that_model_reset_to_defaults_for_instrument_is_called_on_update_rows(self):
self.presenter.set_view(self.view)
self.presenter.on_update_rows()
self.assertEqual(self.presenter._beam_centre_model.reset_to_defaults_for_instrument.call_count, 1)
def test_that_set_scaling_is_called_on_update_instrument(self):
self.presenter.set_view(self.view)
self.presenter.on_update_instrument(SANSInstrument.LARMOR)
self.presenter._beam_centre_model.set_scaling.assert_called_once_with(SANSInstrument.LARMOR)
def test_that_view_on_update_instrument_is_called_on_update_instrument(self):
self.presenter.set_view(self.view)
self.presenter.on_update_instrument(SANSInstrument.LARMOR)
self.view.on_update_instrument.assert_called_once_with(SANSInstrument.LARMOR)
def test_that_on_processing_finished_updates_view_and_model(self):
self.presenter.set_view(self.view)
result = {'pos1': 0.1, 'pos2': -0.1}
self.presenter._beam_centre_model.scale_1 = 1000
self.presenter._beam_centre_model.scale_2 = 1000
self.presenter._beam_centre_model.update_lab = True
self.presenter._beam_centre_model.update_hab = True
self.presenter.on_processing_finished_centre_finder(result)
self.assertEqual(result['pos1'], self.presenter._beam_centre_model.lab_pos_1)
self.assertEqual(result['pos2'], self.presenter._beam_centre_model.lab_pos_2)
self.assertEqual(self.view.lab_pos_1, self.presenter._beam_centre_model.scale_1*result['pos1'])
self.assertEqual(self.view.lab_pos_2, self.presenter._beam_centre_model.scale_2*result['pos2'])
self.assertEqual(result['pos1'], self.presenter._beam_centre_model.hab_pos_1)
self.assertEqual(result['pos2'], self.presenter._beam_centre_model.hab_pos_2)
self.assertEqual(self.view.hab_pos_1, self.presenter._beam_centre_model.scale_1 * result['pos1'])
self.assertEqual(self.view.hab_pos_2, self.presenter._beam_centre_model.scale_2 * result['pos2'])
self.view.set_run_button_to_normal.assert_called_once_with()
def test_that_on_processing_finished_updates_does_not_update_view_and_model_when_update_disabled(self):
self.presenter.set_view(self.view)
result = {'pos1': 0.1, 'pos2': -0.1}
result_1 = {'pos1': 0.2, 'pos2': -0.2}
self.presenter._beam_centre_model.scale_1 = 1000
self.presenter._beam_centre_model.scale_2 = 1000
self.presenter._beam_centre_model.update_lab = True
self.presenter._beam_centre_model.update_hab = True
self.presenter.on_processing_finished_centre_finder(result)
self.presenter._beam_centre_model.update_lab = False
self.presenter._beam_centre_model.update_hab = False
self.presenter.on_processing_finished_centre_finder(result_1)
self.assertEqual(result['pos1'], self.presenter._beam_centre_model.lab_pos_1)
self.assertEqual(result['pos2'], self.presenter._beam_centre_model.lab_pos_2)
self.assertEqual(self.view.lab_pos_1, self.presenter._beam_centre_model.scale_1*result['pos1'])
self.assertEqual(self.view.lab_pos_2, self.presenter._beam_centre_model.scale_2*result['pos2'])
self.assertEqual(result['pos1'], self.presenter._beam_centre_model.hab_pos_1)
self.assertEqual(result['pos2'], self.presenter._beam_centre_model.hab_pos_2)
self.assertEqual(self.view.hab_pos_1, self.presenter._beam_centre_model.scale_1 * result['pos1'])
self.assertEqual(self.view.hab_pos_2, self.presenter._beam_centre_model.scale_2 * result['pos2'])
self.assertEqual(self.view.set_run_button_to_normal.call_count, 2)
if __name__ == '__main__':
unittest.main()
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