mirror of
https://github.com/qgis/QGIS.git
synced 2025-05-01 00:02:48 -04:00
167 lines
4.7 KiB
Python
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()
|