Ignore:
Timestamp:
Apr 26, 2018 12:43:31 PM (6 years ago)
Author:
krzywon
Branches:
ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
Children:
6bd0d81
Parents:
0662f53
Message:

Penultimate group of working unit tests for qtgui P(r)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Inversion/UnitTesting/InversionPerspectiveTest.py

    r0662f53 rd79bb7e  
    1 import sys 
     1import time 
    22import unittest 
    3 import logging 
    43from unittest.mock import MagicMock 
    54 
    65from PyQt5 import QtGui, QtWidgets 
    7 from PyQt5.QtTest import QTest 
    8 from PyQt5 import QtCore 
    9  
    10 import sas.qtgui.path_prepare 
     6 
     7from sas.qtgui.Utilities.GuiUtils import * 
    118from sas.qtgui.Perspectives.Inversion.InversionPerspective import InversionWindow 
    129from sas.qtgui.Perspectives.Inversion.InversionUtils import WIDGETS 
    13 from sas.sascalc.dataloader.loader import Loader 
    1410from sas.qtgui.Plotting.PlotterData import Data1D 
    1511 
    16 from sas.qtgui.MainWindow.DataManager import DataManager 
    17 import sas.qtgui.Utilities.LocalConfig 
    1812import sas.qtgui.Utilities.GuiUtils as GuiUtils 
    1913 
     
    2216 
    2317 
     18class dummy_manager(object): 
     19    HELP_DIRECTORY_LOCATION = "html" 
     20    communicate = Communicate() 
     21 
     22    def communicator(self): 
     23        return self.communicate 
     24 
     25 
    2426class InversionTest(unittest.TestCase): 
    2527    """ Test the Inversion Perspective GUI """ 
     
    2729    def setUp(self): 
    2830        """ Create the InversionWindow """ 
    29         self.widget = InversionWindow(None) 
    30         self.widget.performEstimate = MagicMock() 
     31        self.widget = InversionWindow(dummy_manager()) 
     32        self.widget.show() 
    3133        self.fakeData1 = GuiUtils.HashableStandardItem("A") 
    3234        self.fakeData2 = GuiUtils.HashableStandardItem("B") 
    3335        reference_data1 = Data1D(x=[0.1, 0.2], y=[0.0, 0.0], dy=[0.0, 0.0]) 
     36        reference_data1.filename = "Test A" 
    3437        reference_data2 = Data1D(x=[0.1, 0.2], y=[0.0, 0.0], dy=[0.0, 0.0]) 
    35         GuiUtils.updateModelItem(self.fakeData1, [reference_data1]) 
    36         GuiUtils.updateModelItem(self.fakeData2, [reference_data2]) 
     38        reference_data2.filename = "Test B" 
     39        GuiUtils.updateModelItem(self.fakeData1, reference_data1) 
     40        GuiUtils.updateModelItem(self.fakeData2, reference_data2) 
    3741 
    3842    def tearDown(self): 
    3943        """ Destroy the InversionWindow """ 
    40         self.widget.setClosable(True) 
     44        self.widget.setClosable(False) 
    4145        self.widget.close() 
    4246        self.widget = None 
     
    4448    def removeAllData(self): 
    4549        """ Cleanup method to restore widget to its base state """ 
    46         while len(self.widget.dataList) > 0: 
    47             self.widget.removeData() 
     50        if len(self.widget.dataList) > 0: 
     51            remove_me = list(self.widget._dataList.keys()) 
     52            self.widget.removeData(remove_me) 
    4853 
    4954    def baseGUIState(self): 
     
    105110        self.assertEqual(self.widget.backgroundInput.text(), "0.0") 
    106111        self.assertEqual(self.widget.minQInput.text(), "") 
    107         self.assertEqual(self.widget.maxQInput.text(), self.widget.minQInput.text()) 
     112        self.assertEqual(self.widget.maxQInput.text(), "") 
    108113        self.assertEqual(self.widget.regularizationConstantInput.text(), "0.0001") 
    109114        self.assertEqual(self.widget.noOfTermsInput.text(), "10") 
     
    116121        self.assertEqual(self.widget.dataList.count(), 1) 
    117122        # See that the buttons are now enabled properly 
     123        self.widget.enableButtons() 
    118124        self.assertFalse(self.widget.calculateAllButton.isEnabled()) 
    119125        self.assertTrue(self.widget.calculateThisButton.isEnabled()) 
     
    127133        self.assertEqual(self.widget.dataList.count(), 2) 
    128134        # See that the buttons are now enabled properly 
     135        self.widget.enableButtons() 
     136        self.assertTrue(self.widget.calculateThisButton.isEnabled()) 
    129137        self.assertTrue(self.widget.calculateAllButton.isEnabled()) 
    130         self.assertTrue(self.widget.calculateThisButton.isEnabled()) 
    131138        self.assertTrue(self.widget.removeButton.isEnabled()) 
    132139        self.assertTrue(self.widget.explorerButton.isEnabled()) 
     
    137144        self.zeroDataSetState() 
    138145        self.baseBatchState() 
     146        self.removeAllData() 
    139147 
    140148    def testAllowBatch(self): 
    141149        """ Batch P(r) Tests """ 
     150        self.baseBatchState() 
     151        self.widget.setData([self.fakeData1]) 
     152        self.oneDataSetState() 
     153        self.widget.setData([self.fakeData2]) 
     154        self.twoDataSetState() 
     155        self.widget.calculateAllButton.click() 
     156        self.assertTrue(self.widget.batchResultsWindow is not None) 
     157        self.assertEqual(self.widget.batchResultsWindow.tblParams.columnCount(), 9) 
     158        self.assertEqual(self.widget.batchResultsWindow.tblParams.rowCount(), 2) 
     159        if self.widget.isBatch: 
     160            self.widget.isBatch = False 
     161        self.widget.batchResultsWindow.close() 
     162        self.assertTrue(self.widget.batchResultsWindow is None) 
     163        # Last test 
     164        self.widget.removeData() 
     165        self.removeAllData() 
    142166        self.baseBatchState() 
    143167 
     
    153177        self.removeAllData() 
    154178        self.zeroDataSetState() 
     179        self.removeAllData() 
    155180 
    156181    def testRemoveData(self): 
     
    161186        self.widget.removeData() 
    162187        self.oneDataSetState() 
     188        self.removeAllData() 
    163189 
    164190    def testClose(self): 
     
    166192        self.assertFalse(self.widget.isClosable()) 
    167193        self.widget.close() 
    168         self.assertTrue(self.widget.isVisible()) 
     194        self.assertTrue(self.widget.isMinimized()) 
     195        self.assertTrue(self.widget.dmaxWindow is None) 
     196        self.assertTrue(self.widget.batchResultsWindow is None) 
    169197        self.widget.setClosable(False) 
    170198        self.assertFalse(self.widget.isClosable()) 
    171199        self.widget.close() 
    172         self.assertTrue(self.widget.isVisible()) 
     200        self.assertTrue(self.widget.isMinimized()) 
    173201        self.widget.setClosable(True) 
    174202        self.assertTrue(self.widget.isClosable()) 
    175203        self.widget.setClosable() 
    176204        self.assertTrue(self.widget.isClosable()) 
    177         self.widget.close() 
    178         self.assertFalse(self.widget.isVisible()) 
     205        self.removeAllData() 
    179206 
    180207    def testGetNFunc(self): 
     
    198225            self.assertEqual(cm.output, ['ERROR:root:Incorrect number of terms specified: Nordvest Pizza']) 
    199226        self.assertEqual(self.widget.getNFunc(), 10) 
     227        self.removeAllData() 
    200228 
    201229    def testSetCurrentData(self): 
     
    214242        self.widget.setCurrentData(self.fakeData1) 
    215243        self.assertEqual(self.widget._data, self.fakeData1) 
    216  
    217     def notestModelChanged(self): 
    218         """ test the model update """ 
    219         self.assertTrue(self.widget._calculator.get_dmax(), 140.0) 
    220         self.widget.maxDistanceInput.setText("750.0") 
    221         self.assertTrue(self.widget._calculator.get_dmax(), 750.0) 
    222         self.assertTrue(self.widget._calculator.get_qmax(), 0.0) 
    223         self.widget.maxQInput.setText("100.0") 
    224         self.assertTrue(self.widget._calculator.get_dmax(), 100.0) 
     244        self.removeAllData() 
     245 
     246    def testModelChanged(self): 
     247        """ Test setting the input and the model and vice-versa """ 
     248        # Initial values 
     249        self.assertEqual(self.widget._calculator.get_dmax(), 140.0) 
     250        self.assertEqual(self.widget._calculator.get_qmax(), -1.0) 
     251        self.assertEqual(self.widget._calculator.get_qmin(), -1.0) 
     252        self.assertEqual(self.widget._calculator.slit_height, 0.0) 
     253        self.assertEqual(self.widget._calculator.slit_width, 0.0) 
     254        self.assertEqual(self.widget._calculator.alpha, 0.0001) 
     255        # Set new values 
     256        self.widget.maxDistanceInput.setText("1.0") 
     257        self.widget.maxQInput.setText("3.0") 
     258        self.widget.minQInput.setText("5.0") 
     259        self.widget.slitHeightInput.setText("7.0") 
     260        self.widget.slitWidthInput.setText("9.0") 
     261        self.widget.regularizationConstantInput.setText("11.0") 
     262        # Check new values 
     263        self.assertEqual(self.widget._calculator.get_dmax(), 1.0) 
     264        self.assertEqual(self.widget._calculator.get_qmax(), 3.0) 
     265        self.assertEqual(self.widget._calculator.get_qmin(), 5.0) 
     266        self.assertEqual(self.widget._calculator.slit_height, 7.0) 
     267        self.assertEqual(self.widget._calculator.slit_width, 9.0) 
     268        self.assertEqual(self.widget._calculator.alpha, 11.0) 
     269        # Change model directly 
     270        self.widget.model.setItem(WIDGETS.W_MAX_DIST, QtGui.QStandardItem("2.0")) 
     271        self.widget.model.setItem(WIDGETS.W_QMIN, QtGui.QStandardItem("4.0")) 
     272        self.widget.model.setItem(WIDGETS.W_QMAX, QtGui.QStandardItem("6.0")) 
     273        self.widget.model.setItem(WIDGETS.W_SLIT_HEIGHT, QtGui.QStandardItem("8.0")) 
     274        self.widget.model.setItem(WIDGETS.W_SLIT_WIDTH, QtGui.QStandardItem("10.0")) 
     275        self.widget.model.setItem(WIDGETS.W_REGULARIZATION, QtGui.QStandardItem("12.0")) 
     276        # Check values 
     277        self.assertEqual(self.widget._calculator.get_dmax(), 2.0) 
     278        self.assertEqual(self.widget._calculator.get_qmin(), 4.0) 
     279        self.assertEqual(self.widget._calculator.get_qmax(), 6.0) 
     280        self.assertEqual(self.widget._calculator.slit_height, 8.0) 
     281        self.assertEqual(self.widget._calculator.slit_width, 10.0) 
     282        self.assertEqual(self.widget._calculator.alpha, 12.0) 
     283        self.removeAllData() 
    225284 
    226285    def notestHelp(self): 
Note: See TracChangeset for help on using the changeset viewer.