def _check_correct_data_is_displayed(self, model_type, column, mock_data, row):
     ws = MockWorkspace(read_return=mock_data)
     model = MatrixWorkspaceTableViewModel(ws, model_type)
     index = MockQModelIndex(row, column)
     output = model.data(index, Qt.DisplayRole)
     model.relevant_data.assert_called_once_with(row)
     self.assertEqual(str(mock_data[column]), output)
 def _check_correct_data_is_displayed(self, model_type, column, mock_data, row):
     ws = MockWorkspace(read_return=mock_data)
     model = MatrixWorkspaceTableViewModel(ws, model_type)
     index = MockQModelIndex(row, column)
     output = model.data(index, Qt.DisplayRole)
     model.relevant_data.assert_called_once_with(row)
     self.assertEqual(str(mock_data[column]), output)
Ejemplo n.º 3
0
 def get_item_model(self):
     return (MatrixWorkspaceTableViewModel(
         self._ws, MatrixWorkspaceTableViewModelType.x),
             MatrixWorkspaceTableViewModel(
                 self._ws, MatrixWorkspaceTableViewModelType.y),
             MatrixWorkspaceTableViewModel(
                 self._ws, MatrixWorkspaceTableViewModelType.e))
 def test_headerData_not_display_or_tooltip(self):
     if not qtpy.PYQT5:
         self.skipTest("QVariant cannot be instantiated in QT4, and the test fails with an error.")
     ws = MockWorkspace()
     model_type = MatrixWorkspaceTableViewModelType.x
     model = MatrixWorkspaceTableViewModel(ws, model_type)
     output = model.headerData(0, Qt.Vertical, Qt.BackgroundRole)
     self.assertTrue(isinstance(output, QtCore.QVariant))
 def test_headerData_not_display_or_tooltip(self):
     if not qtpy.PYQT5:
         self.skipTest("QVariant cannot be instantiated in QT4, and the test fails with an error.")
     ws = MockWorkspace()
     model_type = MatrixWorkspaceTableViewModelType.x
     model = MatrixWorkspaceTableViewModel(ws, model_type)
     output = model.headerData(0, Qt.Vertical, Qt.BackgroundRole)
     self.assertTrue(isinstance(output, QtCore.QVariant))
 def test_headerData_horizontal_header_display_role_for_X_values(self):
     ws = MockWorkspace()
     model_type = MatrixWorkspaceTableViewModelType.x
     model = MatrixWorkspaceTableViewModel(ws, model_type)
     mock_section = 0
     output = model.headerData(mock_section, Qt.Horizontal, Qt.DisplayRole)
     expected_output = MatrixWorkspaceTableViewModel.HORIZONTAL_HEADER_DISPLAY_STRING_FOR_X_VALUES.format(
         mock_section)
     self.assertEqual(expected_output, output)
 def test_headerData_horizontal_header_display_role_for_X_values(self):
     ws = MockWorkspace()
     model_type = MatrixWorkspaceTableViewModelType.x
     model = MatrixWorkspaceTableViewModel(ws, model_type)
     mock_section = 0
     output = model.headerData(mock_section, Qt.Horizontal, Qt.DisplayRole)
     expected_output = MatrixWorkspaceTableViewModel.HORIZONTAL_HEADER_DISPLAY_STRING_FOR_X_VALUES.format(
         mock_section)
     self.assertEqual(expected_output, output)
 def test_correct_relevant_data(self):
     ws = MockWorkspace()
     model = MatrixWorkspaceTableViewModel(ws, MatrixWorkspaceTableViewModelType.x)
     msg = "The function is not set correctly! The wrong data will be read."
     self.assertEqual(ws.readX, model.relevant_data, msg=msg)
     model = MatrixWorkspaceTableViewModel(ws, MatrixWorkspaceTableViewModelType.y)
     self.assertEqual(ws.readY, model.relevant_data, msg=msg)
     model = MatrixWorkspaceTableViewModel(ws, MatrixWorkspaceTableViewModelType.e)
     self.assertEqual(ws.readE, model.relevant_data, msg=msg)
    def test_correct_model_type(self):
        ws = MockWorkspace()
        model = MatrixWorkspaceTableViewModel(ws, MatrixWorkspaceTableViewModelType.x)
        self.assertEqual(model.type, MatrixWorkspaceTableViewModelType.x)

        model = MatrixWorkspaceTableViewModel(ws, MatrixWorkspaceTableViewModelType.y)
        self.assertEqual(model.type, MatrixWorkspaceTableViewModelType.y)

        model = MatrixWorkspaceTableViewModel(ws, MatrixWorkspaceTableViewModelType.e)
        self.assertEqual(model.type, MatrixWorkspaceTableViewModelType.e)
    def test_not_common_bins_horizontal_tooltip_role(self):
        mock_section = 0
        mock_return_values = [0, 1, 2, 3, 4, 5, 6]
        is_histogram_data = False

        ws = MockWorkspace(read_return=mock_return_values, isHistogramData=is_histogram_data)
        ws.isCommonBins = Mock(return_value=False)
        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        output = model.headerData(mock_section, Qt.Horizontal, Qt.ToolTipRole)

        self.assertEqual(MatrixWorkspaceTableViewModel.HORIZONTAL_BINS_VARY_TOOLTIP_STRING.format(mock_section), output)
    def test_not_common_bins_horizontal_tooltip_role(self):
        mock_section = 0
        mock_return_values = [0, 1, 2, 3, 4, 5, 6]
        is_histogram_data = False

        ws = MockWorkspace(read_return=mock_return_values, isHistogramData=is_histogram_data)
        ws.isCommonBins = Mock(return_value=False)
        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        output = model.headerData(mock_section, Qt.Horizontal, Qt.ToolTipRole)

        self.assertEqual(MatrixWorkspaceTableViewModel.HORIZONTAL_BINS_VARY_TOOLTIP_STRING.format(mock_section), output)
    def test_headerData_vertical_header_tooltip_role(self):
        ws = MockWorkspace()
        model_type = MatrixWorkspaceTableViewModelType.x
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        mock_section = 0
        output = model.headerData(mock_section, Qt.Vertical, Qt.ToolTipRole)

        ws.getSpectrum.assert_called_once_with(mock_section)
        ws.mock_spectrum.getSpectrumNo.assert_called_once_with()

        expected_output = MatrixWorkspaceTableViewModel.VERTICAL_HEADER_TOOLTIP_STRING.format(mock_section,
                                                                                              MockSpectrum.TEST_SPECTRUM_NO)
        self.assertEqual(expected_output, output)
    def test_headerData_vertical_header_tooltip_role(self):
        ws = MockWorkspace()
        model_type = MatrixWorkspaceTableViewModelType.x
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        mock_section = 0
        output = model.headerData(mock_section, Qt.Vertical, Qt.ToolTipRole)

        ws.getSpectrum.assert_called_once_with(mock_section)
        ws.mock_spectrum.getSpectrumNo.assert_called_once_with()

        expected_output = MatrixWorkspaceTableViewModel.VERTICAL_HEADER_TOOLTIP_STRING.format(mock_section,
                                                                                              MockSpectrum.SPECTRUM_NO)
        self.assertEqual(expected_output, output)
    def test_headerData_vertical_header_display_role(self):
        ws = MockWorkspace()
        model_type = MatrixWorkspaceTableViewModelType.x
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        mock_section = 0
        output = model.headerData(mock_section, Qt.Vertical, Qt.DisplayRole)

        ws.getAxis.assert_called_once_with(AXIS_INDEX_FOR_VERTICAL)
        ws.mock_axis.label.assert_called_once_with(mock_section)

        expected_output = MatrixWorkspaceTableViewModel.VERTICAL_HEADER_DISPLAY_STRING.format(mock_section,
                                                                                              MockMantidAxis.TEST_LABEL)

        self.assertEqual(expected_output, output)
    def test_headerData_vertical_header_display_role(self):
        ws = MockWorkspace()
        model_type = MatrixWorkspaceTableViewModelType.x
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        mock_section = 0
        output = model.headerData(mock_section, Qt.Vertical, Qt.DisplayRole)

        ws.getAxis.assert_called_once_with(AXIS_INDEX_FOR_VERTICAL)
        ws.mock_axis.label.assert_called_once_with(mock_section)

        expected_output = MatrixWorkspaceTableViewModel.VERTICAL_HEADER_DISPLAY_STRING.format(mock_section,
                                                                                              MockMantidAxis.TEST_LABEL)

        self.assertEqual(expected_output, output)
 def test_row_and_column_count(self):
     ws = MockWorkspace()
     model_type = MatrixWorkspaceTableViewModelType.x
     MatrixWorkspaceTableViewModel(ws, model_type)
     # these are called when the TableViewModel is initialised
     ws.getNumberHistograms.assert_called_once_with()
     ws.blocksize.assert_called_once_with()
    def _run_test_headerData_horizontal_header_display_role(self, is_histogram_data, mock_return_values, mock_section,
                                                            expected_bin_centre):
        ws = MockWorkspace(read_return=mock_return_values, isHistogramData=is_histogram_data)
        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        output = model.headerData(mock_section, Qt.Horizontal, Qt.DisplayRole)

        ws.isHistogramData.assert_called_once_with()
        ws.readX.assert_called_once_with(0)
        ws.getAxis.assert_called_once_with(AXIS_INDEX_FOR_HORIZONTAL)
        ws.mock_axis.getUnit.assert_called_once_with()
        ws.mock_axis.mock_unit.symbol.assert_called_once_with()
        ws.mock_axis.mock_unit.mock_symbol.utf8.assert_called_once_with()
        expected_output = MatrixWorkspaceTableViewModel \
            .HORIZONTAL_HEADER_DISPLAY_STRING \
            .format(mock_section, expected_bin_centre, MockMantidSymbol.TEST_UTF8)
        self.assertEqual(expected_output, output)
    def _run_test_headerData_horizontal_header_display_role(self, is_histogram_data, mock_return_values, mock_section,
                                                            expected_bin_centre):
        ws = MockWorkspace(read_return=mock_return_values, isHistogramData=is_histogram_data)
        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        output = model.headerData(mock_section, Qt.Horizontal, Qt.DisplayRole)

        ws.isHistogramData.assert_called_once_with()
        ws.readX.assert_called_once_with(0)
        ws.getAxis.assert_called_once_with(AXIS_INDEX_FOR_HORIZONTAL)
        ws.mock_axis.getUnit.assert_called_once_with()
        ws.mock_axis.mock_unit.symbol.assert_called_once_with()
        ws.mock_axis.mock_unit.mock_symbol.utf8.assert_called_once_with()
        expected_output = MatrixWorkspaceTableViewModel \
            .HORIZONTAL_HEADER_DISPLAY_STRING \
            .format(mock_section, expected_bin_centre, MockMantidSymbol.TEST_UTF8)
        self.assertEqual(expected_output, output)
