source: sasview/src/sas/qtgui/Perspectives/Corfunc/UnitTesting/CorfuncTest.py @ 9c1e5628

Last change on this file since 9c1e5628 was 9c1e5628, checked in by Adam Washington <adam.washington@…>, 6 years ago

Unit testing the Corfunc Window

  • Property mode set to 100644
File size: 3.7 KB
Line 
1import sys
2import unittest
3import webbrowser
4from time import sleep
5
6from PyQt4 import QtGui
7from PyQt4.QtTest import QTest
8from PyQt4 import QtCore
9
10import sas.qtgui.path_prepare
11from sas.qtgui.Perspectives.Corfunc.CorfuncPerspective import CorfuncWindow
12from sas.sascalc.dataloader.loader import Loader
13
14from sas.qtgui.MainWindow.DataManager import DataManager
15import sas.qtgui.Utilities.LocalConfig
16import sas.qtgui.Utilities.GuiUtils as GuiUtils
17
18if not QtGui.QApplication.instance():
19    app = QtGui.QApplication(sys.argv)
20
21
22class CorfuncTest(unittest.TestCase):
23    '''Test the Corfunc Interface'''
24    def setUp(self):
25        '''Create the CorfuncWindow'''
26        self.widget = CorfuncWindow(None)
27
28    def tearDown(self):
29        '''Destroy the CorfuncWindow'''
30        self.widget.close()
31        self.widget = None
32
33    def testDefaults(self):
34        '''Test the GUI in its default state'''
35        self.assertIsInstance(self.widget, QtGui.QWidget)
36        self.assertEqual(self.widget.windowTitle(), "Corfunc Perspective")
37        self.assertEqual(self.widget.model.columnCount(), 1)
38        self.assertEqual(self.widget.model.rowCount(), 15)
39
40class CorfuncDataTest(unittest.TestCase):
41    '''Test the actual Corfunc Usase'''
42    def setUp(self):
43        '''Create a CorfuncWindow and populate it with data'''
44        self.widget = CorfuncWindow(None)
45        path = "../test/corfunc/test/98929.txt"
46        f = Loader().load(path)
47        manager = DataManager()
48        new_data = manager.create_gui_data(f[0], path)
49        output = {new_data.id: new_data}
50        item = QtGui.QStandardItem(True)
51        object_item = QtGui.QStandardItem()
52        object_item.setData(QtCore.QVariant(new_data))
53        item.setChild(0, object_item)
54        self.widget.setData([item])
55
56    def tearDown(self):
57        '''Destroy the CorfuncWindow'''
58        self.widget.close()
59        self.widget = None
60
61    def testProcess(self):
62        """Test the full analysis path"""
63        self.assertEqual(float(self.widget.bg.text()), 0.0)
64
65        self.widget.qMin.setValue(0.01)
66        self.widget.qMax1.setValue(0.20)
67        self.widget.qMax2.setValue(0.22)
68        self.widget.transformCombo.setCurrentIndex(0)
69
70        self.widget.calculateBgBtn.click()
71        self.assertTrue(float(self.widget.bg.text()) > 0.2)
72
73        self.widget.extrapolateBtn.click()
74        self.assertTrue(float(self.widget.guinierA.text()) > 1)
75        self.assertTrue(float(self.widget.guinierB.text()) < -10000)
76        self.assertTrue(float(self.widget.porodK.text()) > 10)
77        self.assertTrue(float(self.widget.porodSigma.text()) > 10)
78
79        #################################################
80        # The testing framework does not seem to handle
81        # multi-threaded Qt.  Signals emitted from threads
82        # are not detected when run in the unittest, even
83        # though they ARE handled in the actual application.
84        #################################################
85        # sleep(1)
86        # self.widget.transformBtn.click()
87        # while float(self.widget.longPeriod.text()) == 0.0:
88        #     print("Waiting")
89        #     sleep(1)
90        # self.assertTrue(float(self.widget.longPeriod.text()) > 10)
91        # self.assertTrue(float(self.widget.polydisp.text()) > 0)
92        # self.assertTrue(float(self.widget.localCrystal.text()) > 0)
93        # self.assertTrue(float(self.widget.longPeriod.text()) >
94        #                 float(self.widget.avgHardBlock.text()) > 0)
95        # self.assertTrue(float(self.widget.longPeriod.text()) >
96        #                 float(self.widget.avgIntThick.text()) > 0)
97        # self.assertTrue(float(self.widget.longPeriod.text()) >
98        #                 float(self.widget.avgCoreThick.text()) > 0)
99
100
101if __name__ == "__main__":
102    unittest.main()
Note: See TracBrowser for help on using the repository browser.