source: sasview/src/sas/qtgui/Perspectives/Fitting/UnitTesting/MultiConstraintTest.py @ da9a0722

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalc
Last change on this file since da9a0722 was da9a0722, checked in by Piotr Rozyczko <rozyczko@…>, 6 years ago

unit test updates

  • Property mode set to 100644
File size: 3.7 KB
Line 
1import sys
2import unittest
3import numpy as np
4import webbrowser
5
6from unittest.mock import MagicMock
7
8from PyQt5 import QtGui, QtWidgets
9from PyQt5 import QtWebKit
10
11# set up import paths
12import path_prepare
13
14# Local
15from sas.qtgui.Perspectives.Fitting.MultiConstraint import MultiConstraint
16
17if not QtWidgets.QApplication.instance():
18    app = QtWidgets.QApplication(sys.argv)
19
20class MultiConstraintTest(unittest.TestCase):
21    '''Test the MultiConstraint dialog'''
22    def setUp(self):
23        '''Create MultiConstraint dialog'''
24        params = ['p1', 'p2']
25        self.p1 = params[0]
26        self.p2 = params[1]
27        self.widget = MultiConstraint(parent=None, params=params)
28
29    def tearDown(self):
30        '''Destroy the GUI'''
31        self.widget.close()
32        self.widget = None
33
34    def testDefaults(self):
35        '''Test the GUI in its default state'''
36        self.assertIsInstance(self.widget, QtWidgets.QDialog)
37        # Default title
38        self.assertEqual(self.widget.windowTitle(), "2 parameter constraint")
39
40        # modal window
41        self.assertTrue(self.widget.isModal())
42
43    def testLabels(self):
44        ''' various labels on the widget '''
45        # params related setup
46        self.assertEqual(self.widget.txtParam1.text(), self.p1)
47        self.assertEqual(self.widget.txtParam1_2.text(), self.p1)
48        self.assertEqual(self.widget.txtParam2.text(), self.p2)
49
50    def testTooltip(self):
51        ''' test the tooltip'''
52        tooltip = "E.g.\n%s = 2.0 * (%s)\n" %(self.p1, self.p2)
53        tooltip += "%s = sqrt(%s) + 5"%(self.p1, self.p2)
54        self.assertEqual(self.widget.txtConstraint.toolTip(), tooltip)
55
56    def testValidateFormula(self):
57        ''' assure enablement and color for valid formula '''
58        # Invalid string
59        self.widget.validateConstraint = MagicMock(return_value=False)
60        self.widget.validateFormula()
61        style_sheet = "QLineEdit {background-color: red;}"
62        self.assertFalse(self.widget.cmdOK.isEnabled())
63        self.assertEqual(self.widget.txtConstraint.styleSheet(),style_sheet)
64
65        # Valid string
66        self.widget.validateConstraint = MagicMock(return_value=True)
67        self.widget.validateFormula()
68        style_sheet = "QLineEdit {background-color: white;}"
69        self.assertTrue(self.widget.cmdOK.isEnabled())
70        self.assertEqual(self.widget.txtConstraint.styleSheet(),style_sheet)
71
72    def testValidateConstraint(self):
73        ''' constraint validator test'''
74        #### BAD
75        # none
76        self.assertFalse(self.widget.validateConstraint(None))
77        # inf
78        self.assertFalse(self.widget.validateConstraint(np.inf))
79        # 0
80        self.assertFalse(self.widget.validateConstraint(0))
81        # ""
82        self.assertFalse(self.widget.validateConstraint(""))
83        # p2_
84        self.assertFalse(self.widget.validateConstraint("p2_"))
85        # p1
86        self.assertFalse(self.widget.validateConstraint("p1"))
87
88        ### GOOD
89        # p2
90        self.assertTrue(self.widget.validateConstraint("p2"))
91        # " p2    "
92        self.assertTrue(self.widget.validateConstraint(" p2    "))
93        # sqrt(p2)
94        self.assertTrue(self.widget.validateConstraint("sqrt(p2)"))
95        # -p2
96        self.assertTrue(self.widget.validateConstraint("-p2"))
97        # log10(p2) - sqrt(p2) + p2
98        self.assertTrue(self.widget.validateConstraint("log10(p2) - sqrt(p2) + p2"))
99        # log10(    p2    ) +  p2
100        self.assertTrue(self.widget.validateConstraint("log10(    p2    ) +  p2  "))
101
102    def testOnHelp(self):
103        """
104        Test the default help renderer
105        """
106        webbrowser.open = MagicMock()
107
108        # invoke the tested method
109        self.widget.onHelp()
110
111        # see that webbrowser open was attempted
112        webbrowser.open.assert_called_once()
Note: See TracBrowser for help on using the repository browser.