Ejemplo n.º 19
0
    def test_headerData_vertical_header_display_for_numeric_axis_with_point_data(
            self):
        dummy_unit = 'unit'
        ws = MockWorkspace()
        mock_axis = Mock()
        mock_axis.isNumeric.return_value = True
        expected_value = 0.
        mock_axis.label = MagicMock(side_effect=[str(expected_value)])
        mock_axis.getUnit().symbol().utf8.return_value = dummy_unit
        ws.getAxis.return_value = mock_axis

        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        mock_section = 0
        output = model.headerData(mock_section, Qt.Vertical, Qt.DisplayRole)

        expected_output = MatrixWorkspaceTableViewModel.VERTICAL_HEADER_DISPLAY_STRING_FOR_NUMERIC_AXIS.format(
            mock_section, expected_value, dummy_unit)
        self.assertEqual(expected_output, output)
Ejemplo n.º 20
0
    def test_headerData_vertical_header_tooltip_for_numeric_axis_with_binned_data(
            self):
        dummy_unit = 'unit'
        ws = MockWorkspace()
        mock_axis = Mock()
        mock_axis.isNumeric.return_value = True
        ws.getNumberHistograms.return_value = 1
        mock_axis.length.return_value = 2
        mock_axis.label = MagicMock(side_effect=["0.5"])
        mock_axis.getUnit().symbol().utf8.return_value = dummy_unit
        ws.getAxis.return_value = mock_axis

        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        mock_section = 0
        output = model.headerData(mock_section, Qt.Vertical, Qt.ToolTipRole)

        expected_output = MatrixWorkspaceTableViewModel.VERTICAL_HEADER_TOOLTIP_STRING_FOR_NUMERIC_AXIS.format(
            mock_section, 0.5, dummy_unit)
        self.assertEqual(expected_output, output)
