diff --git a/solventmapcreator/polynomialanalysis/polynomialdataanalysis.py b/solventmapcreator/polynomialanalysis/polynomialdataanalysis.py
index 615a1fe825ed0eaffe2c3375d1d65226ffbd5f87..c289ae9c0798453114a4e6f6cc2c51140dc1dc53 100644
--- a/solventmapcreator/polynomialanalysis/polynomialdataanalysis.py
+++ b/solventmapcreator/polynomialanalysis/polynomialdataanalysis.py
@@ -15,6 +15,24 @@ logging.basicConfig()
 LOGGER = logging.getLogger(__name__)
 LOGGER.setLevel(logging.WARN)
 
+def get_total_sorted_by_alt_metric(full_order_list, best_order_sorted_dict):
+    """This gets the sorted information and orders them ready to plot them.
+    Need to feed in a list of all the orders, as not all may appear.
+    """
+    order_tuple = tuple(sorted(best_order_sorted_dict.keys()))
+    numbers_by_order = []
+    for i in range(len(full_order_list)):
+        order = full_order_list[i]
+        order_info = []
+        for j in range(len(order_tuple)):
+            sorted_dict_order = full_order_list[j]
+            if order in best_order_sorted_dict[sorted_dict_order].keys():
+                order_info.append(len(best_order_sorted_dict[sorted_dict_order][order]))
+            else:
+                order_info.append(0)
+        numbers_by_order.append(tuple(order_info))
+    numbers_by_order_tuple = tuple(numbers_by_order)
+    return (order_tuple, numbers_by_order_tuple)
 
 def get_total_by_fit_order(best_order_dict):
     """This returns a tuple containing the order, and also the number of
@@ -24,6 +42,15 @@ def get_total_by_fit_order(best_order_dict):
     number_by_order = tuple([len(best_order_dict[order]) for order in order_tuple])
     return (order_tuple, number_by_order)
 
+def generate_lists_by_alt_metric(solvent_ids_by_order, solvent_ids_by_order_alt_metric):
+    """This goes through each order in the data and uses the best polynomial
+    fit data to sort the solvent_ids by the alternative metric.
+    """
+    solvent_ids_sorted_by_alt_metric = {}
+    for order, solvent_id_list in solvent_ids_by_order.items():
+        solvent_ids_sorted_by_alt_metric[order] = extract_lists_by_order_of_alt_metric(solvent_id_list, solvent_ids_by_order_alt_metric)
+    return solvent_ids_sorted_by_alt_metric
+
 def extract_lists_by_order_of_alt_metric(solvent_id_list, solvent_ids_by_order):
     """This returns a dictionary where the solvent IDs are sorted based on the
     best order from the alternate metric.
@@ -80,7 +107,7 @@ def extract_best_poly_fit_rmse(polynomial_dict):
     return best_order, smallest_rmse
 
 def get_best_poly_fit_covar(polynomial_dict_by_solvent_id):
