def get_states(self, row_index=None, file_lookup=True): """ Gathers the state information for all rows. :param row_index: if a single row is selected, then only this row is returned, else all the state for all rows is returned :return: a list of states """ start_time_state_generation = time.time() # 1. Update the state model state_model_with_view_update = self._get_state_model_with_view_update() # 2. Update the table model table_model = self._table_model # 3. Go through each row and construct a state object if table_model and state_model_with_view_update: states, errors = create_states(state_model_with_view_update, table_model, self._view.instrument, self._facility, row_index=row_index, file_lookup=file_lookup) else: states = None errors = None stop_time_state_generation = time.time() time_taken = stop_time_state_generation - start_time_state_generation self.sans_logger.information( "The generation of all states took {}s".format(time_taken)) return states, errors
def test_create_states_returns_correct_number_of_states(self): rows = [self._good_row_one, self._good_row_two] states, errors = create_states(self.state_gui_model, SANSFacility.ISIS, row_entries=rows) self.assertEqual(len(states), 2)
def test_create_state_from_user_file_if_specified(self, create_gui_state_mock): create_gui_state_mock.returns = StateGuiModel({}) table_index_model = TableIndexModel('LOQ74044', '', '', '', '', '', '', '', '', '', '', '', user_file='MaskLOQData.txt') table_model = TableModel() table_model.add_table_entry(0, table_index_model) states, errors = create_states(self.state_gui_model, table_model, SANSInstrument.LOQ, SANSFacility.ISIS, row_index=[0, 1, 2]) self.assertEqual(len(states), 1) create_gui_state_mock.assert_called_once_with('MaskLOQData.txt', self.state_gui_model)
def test_create_states_returns_correct_number_of_states( self, create_row_state_mock): states = create_states(self.state_gui_model, self.table_model, SANSInstrument.LOQ, SANSFacility.ISIS) self.assertEqual(len(states), 2)
def test_create_states_returns_correct_number_of_states(self): states, errors = create_states(self.state_gui_model, self.table_model, SANSInstrument.LOQ, SANSFacility.ISIS, row_index=[0, 1]) self.assertEqual(len(states), 2)
def test_skips_empty_rows(self, create_row_state_mock): table_index_model = TableIndexModel(1, '', '', '', '', '', '', '', '', '', '', '', '') self.table_model.add_table_entry(1, table_index_model) states = create_states(self.state_gui_model, self.table_model, SANSInstrument.LOQ, SANSFacility.ISIS) self.assertEqual(len(states), 1)
def test_skips_empty_rows(self): table_index_model = TableIndexModel('', '', '', '', '', '', '', '', '', '', '', '') self.table_model.add_table_entry(1, table_index_model) self.table_model.wait_for_file_finding_done() self.qApp.processEvents() states, errors = create_states(self.state_gui_model, self.table_model, SANSInstrument.LOQ, SANSFacility.ISIS, row_index=[0,1, 2]) self.assertEqual(len(states), 2)
def test_create_state_from_user_file_if_specified(self, create_gui_state_mock): create_gui_state_mock.returns = StateGuiModel({}) table_index_model = TableIndexModel('LOQ74044', '', '', '', '', '', '', '', '', '', '', '', user_file='MaskLOQData.txt') table_model = TableModel() table_model.add_table_entry(0, table_index_model) table_model.wait_for_file_finding_done() self.qApp.processEvents() states, errors = create_states(self.state_gui_model, table_model, SANSInstrument.LOQ, SANSFacility.ISIS, row_index=[0,1, 2]) self.assertEqual(len(states), 1) create_gui_state_mock.assert_called_once_with('MaskLOQData.txt', self.state_gui_model)
def test_create_state_from_user_file_if_specified(self, create_gui_state_mock): create_gui_state_mock.returns = StateGuiModel({}) rows = [ RowEntries(sample_scatter="LOQ74044", user_file="MaskLOQData.txt"), RowEntries(), RowEntries() ] states, errors = create_states(self.state_gui_model, row_entries=rows, facility=SANSFacility.ISIS) self.assertEqual(len(states), 1) create_gui_state_mock.assert_called_once_with('MaskLOQData.txt', self.state_gui_model)
def test_create_state_from_user_file_if_specified(self, thickness_mock): expected_user_file = 'MaskLOQData.txt' # Mock out row entry so it does not lookup file information mock_row_entry = mock.Mock(spec=RowEntries) mock_row_entry.is_empty.return_value = False mock_row_entry.user_file = expected_user_file rows = [mock_row_entry, RowEntries(), RowEntries()] states, errors = create_states(self.state_gui_model, row_entries=rows, facility=SANSFacility.ISIS) self.assertEqual(len(states), 1) self.gui_state_director_instance.create_state.assert_called_once_with( mock_row_entry, file_lookup=mock.ANY, row_user_file=expected_user_file) thickness_mock.assert_called()
def test_create_states_returns_correct_number_of_states_for_specified_row_index(self): states, errors = create_states(self.state_gui_model, self.table_model, SANSInstrument.LOQ, SANSFacility.ISIS, row_index=[1]) self.assertEqual(len(states), 1)
def test_skips_empty_rows(self): rows = [self._good_row_one, RowEntries(), self._good_row_two] states, errors = create_states(self.state_gui_model, SANSFacility.ISIS, row_entries=rows) self.assertEqual(2, len(states))