Ejemplo n.º 21
0
    def test_set_unicode_unit_label(self):
        """
        Set the label of the x-axis using ascii only with a non-ascii character and make sure it's handled properly.
        """
        ws = CreateWorkspace(DataX=[0, 1, 2],
                             DataY=[3, 7, 5],
                             DataE=[0.2, 0.3, 0.1],
                             NSpec=1)
        label_unit = ws.getAxis(0).setUnit("Label")
        microseconds = "\u00B5s"
        # Second argument will implicitly call the ascii only constructor of UnitLabel.
        # We are intentionally passing a non-ascii string to try and break it.
        label_unit.setLabel("Time", microseconds)

        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)
        header = model.headerData(0, Qt.Horizontal, Qt.DisplayRole)

        # Header should contain the microseconds unicode string.
        self.assertTrue(microseconds in header)
    def test_histogram_data_has_one_extra_x_column(self):
        """
        Test that an extra column is added if the workspace is HistogramData. This is the column that
        contains the right boundary for the last bin.
        """
        mock_data = [1, 2, 3, 4, 5, 6, 7]
        data_len = len(mock_data)
        ws = MockWorkspace(read_return=mock_data, isHistogramData=True)

        model_type = MatrixWorkspaceTableViewModelType.x
        model = MatrixWorkspaceTableViewModel(ws, model_type)

        self.assertEqual(data_len + 1, model.columnCount())

        # test that it is not added to Y and E
        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)

        self.assertEqual(data_len, model.columnCount())

        model_type = MatrixWorkspaceTableViewModelType.e
        model = MatrixWorkspaceTableViewModel(ws, model_type)

        self.assertEqual(data_len, model.columnCount())
