QGIS/tests/src/python/test_qgspanelwidgetstack.py
2017-03-05 10:21:24 +01:00

167 lines
4.7 KiB
Python

# -*- coding: utf-8 -*-
"""QGIS Unit tests for QgsPanelWidgetStack.
.. note:: This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
"""
__author__ = 'Nyall Dawson'
__date__ = '05/10/2016'
__copyright__ = 'Copyright 2016, The QGIS Project'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
import qgis # NOQA
from qgis.gui import QgsPanelWidget, QgsPanelWidgetStack
from qgis.testing import start_app, unittest
from qgis.PyQt.QtTest import QSignalSpy
start_app()
class TestQgsPanelWidgetStack(unittest.TestCase):
def testMainPanel(self):
""" test mainPanel methods """
s = QgsPanelWidgetStack()
# no main panel
self.assertFalse(s.mainPanel())
self.assertFalse(s.takeMainPanel())
# set main panel
p1 = QgsPanelWidget()
s.setMainPanel(p1)
self.assertEqual(s.mainPanel(), p1)
# takeMainPanel()
self.assertEqual(s.takeMainPanel(), p1)
self.assertFalse(s.mainPanel())
self.assertFalse(s.takeMainPanel())
def testAddingPanels(self):
""" test adding panels to stack """
s = QgsPanelWidgetStack()
mp = QgsPanelWidget()
s.setMainPanel(mp)
p1 = QgsPanelWidget()
s.showPanel(p1)
self.assertEqual(s.currentPanel(), p1)
p2 = QgsPanelWidget()
s.showPanel(p2)
self.assertEqual(s.currentPanel(), p2)
def testAcceptCurrentPanel(self):
""" test accepting current panel """
s = QgsPanelWidgetStack()
# call on empty stack
s.acceptCurrentPanel()
mp = QgsPanelWidget()
s.setMainPanel(mp)
# call on main panel - should be no effect
s.acceptCurrentPanel()
self.assertEqual(s.mainPanel(), mp)
self.assertEqual(s.currentPanel(), mp)
# add panels
p1 = QgsPanelWidget()
s.showPanel(p1)
p2 = QgsPanelWidget()
s.showPanel(p2)
# accept them
self.assertEqual(s.currentPanel(), p2)
p2_accept_spy = QSignalSpy(p2.panelAccepted)
s.acceptCurrentPanel()
self.assertEqual(s.currentPanel(), p1)
self.assertEqual(len(p2_accept_spy), 1)
p1_accept_spy = QSignalSpy(p1.panelAccepted)
s.acceptCurrentPanel()
self.assertEqual(s.currentPanel(), mp)
self.assertEqual(len(p1_accept_spy), 1)
def testAcceptAllPanel(self):
""" test accepting all panels """
s = QgsPanelWidgetStack()
# call on empty stack
s.acceptAllPanels()
mp = QgsPanelWidget()
s.setMainPanel(mp)
# call on main panel - should be no effect
s.acceptAllPanels()
self.assertEqual(s.mainPanel(), mp)
self.assertEqual(s.currentPanel(), mp)
# add panels
p1 = QgsPanelWidget()
s.showPanel(p1)
p1_accept_spy = QSignalSpy(p1.panelAccepted)
p2 = QgsPanelWidget()
s.showPanel(p2)
p2_accept_spy = QSignalSpy(p2.panelAccepted)
p3 = QgsPanelWidget()
s.showPanel(p3)
p3_accept_spy = QSignalSpy(p3.panelAccepted)
# accept all
s.acceptAllPanels()
self.assertEqual(s.currentPanel(), mp)
self.assertEqual(len(p1_accept_spy), 1)
self.assertEqual(len(p2_accept_spy), 1)
self.assertEqual(len(p3_accept_spy), 1)
def testClear(self):
""" test clearing stack """
s = QgsPanelWidgetStack()
# call on empty stack
s.clear()
# add panels
mp = QgsPanelWidget()
s.setMainPanel(mp)
p1 = QgsPanelWidget()
s.showPanel(p1)
p2 = QgsPanelWidget()
s.showPanel(p2)
p3 = QgsPanelWidget()
s.showPanel(p3)
# clear
s.clear()
self.assertFalse(s.currentPanel())
self.assertFalse(s.mainPanel())
def testTakeMainAcceptsAll(self):
""" test that taking the main panel accepts all open child panels"""
s = QgsPanelWidgetStack()
mp = QgsPanelWidget()
s.setMainPanel(mp)
p1 = QgsPanelWidget()
s.showPanel(p1)
p1_accept_spy = QSignalSpy(p1.panelAccepted)
p2 = QgsPanelWidget()
s.showPanel(p2)
p2_accept_spy = QSignalSpy(p2.panelAccepted)
p3 = QgsPanelWidget()
s.showPanel(p3)
p3_accept_spy = QSignalSpy(p3.panelAccepted)
# take main
s.takeMainPanel()
self.assertEqual(len(p1_accept_spy), 1)
self.assertEqual(len(p2_accept_spy), 1)
self.assertEqual(len(p3_accept_spy), 1)
if __name__ == '__main__':
unittest.main()