-    """This 
+    """This returns a dict with tuples containing the information.
     """
     best_covar_order_dict = {}
     for solvent_id, polynomial_dict in polynomial_dict_by_solvent_id.items():
diff --git a/solventmapcreator/test/polynomialanalysistest/polynomialdataanalysistest.py b/solventmapcreator/test/polynomialanalysistest/polynomialdataanalysistest.py
new file mode 100644
index 0000000000000000000000000000000000000000..3e1927def200174d5d843c71b3f55daca880dced
--- /dev/null
+++ b/solventmapcreator/test/polynomialanalysistest/polynomialdataanalysistest.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+Created on Thu Jul  6 21:13:47 2017
+
+@author: mark
+"""
+
+import logging
+import unittest
+import numpy as np
+import solventmapcreator.polynomialanalysis.polynomialdataanalysis as polynomialdataanalysis
+
+logging.basicConfig()
+LOGGER = logging.getLogger(__name__)
+LOGGER.setLevel(logging.WARN)
+
+class PolynomialDataAnalysisTestCase(unittest.TestCase):
+    """Test case for the polynomialdataanalysis script
+    """
+    def setUp(self):
+        """set up for class.
+        """
+        self.expected_data_by_solvent_id = {"expected_poly_fit":{1:{"coefficients":np.array([-0.05, 
+                                                                                             1.07142857]),
+                                                                    "RMSE":0.0154303,
+                                                                    "order":1,
+                                                                    "covar":0.0007143},
+                                                                 2:{"coefficients":np.array([-0.05, 
+                                                                                             1.07142857, 0.1]),
+                                                                    "RMSE":0.0254303,
+                                                                    "order":1,
+                                                                    "covar":0.0008143}},
+                                            "expected_poly_fit2":{1:{"coefficients":np.array([-0.05, 
+                                                                                             1.07142857]),
+                                                                    "RMSE":0.0254303,
+                                                                    "order":1,
+                                                                    "covar":0.007143},
+                                                                 2:{"coefficients":np.array([-0.05, 
+                                                                                             1.07142857, 0.1]),
+                                                                    "RMSE":0.0354303,
+                                                                    "order":1,
+                                                                    "covar":0.0008143}}}
+        self.rmse_dict = polynomialdataanalysis.get_best_poly_fit_rmse(self.expected_data_by_solvent_id)
+        self.covar_dict = polynomialdataanalysis.get_best_poly_fit_covar(self.expected_data_by_solvent_id)
+    def tearDown(self):
+        """tear down for tests.
+        """
+        del self.expected_data_by_solvent_id
+        del self.rmse_dict
+        del self.covar_dict
+    def test_get_total_sorted_by_alt_metric(self):
+        """Test to see if 
+        """
+        rmse_solvent_id_dict = polynomialdataanalysis.get_solvent_id_by_order(self.rmse_dict)
+        covar_solvent_id_dict = polynomialdataanalysis.get_solvent_id_by_order(self.covar_dict)
+        ordered_id_dict = polynomialdataanalysis.generate_lists_by_alt_metric(rmse_solvent_id_dict, covar_solvent_id_dict)
+        expected_tuple = ((1,),((1,),(1,)))
+        actual_tuple = polynomialdataanalysis.get_total_sorted_by_alt_metric([1, 2], ordered_id_dict)
+        self.assertEqual(expected_tuple, actual_tuple)
+    def test_get_total_by_fit_order(self):
+        """Test to see if expected totals are returned.
+        """
+        rmse_solvent_id_dict = polynomialdataanalysis.get_solvent_id_by_order(self.rmse_dict)
+        covar_solvent_id_dict = polynomialdataanalysis.get_solvent_id_by_order(self.covar_dict)
+        expected_tuple_rmse = ((1,), (2,))
+        actual_tuple_rmse = polynomialdataanalysis.get_total_by_fit_order(rmse_solvent_id_dict)
+        self.assertEqual(expected_tuple_rmse, actual_tuple_rmse)
+        expected_tuple_covar = ((1, 2), (1, 1))
+        actual_tuple_covar = polynomialdataanalysis.get_total_by_fit_order(covar_solvent_id_dict)
+        self.assertEqual(expected_tuple_covar, actual_tuple_covar)
+    def test_generate_lists_by_alt_metric(self):
+        """Test to see if expected dict is produced.
+        """
+        expected_dict = {1:{1: ['expected_poly_fit'], 2: ['expected_poly_fit2']}}
+        rmse_solvent_id_dict = polynomialdataanalysis.get_solvent_id_by_order(self.rmse_dict)
+        covar_solvent_id_dict = polynomialdataanalysis.get_solvent_id_by_order(self.covar_dict)
+        actual_dict = polynomialdataanalysis.generate_lists_by_alt_metric(rmse_solvent_id_dict, covar_solvent_id_dict)
+        self.assertDictEqual(expected_dict, actual_dict)
+    def test_extract_lists_by_order_of_alt_metric(self):
+        """Test to if expected dict is produced.
+        """
+        expected_dict = {1: ['expected_poly_fit'], 2: ['expected_poly_fit2']}
+        rmse_list = ['expected_poly_fit', 'expected_poly_fit2']
+        covar_solvent_id_dict = polynomialdataanalysis.get_solvent_id_by_order(self.covar_dict)
+        actual_dict = polynomialdataanalysis.extract_lists_by_order_of_alt_metric(rmse_list, covar_solvent_id_dict)
+        self.assertDictEqual(expected_dict, actual_dict)
+    def test_get_solvent_id_by_order(self):
+        """Test to see if expected dictionary is returned
+        """
+        expected_dict = {1: ['expected_poly_fit', 'expected_poly_fit2']}
+        actual_dict = polynomialdataanalysis.get_solvent_id_by_order(self.rmse_dict)
+        self.assertDictEqual(expected_dict, actual_dict)
+    def test_get_solvent_id(self):
+        """Test to see if expected list is returned.
+        """
+        expected_list = ['expected_poly_fit', 'expected_poly_fit2']
+        actual_list = polynomialdataanalysis.get_solvent_id(self.rmse_dict[1])
+        self.assertListEqual(expected_list, actual_list)
+    def test_get_best_poly_fit_rmse(self):
+        """Test to see if expected dict is produced.
+        """
+        expected_dict = {1: [('expected_poly_fit', 0.0154303), ('expected_poly_fit2', 0.0254303)]}
+        actual_dict = polynomialdataanalysis.get_best_poly_fit_rmse(self.expected_data_by_solvent_id)
+        self.assertDictEqual(expected_dict, actual_dict)
+    def test_extract_best_poly_fit_rmse(self):
+        """Test to see if expected value is extracted.
+        """
+        expected_order = 1
+        expected_rmse = 0.0154303
+        actual_order, actual_rmse = polynomialdataanalysis.extract_best_poly_fit_rmse(self.expected_data_by_solvent_id["expected_poly_fit"])
+        self.assertAlmostEqual(expected_rmse, actual_rmse)
+        self.assertEqual(expected_order, actual_order)
+    def test_get_best_poly_fit_covar(self):
+        """Test to see if expected dict is produced.
+        """
+        expected_dict = {1: [('expected_poly_fit', 0.0007143)], 2: [('expected_poly_fit2', 0.0008143)]}
+        actual_dict = polynomialdataanalysis.get_best_poly_fit_covar(self.expected_data_by_solvent_id)
+        self.assertDictEqual(expected_dict, actual_dict)
+    def test_extract_best_poly_fit_covar(self):
+        """Test to see if expected value is extracted.
+        """
+        expected_order = 1
+        expected_covar = 0.0007143
+        actual_order, actual_covar = polynomialdataanalysis.extract_best_poly_fit_covar(self.expected_data_by_solvent_id["expected_poly_fit"])
+        self.assertAlmostEqual(expected_covar, actual_covar)
+        self.assertEqual(expected_order, actual_order)
\ No newline at end of file
diff --git a/solventmapcreator/test/solvationmapcreatortests.py b/solventmapcreator/test/solvationmapcreatortests.py
index a251085850a66ed7dd261d7d51ead9120754af27..1cdf9d885aee53f68bb61d6c4678285f640e7590 100644
--- a/solventmapcreator/test/solvationmapcreatortests.py
+++ b/solventmapcreator/test/solvationmapcreatortests.py
@@ -12,6 +12,7 @@ from solventmapcreator.test.iotest.solvationenergyreadertest import SolvationEne
 from solventmapcreator.test.iotest.polynomialdatawritertest import PolynomialDataWriterTestCase
 from solventmapcreator.test.iotest.polynomialdatareadertest import PolynomialDataReaderTestCase
 from solventmapcreator.test.solvationcalculationtest.solvationcalculatortest import SolvationCalculatorTestCase
+from solventmapcreator.test.polynomialanalysistest.polynomialdataanalysistest import PolynomialDataAnalysisTestCase
 
 logging.basicConfig()
 LOGGER = logging.getLogger(__name__)
@@ -21,6 +22,9 @@ IO_TEST_CASES = [SolvationEnergyReaderTestCase, PolynomialDataWriterTestCase,
                  PolynomialDataReaderTestCase]
 
 SOLVATION_CALCULATION_TEST_CASES = [SolvationCalculatorTestCase]
+
+POLYNOMIAL_ANALYSIS_TEST_CASES = [PolynomialDataAnalysisTestCase]
+
 def test_suite():
     """Function creates a test suite and then loads all the tests from the
     different test cases.
@@ -34,6 +38,9 @@ def test_suite():
     for test_case in SOLVATION_CALCULATION_TEST_CASES:
         LOGGER.debug("Adding %s", test_case)
         suite.addTests(loader.loadTestsFromTestCase(test_case))
+    for test_case in POLYNOMIAL_ANALYSIS_TEST_CASES:
+        LOGGER.debug("Adding %s", test_case)
+        suite.addTests(loader.loadTestsFromTestCase(test_case))
     return suite
 
 if __name__ == '__main__':