1 | import sys |
---|
2 | import unittest |
---|
3 | import webbrowser |
---|
4 | from time import sleep |
---|
5 | |
---|
6 | from PyQt4 import QtGui |
---|
7 | from PyQt4.QtTest import QTest |
---|
8 | from PyQt4 import QtCore |
---|
9 | |
---|
10 | import sas.qtgui.path_prepare |
---|
11 | from sas.qtgui.Perspectives.Corfunc.CorfuncPerspective import CorfuncWindow |
---|
12 | from sas.sascalc.dataloader.loader import Loader |
---|
13 | |
---|
14 | from sas.qtgui.MainWindow.DataManager import DataManager |
---|
15 | import sas.qtgui.Utilities.LocalConfig |
---|
16 | import sas.qtgui.Utilities.GuiUtils as GuiUtils |
---|
17 | |
---|
18 | if not QtGui.QApplication.instance(): |
---|
19 | app = QtGui.QApplication(sys.argv) |
---|
20 | |
---|
21 | |
---|
22 | class 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 | |
---|
40 | class 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 | |
---|
101 | if __name__ == "__main__": |
---|
102 | unittest.main() |
---|