def setUp(self): self.data = MuonLoadData() self.model = BrowseFileWidgetModel(self.data) patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start()
def setUp(self): self._qapp = mock_widget.mockQapp() self.view = BrowseFileWidgetView() self.view.on_browse_clicked = mock.Mock() self.view.set_file_edit = mock.Mock() self.view.reset_edit_to_cached_value = mock.Mock() self.view.show_file_browser_and_return_selection = mock.Mock( return_value=["C:/dir1/file1.nxs", "C:/dir2/file2.nxs"]) self.data = MuonLoadData() self.context = MuonDataContext self.context.instrument = 'EMU' self.model = BrowseFileWidgetModel(self.data, self.context) self.model.exception_message_for_failed_files = mock.Mock() self.view.disable_load_buttons = mock.Mock() self.view.enable_load_buttons = mock.Mock() self.view.warning_popup = mock.Mock() self.presenter = BrowseFileWidgetPresenter(self.view, self.model) patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start()
def setUp(self): # Store an empty widget to parent all the views, and ensure they are deleted correctly self.obj = QWidget() ConfigService['default.instrument'] = 'MUSR' setup_context_for_tests(self) self.context.instrument = 'MUSR' self.load_file_view = BrowseFileWidgetView(self.obj) self.load_run_view = LoadRunWidgetView(self.obj) self.load_file_model = BrowseFileWidgetModel(self.loaded_data, self.context) self.load_run_model = LoadRunWidgetModel(self.loaded_data, self.context) self.view = LoadWidgetView(parent=self.obj, load_file_view=self.load_file_view, load_run_view=self.load_run_view) self.presenter = LoadWidgetPresenter( self.view, LoadWidgetModel(self.loaded_data, self.context)) self.presenter.set_load_file_widget( BrowseFileWidgetPresenter(self.load_file_view, self.load_file_model)) self.presenter.set_load_run_widget( LoadRunWidgetPresenter(self.load_run_view, self.load_run_model)) self.presenter.load_file_widget._view.warning_popup = mock.MagicMock() self.presenter.load_run_widget._view.warning_popup = mock.MagicMock() self.view.multiple_loading_check.setCheckState(1) self.presenter.handle_multiple_files_option_changed() self.runs = [15196, 15197] self.workspaces = [self.create_fake_workspace(1) for _ in self.runs] self.filenames = FileFinder.findRuns( 'MUSR00015196.nxs, MUSR00015197.nxs')
def setUp(self): self.data = MuonLoadData() self.model = BrowseFileWidgetModel(self.data) patcher = mock.patch('Muon.GUI.Common.load_file_widget.model.load_utils') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start()
def setUp(self): self.view = BrowseFileWidgetView() self.view.on_browse_clicked = mock.Mock() self.view.set_file_edit = mock.Mock() self.view.reset_edit_to_cached_value = mock.Mock() self.view.show_file_browser_and_return_selection = mock.Mock( return_value=["C:/dir1/file1.nxs", "C:/dir2/file2.nxs"]) setup_context_for_tests(self) self.data_context.instrument = 'EMU' self.model = BrowseFileWidgetModel(self.loaded_data, self.context) self.model.exception_message_for_failed_files = mock.Mock() self.view.disable_load_buttons = mock.Mock() self.view.enable_load_buttons = mock.Mock() self.view.warning_popup = mock.Mock() self.presenter = BrowseFileWidgetPresenter(self.view, self.model) patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils.load_workspace_from_filename' ) self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start() self.load_utils_patcher.return_value = (self.create_fake_workspace(1), '22222', 'filename')
def setUp(self): self._qapp = mock_widget.mockQapp() # Store an empty widget to parent all the views, and ensure they are deleted correctly self.obj = QtGui.QWidget() self.popup_patcher = mock.patch('Muon.GUI.Common.thread_model.warning') self.addCleanup(self.popup_patcher.stop) self.popup_mock = self.popup_patcher.start() self.load_patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils.load_workspace_from_filename' ) self.addCleanup(self.load_patcher.stop) self.load_mock = self.load_patcher.start() self.load_run_patcher = mock.patch( 'Muon.GUI.Common.load_run_widget.load_run_model.load_utils.load_workspace_from_filename' ) self.addCleanup(self.load_run_patcher.stop) self.load_run_mock = self.load_run_patcher.start() self.data = MuonLoadData() self.context = MuonDataContext(self.data) self.context.instrument = 'EMU' self.load_file_view = BrowseFileWidgetView(self.obj) self.load_run_view = LoadRunWidgetView(self.obj) self.load_file_model = BrowseFileWidgetModel(self.data, self.context) self.load_run_model = LoadRunWidgetModel(self.data, self.context) self.model = LoadWidgetModel(self.data, self.context) self.view = LoadWidgetView(parent=self.obj, load_run_view=self.load_run_view, load_file_view=self.load_file_view) self.presenter = LoadWidgetPresenter(view=self.view, model=self.model) self.presenter.set_load_file_widget( BrowseFileWidgetPresenter(self.load_file_view, self.load_file_model)) self.presenter.set_load_run_widget( LoadRunWidgetPresenter(self.load_run_view, self.load_run_model)) self.presenter.load_run_widget.set_current_instrument('EMU') self.presenter.load_file_widget._view.warning_popup = mock.MagicMock() self.presenter.load_run_widget._view.warning_popup = mock.MagicMock() self.load_file_view.show_file_browser_and_return_selection = mock.Mock( return_value=["C:\\dir1\\EMU0001234.nxs"]) self.workspace_mock = self.create_fake_workspace(1) self.load_mock.return_value = (self.workspace_mock, 1234, "C:\\dir1\\EMU0001234.nxs") self.load_run_mock.return_value = (self.workspace_mock, 1234, "C:\\dir1\\EMU0001234.nxs") self.presenter.load_file_widget.on_browse_button_clicked() self.wait_for_thread(self.presenter.load_file_widget._load_thread) self.mock_loading_to_throw() file_utils.get_current_run_filename = mock.Mock( return_value="EMU0001234.nxs")
def setUp(self): # Store an empty widget to parent all the views, and ensure they are deleted correctly self.obj = QWidget() setup_context_for_tests(self) self.context.instrument = 'EMU' self.load_file_view = BrowseFileWidgetView(self.obj) self.load_run_view = LoadRunWidgetView(self.obj) self.load_file_model = BrowseFileWidgetModel(self.loaded_data, self.context) self.load_run_model = LoadRunWidgetModel(self.loaded_data, self.context) self.presenter = LoadWidgetPresenter( LoadWidgetView(parent=self.obj, load_file_view=self.load_file_view, load_run_view=self.load_run_view), LoadWidgetModel(self.loaded_data, self.context)) self.presenter.set_load_file_widget( BrowseFileWidgetPresenter(self.load_file_view, self.load_file_model)) self.presenter.set_load_run_widget( LoadRunWidgetPresenter(self.load_run_view, self.load_run_model)) self.filepath = FileFinder.findRuns('MUSR00022725.nxs')[0] self.load_patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils.load_workspace_from_filename' ) self.addCleanup(self.load_patcher.stop) self.load_mock = self.load_patcher.start() self.load_run_patcher = mock.patch( 'Muon.GUI.Common.load_run_widget.load_run_model.load_utils.load_workspace_from_filename' ) self.addCleanup(self.load_run_patcher.stop) self.load_run_mock = self.load_run_patcher.start() self.mock_workspace = self.create_fake_workspace(1) self.mock_loading_from_browse(self.mock_workspace, "C:\dir1\dir2\dir3\EMU0001234.nxs", 1234) file_utils.get_current_run_filename = mock.Mock( return_value="C:\dir1\dir2\dir3\EMU0001234.nxs") self.presenter.load_file_widget._view.warning_popup = mock.MagicMock() self.presenter.load_run_widget._view.warning_popup = mock.MagicMock() self.popup_patcher = mock.patch('Muon.GUI.Common.thread_model.warning') self.addCleanup(self.popup_patcher.stop) self.popup_mock = self.popup_patcher.start() def setGroupAndPairsToEmptyList(grouping_context): grouping_context._groups = [] grouping_context._pairs = [] self.group_context.reset_group_and_pairs_to_default = mock.MagicMock( side_effect=setGroupAndPairsToEmptyList(self.group_context))
def setUp(self): self._qapp = mock_widget.mockQapp() # Store an empty widget to parent all the views, and ensure they are deleted correctly self.obj = QtGui.QWidget() self.data = MuonLoadData() self.context = MuonDataContext(self.data) self.context.instrument = 'EMU' self.load_file_view = BrowseFileWidgetView(self.obj) self.load_run_view = LoadRunWidgetView(self.obj) self.load_file_model = BrowseFileWidgetModel(self.data, self.context) self.load_run_model = LoadRunWidgetModel(self.data, self.context) self.presenter = LoadWidgetPresenter( LoadWidgetView(parent=self.obj, load_file_view=self.load_file_view, load_run_view=self.load_run_view), LoadWidgetModel(self.data, self.context)) self.presenter.set_load_file_widget( BrowseFileWidgetPresenter(self.load_file_view, self.load_file_model)) self.presenter.set_load_run_widget( LoadRunWidgetPresenter(self.load_run_view, self.load_run_model)) self.filepath = FileFinder.findRuns('MUSR00022725.nxs')[0] self.load_patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils.load_workspace_from_filename' ) self.addCleanup(self.load_patcher.stop) self.load_mock = self.load_patcher.start() self.load_run_patcher = mock.patch( 'Muon.GUI.Common.load_run_widget.load_run_model.load_utils.load_workspace_from_filename' ) self.addCleanup(self.load_run_patcher.stop) self.load_run_mock = self.load_run_patcher.start() self.mock_workspace = self.create_fake_workspace(1) self.mock_loading_from_browse(self.mock_workspace, "C:\dir1\dir2\dir3\EMU0001234.nxs", 1234) file_utils.get_current_run_filename = mock.Mock( return_value="C:\dir1\dir2\dir3\EMU0001234.nxs") self.presenter.load_file_widget._view.warning_popup = mock.MagicMock() self.presenter.load_run_widget._view.warning_popup = mock.MagicMock() self.popup_patcher = mock.patch('Muon.GUI.Common.thread_model.warning') self.addCleanup(self.popup_patcher.stop) self.popup_mock = self.popup_patcher.start()
def setUp(self): setup_context_for_tests(self) self.data_context.instrument = 'EMU' self.view = BrowseFileWidgetView() self.model = BrowseFileWidgetModel(self.loaded_data, self.context) self.view.disable_load_buttons = mock.Mock() self.view.enable_load_buttons = mock.Mock() self.view.warning_popup = mock.Mock() self.presenter = BrowseFileWidgetPresenter(self.view, self.model) patcher = mock.patch('Muon.GUI.Common.load_file_widget.model.load_utils.load_workspace_from_filename') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start() self.load_utils_patcher.return_value = (self.create_fake_workspace(1), '22222', 'filename')
def __init__(self, loaded_data, context, parent): # set up the views self.load_file_view = BrowseFileWidgetView(parent) self.load_run_view = LoadRunWidgetView(parent) self.load_widget_view = LoadWidgetView(parent=parent, load_file_view=self.load_file_view, load_run_view=self.load_run_view) self.load_widget = LoadWidgetPresenter(self.load_widget_view, LoadWidgetModel(loaded_data, context)) self.file_widget = BrowseFileWidgetPresenter(self.load_file_view, BrowseFileWidgetModel(loaded_data, context)) self.run_widget = LoadRunWidgetPresenter(self.load_run_view, LoadRunWidgetModel(loaded_data, context)) self.load_widget.set_load_file_widget(self.file_widget) self.load_widget.set_load_run_widget(self.run_widget) self.load_widget.set_current_instrument(context.instrument)
def setUp(self): self._qapp = mock_widget.mockQapp() self.data = MuonLoadData() self.view = BrowseFileWidgetView() self.model = BrowseFileWidgetModel(self.data) self.view.disable_load_buttons = mock.Mock() self.view.enable_load_buttons = mock.Mock() self.view.warning_popup = mock.Mock() self.presenter = BrowseFileWidgetPresenter(self.view, self.model) self.presenter.enable_multiple_files(True) patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start()
def setUp(self): self._qapp = mock_widget.mockQapp() self.data = MuonLoadData() self.context = MuonDataContext self.context.instrument = 'EMU' self.view = BrowseFileWidgetView() self.model = BrowseFileWidgetModel(self.data, self.context) self.view.disable_load_buttons = mock.Mock() self.view.enable_load_buttons = mock.Mock() self.view.warning_popup = mock.Mock() self.presenter = BrowseFileWidgetPresenter(self.view, self.model) patcher = mock.patch('Muon.GUI.Common.load_file_widget.model.load_utils') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start()
def __init__(self, loaded_data, context, parent): # set up the views self.load_file_view = BrowseFileWidgetView(parent) self.load_run_view = LoadRunWidgetView(parent) self.load_widget_view = LoadWidgetView( parent=parent, load_file_view=self.load_file_view, load_run_view=self.load_run_view) self.load_widget = LoadWidgetPresenter( self.load_widget_view, LoadWidgetModel(loaded_data, context)) self.file_widget = BrowseFileWidgetPresenter( self.load_file_view, BrowseFileWidgetModel(loaded_data, context)) self.run_widget = LoadRunWidgetPresenter( self.load_run_view, LoadRunWidgetModel(loaded_data, context)) self.load_widget.set_load_file_widget(self.file_widget) self.load_widget.set_load_run_widget(self.run_widget) self.load_widget.set_current_instrument( context.data_context.instrument) context.update_view_from_model_notifier.add_subscriber( self.load_widget.update_view_from_model_observer)
class LoadFileWidgetModelTest(unittest.TestCase): def setUp(self): self.data = MuonLoadData() self.model = BrowseFileWidgetModel(self.data) patcher = mock.patch( 'Muon.GUI.Common.load_file_widget.model.load_utils') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start() def mock_load_function(self, files_to_load, load_return_values): self.load_utils_patcher.load_workspace_from_filename = mock.Mock( side_effect=load_return_values) self.model.loadData(files_to_load) def assert_model_empty(self): self.assertEqual(self.model.loaded_workspaces, []) self.assertEqual(self.model.loaded_filenames, []) self.assertEqual(self.model.loaded_runs, []) # ------------------------------------------------------------------------------------------------------------------ # TESTS # ------------------------------------------------------------------------------------------------------------------ def test_model_initialized_with_empty_lists_of_loaded_data(self): self.assert_model_empty() def test_executing_load_without_filenames_does_nothing(self): self.model.execute() self.assert_model_empty() def test_execute_successfully_loads_given_files(self): files = ['EMU00019489.nxs', 'EMU00019490.nxs', 'EMU00019491.nxs'] load_return_vals = [([1 + i], 19489 + i, filename) for i, filename in enumerate(files)] self.mock_load_function(files, load_return_vals) self.model.execute() six.assertCountEqual(self, self.model.loaded_workspaces, [[1], [2], [3]]) six.assertCountEqual(self, self.model.loaded_filenames, files) six.assertCountEqual(self, self.model.loaded_runs, [19489, 19490, 19491]) def test_model_is_cleared_correctly(self): files = [r'EMU00019489.nxs', r'EMU00019490.nxs', r'EMU00019491.nxs'] load_return_vals = [([1 + i], 19489 + i, filename) for i, filename in enumerate(files)] self.mock_load_function(files, load_return_vals) self.model.execute() self.assertEqual(len(self.model.loaded_filenames), 3) self.model.clear() self.assert_model_empty() def test_execute_throws_if_one_file_does_not_load_correctly_but_still_loads_other_files( self): files = [r'EMU00019489.nxs', r'EMU00019490.nxs', r'EMU00019491.nxs'] load_return_vals = [([1 + i], 19489 + i, filename) for i, filename in enumerate(files)] # Mock load to throw on a particular index self.load_utils_patcher.load_workspace_from_filename = mock.Mock() self.load_utils_patcher.load_workspace_from_filename.side_effect = iter( IteratorWithException(load_return_vals, [1])) self.model.loadData(files) with self.assertRaises(ValueError): self.model.execute() six.assertCountEqual(self, self.model.loaded_filenames, [files[i] for i in [0, 2]]) six.assertCountEqual(self, self.model.loaded_runs, [19489, 19491])
def setUp(self): setup_context_for_tests(self) self.data_context.instrument = 'EMU' self.model = BrowseFileWidgetModel(self.loaded_data, self.context)
class LoadFileWidgetModelTest(unittest.TestCase): def setUp(self): setup_context_for_tests(self) self.data_context.instrument = 'EMU' self.model = BrowseFileWidgetModel(self.loaded_data, self.context) def assert_model_empty(self): self.assertEqual(self.model.loaded_workspaces, []) self.assertEqual(self.model.loaded_filenames, []) self.assertEqual(self.model.loaded_runs, []) # ------------------------------------------------------------------------------------------------------------------ # TESTS # ------------------------------------------------------------------------------------------------------------------ def test_model_initialized_with_empty_lists_of_loaded_data(self): self.assert_model_empty() def test_executing_load_without_filenames_does_nothing(self): self.model.execute() self.assert_model_empty() def test_execute_successfully_loads_given_files(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'emu00006475.nxs'] self.model.loadData(files) self.model.execute() six.assertCountEqual(self, [os.path.split(filename)[-1] for filename in self.model.loaded_filenames], files) six.assertCountEqual(self, self.model.loaded_runs, [[19489], [6473], [6475]]) def test_model_is_cleared_correctly(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'emu00006475.nxs'] self.model.loadData(files) self.model.execute() self.assertEqual(len(self.model.loaded_filenames), 3) self.model.clear() self.assert_model_empty() def test_execute_throws_if_one_file_does_not_load_correctly_but_still_loads_other_files(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'NonExistent.nxs'] self.model.loadData(files) with self.assertRaises(ValueError): self.model.execute() six.assertCountEqual(self, [os.path.split(filename)[-1] for filename in self.model.loaded_filenames], ['EMU00019489.nxs', 'emu00006473.nxs']) six.assertCountEqual(self, self.model.loaded_runs, [[19489], [6473]])
class LoadFileWidgetModelTest(unittest.TestCase): def setUp(self): self.data = MuonLoadData() self.model = BrowseFileWidgetModel(self.data) patcher = mock.patch('Muon.GUI.Common.load_file_widget.model.load_utils') self.addCleanup(patcher.stop) self.load_utils_patcher = patcher.start() def mock_load_function(self, files_to_load, load_return_values): self.load_utils_patcher.load_workspace_from_filename = mock.Mock(side_effect=load_return_values) self.model.loadData(files_to_load) def assert_model_empty(self): self.assertEqual(self.model.loaded_workspaces, []) self.assertEqual(self.model.loaded_filenames, []) self.assertEqual(self.model.loaded_runs, []) # ------------------------------------------------------------------------------------------------------------------ # TESTS # ------------------------------------------------------------------------------------------------------------------ def test_model_initialized_with_empty_lists_of_loaded_data(self): self.assert_model_empty() def test_executing_load_without_filenames_does_nothing(self): self.model.execute() self.assert_model_empty() def test_execute_successfully_loads_given_files(self): files = ['EMU00019489.nxs', 'EMU00019490.nxs', 'EMU00019491.nxs'] load_return_vals = [([1 + i], 19489 + i, filename) for i, filename in enumerate(files)] self.mock_load_function(files, load_return_vals) self.model.execute() six.assertCountEqual(self, self.model.loaded_workspaces, [[1], [2], [3]]) six.assertCountEqual(self, self.model.loaded_filenames, files) six.assertCountEqual(self, self.model.loaded_runs, [19489, 19490, 19491]) def test_model_is_cleared_correctly(self): files = [r'EMU00019489.nxs', r'EMU00019490.nxs', r'EMU00019491.nxs'] load_return_vals = [([1 + i], 19489 + i, filename) for i, filename in enumerate(files)] self.mock_load_function(files, load_return_vals) self.model.execute() self.assertEqual(len(self.model.loaded_filenames), 3) self.model.clear() self.assert_model_empty() def test_execute_throws_if_one_file_does_not_load_correctly_but_still_loads_other_files(self): files = [r'EMU00019489.nxs', r'EMU00019490.nxs', r'EMU00019491.nxs'] load_return_vals = [([1 + i], 19489 + i, filename) for i, filename in enumerate(files)] # Mock load to throw on a particular index self.load_utils_patcher.load_workspace_from_filename = mock.Mock() self.load_utils_patcher.load_workspace_from_filename.side_effect = iter(IteratorWithException(load_return_vals, [1])) self.model.loadData(files) with self.assertRaises(ValueError): self.model.execute() six.assertCountEqual(self, self.model.loaded_filenames, [files[i] for i in [0, 2]]) six.assertCountEqual(self, self.model.loaded_runs, [19489, 19491])
class LoadFileWidgetModelTest(unittest.TestCase): def setUp(self): setup_context_for_tests(self) self.data_context.instrument = 'EMU' self.model = BrowseFileWidgetModel(self.loaded_data, self.context) def assert_model_empty(self): self.assertEqual(self.model.loaded_workspaces, []) self.assertEqual(self.model.loaded_filenames, []) self.assertEqual(self.model.loaded_runs, []) # ------------------------------------------------------------------------------------------------------------------ # TESTS # ------------------------------------------------------------------------------------------------------------------ def test_model_initialized_with_empty_lists_of_loaded_data(self): self.assert_model_empty() def test_executing_load_without_filenames_does_nothing(self): self.model.execute() self.assert_model_empty() def test_execute_successfully_loads_given_files(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'emu00006475.nxs'] self.model.loadData(files) self.model.execute() six.assertCountEqual(self, [ os.path.split(filename)[-1] for filename in self.model.loaded_filenames ], files) six.assertCountEqual(self, self.model.loaded_runs, [[19489], [6473], [6475]]) def test_model_is_cleared_correctly(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'emu00006475.nxs'] self.model.loadData(files) self.model.execute() self.assertEqual(len(self.model.loaded_filenames), 3) self.model.clear() self.assert_model_empty() def test_execute_throws_if_one_file_does_not_load_correctly_but_still_loads_other_files( self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'NonExistent.nxs'] self.model.loadData(files) with self.assertRaises(ValueError): self.model.execute() six.assertCountEqual(self, [ os.path.split(filename)[-1] for filename in self.model.loaded_filenames ], ['EMU00019489.nxs', 'emu00006473.nxs']) six.assertCountEqual(self, self.model.loaded_runs, [[19489], [6473]])
class LoadFileWidgetModelTest(unittest.TestCase): def setUp(self): setup_context_for_tests(self) self.data_context.instrument = 'EMU' self.model = BrowseFileWidgetModel(self.loaded_data, self.context) def assert_model_empty(self): self.assertEqual(self.model.loaded_workspaces, []) self.assertEqual(self.model.loaded_filenames, []) self.assertEqual(self.model.loaded_runs, []) # ------------------------------------------------------------------------------------------------------------------ # TESTS # ------------------------------------------------------------------------------------------------------------------ def test_model_initialized_with_empty_lists_of_loaded_data(self): self.assert_model_empty() def test_executing_load_without_filenames_does_nothing(self): self.model.execute() self.assert_model_empty() def test_execute_successfully_loads_given_files(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'emu00006475.nxs'] self.model.loadData(files) self.model.execute() # We make the filename all uppercase to deal with some os's capitalising the instrument and some not. # We just need to check the right files were added to the model. expected_files = ['EMU00019489.NXS', 'EMU00006473.NXS', 'EMU00006475.NXS'] self.assertCountEqual([os.path.split(filename.upper())[-1] for filename in self.model.loaded_filenames], expected_files) self.assertCountEqual(self.model.loaded_runs, [[19489], [6473], [6475]]) def test_model_is_cleared_correctly(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'emu00006475.nxs'] self.model.loadData(files) self.model.execute() self.assertEqual(len(self.model.loaded_filenames), 3) self.model.clear() self.assert_model_empty() def test_execute_throws_if_one_file_does_not_load_correctly_but_still_loads_other_files(self): files = ['EMU00019489.nxs', 'emu00006473.nxs', 'NonExistent.nxs'] self.model.loadData(files) with self.assertRaises(ValueError): self.model.execute() # We make the filename all uppercase to deal with some os's capitalising the instrument and some not. # We just need to check the right files were added to the model. self.assertCountEqual([os.path.split(filename.upper())[-1] for filename in self.model.loaded_filenames], ['EMU00019489.NXS', 'EMU00006473.NXS']) self.assertCountEqual(self.model.loaded_runs, [[19489], [6473]])