def setup_common_for_test_data():
    """
    Common configuration of variables and mocking for testing
    MatrixWorkspaceDisplayTableViewModel's data and headerData functions
    """
    # Create some mock data for the mock workspace
    row = 2
    column = 2
    # make a workspace with 0s
    mock_data = [0] * 10
    # set one of them to be not 0
    mock_data[column] = 999
    model_type = MatrixWorkspaceTableViewModelType.x
    # pass onto the MockWorkspace so that it returns it when read from the TableViewModel
    ws = MockWorkspace(read_return=mock_data)
    ws.hasMaskedBins = Mock(return_value=True)
    ws.maskedBinsIndices = Mock(return_value=[column])
    model = MatrixWorkspaceTableViewModel(ws, model_type)
    # The model retrieves the spectrumInfo object, and our MockWorkspace has already given it
    # the MockSpectrumInfo, so all that needs to be done here is to set up the correct method Mocks
    model.ws_spectrum_info.hasDetectors = Mock(return_value=True)
    index = MockQModelIndex(row, column)
    return ws, model, row, index
    def test_histogram_data_has_one_extra_x_column(self):
        """
        Test that an extra column is added if the workspace is HistogramData. This is the column that
        contains the right boundary for the last bin.
        """
        mock_data = [1, 2, 3, 4, 5, 6, 7]
        data_len = len(mock_data)
        ws = MockWorkspace(read_return=mock_data, isHistogramData=True)

        model_type = MatrixWorkspaceTableViewModelType.x
        model = MatrixWorkspaceTableViewModel(ws, model_type)

        self.assertEqual(data_len + 1, model.columnCount())

        # test that it is not added to Y and E
        model_type = MatrixWorkspaceTableViewModelType.y
        model = MatrixWorkspaceTableViewModel(ws, model_type)

        self.assertEqual(data_len, model.columnCount())

        model_type = MatrixWorkspaceTableViewModelType.e
        model = MatrixWorkspaceTableViewModel(ws, model_type)

        self.assertEqual(data_len, model.columnCount())
 def test_invalid_model_type(self):
     ws = MockWorkspace()
     with self.assertRaises(AssertionError):
         MatrixWorkspaceTableViewModel(ws, "My Model Type")
 def test_correct_cell_colors(self):
     ws = MockWorkspace()
     model = MatrixWorkspaceTableViewModel(ws, MatrixWorkspaceTableViewModelType.x)
     self.assertEqual((240, 240, 240, 255), model.masked_color.getRgb())
     self.assertEqual((255, 253, 209, 255), model.monitor_color.getRgb())