Skip to content
Snippets Groups Projects
Commit df636c92 authored by Dimitar Tasev's avatar Dimitar Tasev
Browse files

Tests for model, presenter and TableViewModel, re #21593

parent f5e0dac7
No related branches found
No related tags found
No related merge requests found
......@@ -9,81 +9,37 @@
#
from __future__ import (absolute_import, division, print_function)
from mantid.simpleapi import LoadEventNexus, CreateMDWorkspace
from mantidqt.widgets.samplelogs.model import SampleLogsModel
import unittest
from mock import Mock
class MatrixWorkspaceDisplayModelTest(unittest.TestCase):
def test_model(self):
ws = LoadEventNexus('CNCS_7860', MetaDataOnly=True)
model = SampleLogsModel(ws)
self.assertEqual(model.get_exp(), 0)
self.assertEqual(model.get_name(), 'ws')
self.assertEqual(model.getNumExperimentInfo(), 0)
log = model.get_log("Speed5")
self.assertEqual(log.name, "Speed5")
self.assertEqual(log.size(), 4)
from mantidqt.widgets.matrixworkspacedisplay.model import MatrixWorkspaceDisplayModel
from mantidqt.widgets.matrixworkspacedisplay.table_view_model import MatrixWorkspaceTableViewModelType
from mantidqt.widgets.matrixworkspacedisplay.test_helpers.matrixworkspacedisplay_common import \
MockWorkspace
log_names = model.get_log_names()
self.assertEqual(len(log_names), 48)
self.assertIn("Speed5", log_names)
values = model.get_log_display_values("Speed5")
self.assertEqual(values[0], "Speed5")
self.assertEqual(values[1], "float series")
self.assertEqual(values[2], "(4 entries)")
self.assertEqual(values[3], "Hz")
self.assertTrue(model.is_log_plottable("Speed5"))
self.assertFalse(model.is_log_plottable("duration"))
stats = model.get_statistics("Speed5")
self.assertEqual(stats.maximum, 300.0)
self.assertFalse(model.isMD())
class MatrixWorkspaceDisplayModelTest(unittest.TestCase):
itemModel = model.getItemModel()
self.assertEqual(itemModel.horizontalHeaderItem(0).text(), "Name")
self.assertEqual(itemModel.horizontalHeaderItem(1).text(), "Type")
self.assertEqual(itemModel.horizontalHeaderItem(2).text(), "Value")
self.assertEqual(itemModel.horizontalHeaderItem(3).text(), "Units")
self.assertEqual(itemModel.rowCount(), 48)
self.assertEqual(itemModel.item(0,0).text(), "ChopperStatus1")
self.assertEqual(itemModel.item(0,1).text(), "float series")
self.assertEqual(itemModel.item(0,2).text(), "4.0")
self.assertEqual(itemModel.item(0,3).text(), "")
def test_get_name(self):
ws = MockWorkspace()
expected_name = "TEST_WORKSPACE"
ws.name = Mock(return_value=expected_name)
model = MatrixWorkspaceDisplayModel(ws)
def test_model_MD(self):
ws1 = LoadEventNexus("CNCS_7860", MetaDataOnly=True)
ws2 = LoadEventNexus("VIS_19351", MetaDataOnly=True)
md = CreateMDWorkspace(Dimensions=1, Extents='-1,1', Names='A', Units='U')
md.addExperimentInfo(ws1)
md.addExperimentInfo(ws2)
model = SampleLogsModel(md)
self.assertEqual(expected_name, model.get_name())
self.assertEqual(model.get_exp(), 0)
self.assertEqual(model.get_name(), 'md')
self.assertEqual(model.getNumExperimentInfo(), 2)
def test_get_item_model(self):
ws = MockWorkspace()
expected_name = "TEST_WORKSPACE"
ws.name = Mock(return_value=expected_name)
model = MatrixWorkspaceDisplayModel(ws)
values = model.get_log_display_values("duration")
self.assertEqual(values[0], "duration")
self.assertEqual(values[1], "number")
self.assertEqual(values[2], 148.0)
self.assertEqual(values[3], "second")
x_model, y_model, e_model = model.get_item_model()
# Change exp
model.set_exp(1)
self.assertEqual(model.get_exp(), 1)
values = model.get_log_display_values("duration")
self.assertEqual(values[0], "duration")
self.assertEqual(values[1], "number")
self.assertEqual(values[2], 4.616606712341309)
self.assertEqual(values[3], "second")
self.assertEqual(x_model.type, MatrixWorkspaceTableViewModelType.x)
self.assertEqual(y_model.type, MatrixWorkspaceTableViewModelType.y)
self.assertEqual(e_model.type, MatrixWorkspaceTableViewModelType.e)
if __name__ == '__main__':
......
......@@ -9,88 +9,81 @@
#
from __future__ import (absolute_import, division, print_function)
import matplotlib
matplotlib.use('Agg') # noqa: E402
import unittest
from mantidqt.widgets.samplelogs.model import SampleLogsModel
from mantidqt.widgets.samplelogs.presenter import SampleLogs
from mantidqt.widgets.samplelogs.view import SampleLogsView
from mock import Mock
import unittest
try:
from unittest import mock
except ImportError:
import mock
class SampleLogsTest(unittest.TestCase):
def setUp(self):
self.view = mock.Mock(spec=SampleLogsView)
self.view.get_row_log_name = mock.Mock(return_value="Speed5")
self.view.get_selected_row_indexes = mock.Mock(return_value=[5])
self.view.get_exp = mock.Mock(return_value=1)
self.model = mock.Mock(spec=SampleLogsModel)
self.model.get_ws = mock.Mock(return_value='ws')
self.model.is_log_plottable = mock.Mock(return_value=True)
self.model.get_statistics = mock.Mock(return_value=[1,2,3,4])
self.model.get_exp = mock.Mock(return_value=0)
def test_sampleLogs(self):
presenter = SampleLogs(None, model=self.model, view=self.view)
# setup calls
self.assertEqual(self.view.set_model.call_count, 1)
self.assertEqual(self.model.getItemModel.call_count, 1)
# plot_logs
presenter.plot_logs()
self.model.is_log_plottable.assert_called_once_with("Speed5")
self.assertEqual(self.model.get_ws.call_count, 1)
self.view.plot_selected_logs.assert_called_once_with('ws', 0, [5])
# update_stats
presenter.update_stats()
self.assertEqual(self.model.get_statistics.call_count, 1)
self.view.get_row_log_name.assert_called_with(5)
self.view.set_statistics.assert_called_once_with([1,2,3,4])
self.assertEqual(self.view.clear_statistics.call_count, 0)
self.view.reset_mock()
self.view.get_selected_row_indexes = mock.Mock(return_value=[2,5])
presenter.update_stats()
self.assertEqual(self.view.set_statistics.call_count, 0)
self.assertEqual(self.view.clear_statistics.call_count, 1)
# changeExpInfo
self.model.reset_mock()
self.view.reset_mock()
presenter.changeExpInfo()
self.assertEqual(self.view.get_selected_row_indexes.call_count, 3)
self.assertEqual(self.view.get_exp.call_count, 1)
self.model.set_exp.assert_called_once_with(1)
self.view.set_selected_rows.assert_called_once_with([2,5])
# clicked
self.model.reset_mock()
self.view.reset_mock()
presenter.clicked()
self.assertEqual(self.view.get_selected_row_indexes.call_count, 2)
# double clicked
self.model.reset_mock()
self.view.reset_mock()
index = mock.Mock()
index.row = mock.Mock(return_value=7)
presenter.doubleClicked(index)
self.view.get_row_log_name.assert_called_once_with(7)
self.model.get_log.assert_called_once_with("Speed5")
from mantidqt.widgets.matrixworkspacedisplay.presenter import MatrixWorkspaceDisplay
from mantidqt.widgets.matrixworkspacedisplay.test_helpers.matrixworkspacedisplay_common import MockWorkspace, \
MockQModelIndex, MockQModelIndexSibling
from mantidqt.widgets.matrixworkspacedisplay.test_helpers.mock_matrixworkspacedisplay_view import \
MockMatrixWorkspaceDisplayView, MockQTableView
class MatrixWorkspaceDisplayPresenterTest(unittest.TestCase):
def test_setup_table(self):
ws = MockWorkspace()
view = MockMatrixWorkspaceDisplayView()
presenter = MatrixWorkspaceDisplay(ws, view=view)
self.assertEqual(3, view.set_context_menu_actions.call_count)
self.assertEqual(1, view.set_model.call_count)
def test_action_copy_spectrum_values(self):
ws = MockWorkspace()
view = MockMatrixWorkspaceDisplayView()
presenter = MatrixWorkspaceDisplay(ws, view=view)
mock_table = MockQTableView()
# two rows are selected in different positions
mock_indexes = [MockQModelIndex(0, 1), MockQModelIndex(3, 1)]
mock_table.mock_selection_model.selectedRows = Mock(return_value=mock_indexes)
mock_read = Mock(return_value=[43, 99])
expected_string = "43 99\n43 99"
presenter.action_copy_spectrum_values(mock_table, mock_read)
view.copy_to_clipboard.assert_called_once_with(expected_string)
def test_action_copy_spectrum_values_no_selection(self):
self.skipTest("Not implemented")
def test_action_copy_bin_values(self):
ws = MockWorkspace()
view = MockMatrixWorkspaceDisplayView()
presenter = MatrixWorkspaceDisplay(ws, view=view)
mock_table = MockQTableView()
# two columns are selected at different positions
mock_indexes = [MockQModelIndex(0, 0), MockQModelIndex(0, 3)]
mock_table.mock_selection_model.selectedColumns = Mock(return_value=mock_indexes)
# change the mock ws to have 3 histograms
ws.getNumberHistograms = Mock(return_value=3)
mock_read = Mock(return_value=[83, 11, 33, 70])
expected_string = "83 70\n83 70\n83 70"
presenter.action_copy_bin_values(mock_table, mock_read)
view.copy_to_clipboard.assert_called_once_with(expected_string)
def test_action_copy_bin_values_no_selection(self):
self.skipTest("Not Implemented")
def test_action_copy_cell(self):
ws = MockWorkspace()
view = MockMatrixWorkspaceDisplayView()
presenter = MatrixWorkspaceDisplay(ws, view=view)
mock_table = MockQTableView()
# two columns are selected at different positions
mock_table.mock_selection_model.currentIndex = Mock(return_value=MockQModelIndex(0, 2))
# change the mock ws to have 3 histograms
ws.getNumberHistograms = Mock(return_value=3)
presenter.action_copy_cell(mock_table)
view.copy_to_clipboard.assert_called_once_with(MockQModelIndexSibling.TEST_SIBLING_DATA)
if __name__ == '__main__':
......
......@@ -18,7 +18,7 @@ from qtpy.QtCore import Qt
from mantidqt.widgets.matrixworkspacedisplay.table_view_model import MatrixWorkspaceTableViewModel, \
MatrixWorkspaceTableViewModelType
from mantidqt.widgets.matrixworkspacedisplay.test_helpers.test_matrixworkspacedisplay_tableviewmodel_common import \
from mantidqt.widgets.matrixworkspacedisplay.test_helpers.matrixworkspacedisplay_common import \
MockQModelIndex, MockWorkspace, setup_common_for_test_data, AXIS_INDEX_FOR_VERTICAL, MockMantidAxis, MockSpectrum, \
MockMantidSymbol, AXIS_INDEX_FOR_HORIZONTAL, MockMantidUnit
......
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