source: sasview/test/projectsaveandload/test/utest_project.py @ 0863065

unittest-saveload
Last change on this file since 0863065 was 0863065, checked in by Jeff Krzywon <jkrzywon@…>, 6 years ago

Start of simple tests for loading data via the sasview gui, rather than the sascalc data loader.

  • Property mode set to 100644
File size: 3.3 KB
Line 
1"""
2    Unit tests for saving and loading .svs files
3"""
4
5import os
6import unittest
7import warnings
8import threading
9from time import sleep
10
11import sas.sasview.sasview as sasview
12from sas.sascalc.dataloader.loader import Loader
13from sas.sascalc.fit.pagestate import Reader as fit_state_reader
14from sas.sasgui.perspectives.invariant.invariant_state import Reader as invariant_reader
15from sas.sasgui.perspectives.pr.inversion_state import Reader as pr_reader
16from sas.sasgui.perspectives.corfunc.corfunc_state import Reader as corfunc_reader
17
18warnings.simplefilter("ignore")
19
20TEMP_FOLDER = "temp_folder"
21DATA_1D = "test_data" + os.path.sep + "data1D.h5"
22DATA_2D = "test_data" + os.path.sep + "data2D.h5"
23STATE_LOADERS = [fit_state_reader, invariant_reader, pr_reader, corfunc_reader]
24
25
26class projects(unittest.TestCase):
27
28    def setUp(self):
29        """
30        Set up the base unit test class and variables used throughout the tests
31        """
32        self.addCleanup(self.remove_dir)
33        self.loader = Loader()
34        self.data1d = self.loader.load(DATA_1D)
35        self.data2d = self.loader.load(DATA_2D)
36        self.sasviewThread = sasviewThread(False)
37        if not (os.path.isdir(TEMP_FOLDER)):
38            os.makedirs(TEMP_FOLDER)
39        self.sasviewThread.lock.acquire()
40        self.sasviewThread.start_local()
41        while self.sasviewThread.frame is None:
42            sleep(0.05)
43        while self.sasviewThread.frame._data_panel is None:
44            sleep(0.05)
45        # TODO: Do we need the frame to be visible to perform operations?
46        while not self.sasviewThread.frame.IsShown():
47            sleep(2)
48        # self.sasviewThread.frame.get_data(DATA_1D)
49        # self.sasviewThread.frame.get_data(DATA_2D)
50
51    def tearDown(self):
52        self.sasviewThread.lock.release()
53        self.sasviewThread.frame = None
54        self.remove_dir()
55
56    def remove_dir(self):
57        if(os.path.isdir(TEMP_FOLDER)):
58            os.removedirs(TEMP_FOLDER)
59
60    def test_saveload_data1d_fitting_only(self):
61        """
62        Test saving and loading a project with a single data set sent to fitting
63        """
64        self.assertTrue(self.data1d is not None)
65        self.assertTrue(self.data2d is not None)
66        self.assertTrue(1 == 1)
67
68        # TODO: Send 1D to fitting, select model, save project, load project
69        # TODO: Send both to fitting, select model on both, save/load
70        # TODO: Send both to fitting, select model on one, save/load
71        # TODO: Send 1D to each other persepective, save/load
72        # TODO: Send 1D to every perspective, save/load
73        # TODO: Save/load simultaneous/constrained fit project
74
75
76class sasviewThread(threading.Thread):
77    """Run the MainLoop as a thread. Access the frame with self.frame."""
78
79    def __init__(self, autoStart=True):
80        threading.Thread.__init__(self)
81        self.lock = threading.Lock()
82        self.lock.acquire()  # lock until variables are set
83        self.setDaemon(1)
84        self.start_orig = self.start
85        self.start = self.start_local
86        self.frame = None  # to be defined in self.run
87        if autoStart:
88            self.start()  # automatically start thread on init
89        self.lock.release()
90
91    def run(self):
92        app = sasview.run_gui(True)
93        self.frame = app.gui.frame
94        app.gui.MainLoop()
95
96    def start_local(self):
97        self.start_orig()
Note: See TracBrowser for help on using the repository browser.