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)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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)
Beispiel #6
0
    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))