201 lines
5.6 KiB
Python
201 lines
5.6 KiB
Python
import sys
|
|
from unittest import mock
|
|
|
|
from grum.mainwin import MainWindow
|
|
from grum.mdi import MDIArea, MDISubMultiPlot, MDISubPlot
|
|
from grum.mdi.mdisubwin import MDISubWindow
|
|
from grum.theme import MDI_BKG
|
|
|
|
from PyQt5.QtGui import QPainter
|
|
from PyQt5.QtWidgets import QApplication, QMdiArea
|
|
|
|
|
|
class TestMDIArea:
|
|
|
|
def setup_method(self):
|
|
print("setup")
|
|
self.app = QApplication(sys.argv)
|
|
self.mw = MainWindow(add_examples=True)
|
|
self.mw.show()
|
|
|
|
|
|
def teardown_method(self):
|
|
print("teardown")
|
|
self.mw.rst.wait_for_stop()
|
|
self.app.quit()
|
|
print("app quit called")
|
|
del self.mw
|
|
del self.app
|
|
|
|
|
|
def test_on_cascade(self):
|
|
mdi = self.mw.mdi
|
|
|
|
mdi.enable_subwindow_view = mock.MagicMock()
|
|
mdi.cascadeSubWindows = mock.MagicMock()
|
|
mdi.menu.checkboxes["Multiple windows"].setChecked(False)
|
|
assert mdi.menu.checkboxes["Multiple windows"].isChecked() == False
|
|
|
|
mdi.on_cascade()
|
|
|
|
assert mdi.menu.checkboxes["Multiple windows"].isChecked() == True
|
|
mdi.enable_subwindow_view.assert_called_once()
|
|
mdi.cascadeSubWindows.assert_called_once()
|
|
|
|
|
|
def test_on_tile(self):
|
|
mdi = self.mw.mdi
|
|
|
|
mdi.enable_subwindow_view = mock.MagicMock()
|
|
mdi.tileSubWindows = mock.MagicMock()
|
|
mdi.menu.checkboxes["Multiple windows"].setChecked(False)
|
|
assert mdi.menu.checkboxes["Multiple windows"].isChecked() == False
|
|
|
|
mdi.on_tile()
|
|
|
|
assert mdi.menu.checkboxes["Multiple windows"].isChecked() == True
|
|
mdi.enable_subwindow_view.assert_called_once()
|
|
mdi.tileSubWindows.assert_called_once()
|
|
|
|
|
|
def test_enable_single_window_mode(self):
|
|
mdi = self.mw.mdi
|
|
mdi.enable_subwindow_view = mock.MagicMock()
|
|
mdi.closeInactiveSubWindows = mock.MagicMock()
|
|
active = mdi.activeSubWindow()
|
|
assert mdi.activeSubWindow() == None
|
|
|
|
sine_item = self.mw.lst.lst.get("sine")
|
|
sub = MDISubPlot("sine", sine_item.value)
|
|
mdi.addSubWindow(sub)
|
|
mdi.setActiveSubWindow(MDISubWindow("sine"))
|
|
|
|
# assert mdi.activeSubWindow() != None #TODO: check this!
|
|
|
|
mdi.enable_single_window_mode()
|
|
|
|
mdi.enable_subwindow_view.assert_called_once()
|
|
mdi.closeInactiveSubWindows.assert_called_once()
|
|
|
|
# active = mdi.activeSubWindow()
|
|
# if active:
|
|
# active.showMaximized()
|
|
# active.frame_off()
|
|
|
|
|
|
def test_enable_subwindow_view(self):
|
|
mdi = self.mw.mdi
|
|
|
|
mdi.setViewMode = mock.MagicMock()
|
|
sine_item = self.mw.lst.lst.get("sine")
|
|
sub = MDISubPlot("sine", sine_item.value)
|
|
mdi.addSubWindow(sub)
|
|
sub.frame_on = mock.MagicMock()
|
|
|
|
mdi.enable_subwindow_view()
|
|
|
|
mdi.setViewMode.assert_called_once_with(QMdiArea.SubWindowView)
|
|
|
|
# sub.frame_on.assert_called_once() #TODO: check this
|
|
|
|
|
|
def test_enable_tabbed_view(self):
|
|
mdi = self.mw.mdi
|
|
mdi.setViewMode = mock.MagicMock()
|
|
|
|
mdi.enable_tabbed_view()
|
|
mdi.setViewMode.assert_called_once_with(QMdiArea.TabbedView)
|
|
|
|
|
|
def test_add(self):
|
|
mdi = self.mw.mdi
|
|
sine_item = self.mw.lst.lst.get("sine")
|
|
sub = MDISubPlot("sine", sine_item.value)
|
|
mdi.add_multiple = mock.MagicMock()
|
|
mdi.add_single = mock.MagicMock()
|
|
assert mdi.menu.checkboxes["Single window"].isChecked() == False
|
|
|
|
mdi.add(sub)
|
|
mdi.add_multiple.assert_called_once_with(sub)
|
|
|
|
mdi.menu.checkboxes['Single window'].setChecked(True)
|
|
assert mdi.menu.checkboxes["Single window"].isChecked() == True
|
|
|
|
mdi.add(sub)
|
|
mdi.add_single.assert_called_once_with(sub)
|
|
|
|
|
|
def test_add_multiple(self):
|
|
mdi = self.mw.mdi
|
|
mdi.addSubWindow = mock.MagicMock()
|
|
sine_item = self.mw.lst.lst.get("sine")
|
|
sub = MDISubPlot("sine", sine_item.value)
|
|
sub.show = mock.MagicMock()
|
|
|
|
mdi.add_multiple(sub)
|
|
mdi.addSubWindow.assert_called_once()
|
|
sub.show.assert_called_once()
|
|
|
|
|
|
def test_add_single(self):
|
|
mdi = self.mw.mdi
|
|
mdi.addSubWindow = mock.MagicMock()
|
|
mdi.closeAllSubWindows = mock.MagicMock()
|
|
sine_item = self.mw.lst.lst.get("sine")
|
|
sub = MDISubPlot("sine", sine_item.value)
|
|
sub.maximize = mock.MagicMock()
|
|
sub.frame_off = mock.MagicMock()
|
|
|
|
mdi.add_single(sub)
|
|
|
|
mdi.closeAllSubWindows.assert_called_once()
|
|
mdi.addSubWindow.assert_called_once_with(sub)
|
|
sub.maximize.assert_called_once()
|
|
sub.frame_off.assert_called_once()
|
|
|
|
|
|
def test_paintEvent(self):
|
|
mdi = self.mw.mdi
|
|
|
|
mdi._draw_watermark = mock.MagicMock()
|
|
mdi.paintEvent('event')
|
|
mdi._draw_watermark.assert_called_once()
|
|
|
|
|
|
def test_findSubWindow(self):
|
|
mdi = self.mw.mdi
|
|
sine_item = self.mw.lst.lst.get("sine")
|
|
sub = MDISubPlot("sine", sine_item.value)
|
|
mdi.add(sub)
|
|
|
|
ret = mdi.findSubWindow('sine')
|
|
|
|
assert ret == sub
|
|
|
|
ret = mdi.findSubWindow('cosine')
|
|
|
|
assert ret == None
|
|
|
|
|
|
def test_closeInactiveSubWindows(self):
|
|
mdi = self.mw.mdi
|
|
|
|
sine_item = self.mw.lst.lst.get("sine")
|
|
sub = MDISubPlot("sine", sine_item.value)
|
|
mdi.add(sub)
|
|
cosine_item = self.mw.lst.lst.get("cosine")
|
|
cosine_sub = MDISubPlot("cosine", cosine_item.value)
|
|
mdi.add(cosine_sub)
|
|
sub.close = mock.MagicMock()
|
|
|
|
mdi.closeInactiveSubWindows()
|
|
|
|
active = mdi.activeSubWindow()
|
|
assert active == cosine_sub
|
|
for sub in mdi.subWindowList():
|
|
if sub != active:
|
|
sub.close.assert_called_once()
|
|
|
|
|
|
|