Index: src/sas/qtgui/Perspectives/Fitting/UnitTesting/FitPageTest.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UnitTesting/FitPageTest.py	(revision 672b8abd2842038913308d122b370e786e37660b)
+++ src/sas/qtgui/Perspectives/Fitting/UnitTesting/FitPageTest.py	(revision 672b8abd2842038913308d122b370e786e37660b)
@@ -0,0 +1,45 @@
+import sys
+import unittest
+
+# set up import paths
+import sas.qtgui.path_prepare
+
+# Tested module
+from sas.qtgui.Perspectives.Fitting.FitPage import *
+
+class FitPageTest(unittest.TestCase):
+    '''Test the FitPage methods'''
+
+    def setUp(self):
+        self.page = FitPage()
+
+    def tearDown(self):
+        del self.page
+
+    def testDefaults(self):
+        """
+        Test all the global constants defined in the file.
+        """
+        self.assertIsInstance(self.page.fit_options, dict)
+        self.assertIsInstance(self.page.smearing_options, dict)
+        self.assertEqual(self.page.current_category, "")
+        self.assertEqual(self.page.current_model, "")
+        self.assertEqual(self.page.current_factor, "")
+        self.assertEqual(self.page.page_id, 0)
+        self.assertFalse(self.page.data_is_loaded)
+        self.assertEqual(self.page.filename, "")
+        self.assertIsNone(self.page.data)
+        self.assertEqual(self.page.parameters_to_fit, [])
+
+    def testSave(self):
+        """
+        Test state save
+        """
+        pass
+
+    def testLoad(self):
+        """
+        Test state load
+        """
+        pass
+
Index: src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py
===================================================================
--- src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py	(revision 2add354096316e3381348cc6317654bf004353c2)
+++ src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py	(revision 672b8abd2842038913308d122b370e786e37660b)
@@ -301,5 +301,5 @@
         self.widget.calculateResiduals(test_data)
         # Now, the difference is non-zero
-        self.assertEqual(float(self.widget.lblChi2Value.text()), 1.715)
+        self.assertEqual(float(self.widget.lblChi2Value.text()), 1.7151)
 
     def testSetPolyModel(self):
@@ -550,4 +550,67 @@
             self.assertEqual(update_spy.count(), 1)
 
+    def testReadFitPage(self):
+        """
+        Read in the fitpage object and restore state
+        """
+        # Set data
+        test_data = Data1D(x=[1,2], y=[1,2])
+
+        # Force same data into logic
+        self.widget.logic.data = test_data
+        self.widget.data_is_loaded = True
+        category_index = self.widget.cbCategory.findText('Sphere')
+        self.widget.cbCategory.setCurrentIndex(category_index)
+        self.widget.parameters_to_fit = ['scale']
+        # Invoke the tested method
+        fp = self.widget.currentState()
+
+        # Prepare modified fit page
+        fp.current_model = 'onion'
+        fp.is_polydisperse = True
+
+        # Read in modified state
+        self.widget.readFitPage(fp)
+
+        # Check if the widget got updated accordingly
+        self.assertEqual(self.widget.cbModel.currentText(), 'onion')
+        self.assertTrue(self.widget.chkPolydispersity.isChecked())
+
+    def testCurrentState(self):
+        """
+        Set up the fitpage with current state
+        """
+        # Set data
+        test_data = Data1D(x=[1,2], y=[1,2])
+
+        # Force same data into logic
+        self.widget.logic.data = test_data
+        self.widget.data_is_loaded = True
+        category_index = self.widget.cbCategory.findText("Sphere")
+        self.widget.cbCategory.setCurrentIndex(category_index)
+        self.widget.parameters_to_fit = ['scale']
+
+        # Invoke the tested method
+        fp = self.widget.currentState()
+
+        # Test some entries. (Full testing of fp is done in FitPageTest)
+        self.assertIsInstance(fp.data, Data1D)
+        self.assertListEqual(list(fp.data.x), [1,2])
+        self.assertTrue(fp.data_is_loaded)
+        self.assertEqual(fp.current_category, "Sphere")
+        self.assertEqual(fp.current_model, "adsorbed_layer")
+        self.assertListEqual(fp.parameters_to_fit, ['scale'])
+
+    def testPushFitPage(self):
+        """
+        Push current state of fitpage onto stack
+        """
+        pass
+
+    def testPopFitPage(self):
+        """
+        Pop current state of fitpage from stack
+        """
+        pass
 
 if __name__ == "__main__":
