From e4efd0b6ff3141bb77c85a1aae0c11a1a800eedb Mon Sep 17 00:00:00 2001
From: dh00601 <dh00601@surrey.ac.uk>
Date: Wed, 29 Dec 2021 21:11:21 +0000
Subject: [PATCH] testing commits

---
 badges/test_coverage.svg                      |   4 +-
 binarycpython/tests/main.py                   |  14 +-
 binarycpython/tests/test_dicts.py             | 104 +++++++-
 binarycpython/tests/test_ensemble.py          |  72 ++++++
 .../test__version_info.py                     | 106 ++++++++
 binarycpython/tests/tmp_functions.py          | 243 ------------------
 6 files changed, 292 insertions(+), 251 deletions(-)
 create mode 100644 binarycpython/tests/test_ensemble.py
 create mode 100644 binarycpython/tests/tests_population_extensions/test__version_info.py

diff --git a/badges/test_coverage.svg b/badges/test_coverage.svg
index a9be2c5a7..4021d28a9 100644
--- a/badges/test_coverage.svg
+++ b/badges/test_coverage.svg
@@ -15,7 +15,7 @@
     <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
         <text x="31.5" y="15" fill="#010101" fill-opacity=".3">coverage</text>
         <text x="31.5" y="14">coverage</text>
-        <text x="80" y="15" fill="#010101" fill-opacity=".3">29%</text>
-        <text x="80" y="14">29%</text>
+        <text x="80" y="15" fill="#010101" fill-opacity=".3">30%</text>
+        <text x="80" y="14">30%</text>
     </g>
 </svg>
diff --git a/binarycpython/tests/main.py b/binarycpython/tests/main.py
index 5e23cee46..3c22023a9 100755
--- a/binarycpython/tests/main.py
+++ b/binarycpython/tests/main.py
@@ -21,7 +21,14 @@ from binarycpython.tests.test_custom_logging import (
     test_create_and_load_logging_function
 )
 from binarycpython.tests.test_dicts import (
-    test_merge_dicts
+    test_merge_dicts,
+    test_setopts,
+    test_AutoVivicationDict,
+    test_inspect_dict
+)
+from binarycpython.tests.test_ensemble import (
+    test_binaryc_json_serializer,
+    test_handle_ensemble_string_to_json,
 )
 from binarycpython.tests.test_functions import (
     test_verbose_print,
@@ -58,6 +65,11 @@ from binarycpython.tests.tests_population_extensions.test__grid_options_defaults
     test_write_grid_options_to_rst_file,
 )
 
+from binarycpython.tests.tests_population_extensions.test__version_info import (
+    test_return_binary_c_version_info,
+    test_parse_binary_c_version_info
+)
+
 from binarycpython.tests.test_stellar_types import *
 from binarycpython.tests.test_useful_funcs import (
     test_calc_period_from_sep,
diff --git a/binarycpython/tests/test_dicts.py b/binarycpython/tests/test_dicts.py
index 8dc2435e3..538077775 100644
--- a/binarycpython/tests/test_dicts.py
+++ b/binarycpython/tests/test_dicts.py
@@ -9,17 +9,13 @@ TODO: _nested_get
 TODO: _recursive_normalize_floats
 TODO: multiply_float_values
 TODO: subtract_dicts
-TODO: AutoVivificationDict
-TODO: inspect_dict
 TODO: count_keys_recursive
-
 TODO: update_dicts
 TODO: multiply_values_dict
 TODO: custom_sort_dict
 TODO: filter_dict
 TODO: filter_dict_through_values
 TODO: prepare_dict
-TODO: set_opts
 TODO: normalize_dict
 """
 
@@ -31,7 +27,10 @@ from binarycpython.utils.functions import (
     Capturing,
 )
 from binarycpython.utils.dicts import (
-    merge_dicts
+    merge_dicts,
+    set_opts,
+    AutoVivificationDict,
+    inspect_dict
 )
 
 TMP_DIR = temp_dir("tests", "test_dicts")
@@ -190,3 +189,98 @@ class test_merge_dicts(unittest.TestCase):
 
         # output_dict = merge_dicts(dict_1, dict_2)
         self.assertRaises(ValueError, merge_dicts, dict_1, dict_2)
+
+
+class test_setopts(unittest.TestCase):
+    """
+    Unit test class for setopts
+    """
+
+    def test_setopts(self):
+        with Capturing() as output:
+            self._test_setopts()
+
+    def _test_setopts(self):
+        """
+        Unittest for function set_opts
+        """
+
+        default_dict = {"m1": 2, "m2": 3}
+        output_dict_1 = set_opts(default_dict, {})
+        self.assertTrue(output_dict_1 == default_dict)
+
+        new_opts = {"m1": 10}
+        output_dict_2 = set_opts(default_dict, new_opts)
+        updated_dict = default_dict.copy()
+        updated_dict["m1"] = 10
+
+        self.assertTrue(output_dict_2 == updated_dict)
+
+
+class test_AutoVivicationDict(unittest.TestCase):
+    """
+    Unittests for AutoVivicationDict
+    """
+
+    def test_add(self):
+        """
+        Tests to see if the adding is done correctly
+        """
+
+        result_dict = AutoVivificationDict()
+
+        result_dict["a"]["b"]["c"] += 10
+
+        self.assertEqual(result_dict["a"]["b"]["c"], 10)
+        result_dict["a"]["b"]["c"] += 10
+        self.assertEqual(result_dict["a"]["b"]["c"], 20)
+
+
+class test_inspect_dict(unittest.TestCase):
+    """
+    Unittests for function inspect_dict
+    """
+
+    def test_compare_dict(self):
+        with Capturing() as output:
+            self._test_compare_dict()
+
+    def _test_compare_dict(self):
+        """
+        Test checking if inspect_dict returns the correct structure by comparing it to known value
+        """
+
+        input_dict = {
+            "int": 1,
+            "float": 1.2,
+            "list": [1, 2, 3],
+            "function": os.path.isfile,
+            "dict": {"int": 1, "float": 1.2},
+        }
+        output_dict = inspect_dict(input_dict)
+        compare_dict = {
+            "int": int,
+            "float": float,
+            "list": list,
+            "function": os.path.isfile.__class__,
+            "dict": {"int": int, "float": float},
+        }
+        self.assertTrue(compare_dict == output_dict)
+
+    def test_compare_dict_with_print(self):
+        with Capturing() as output:
+            self._test_compare_dict_with_print()
+
+    def _test_compare_dict_with_print(self):
+        """
+        Test checking output is printed
+        """
+
+        input_dict = {
+            "int": 1,
+            "float": 1.2,
+            "list": [1, 2, 3],
+            "function": os.path.isfile,
+            "dict": {"int": 1, "float": 1.2},
+        }
+        output_dict = inspect_dict(input_dict, print_structure=True)
\ No newline at end of file
diff --git a/binarycpython/tests/test_ensemble.py b/binarycpython/tests/test_ensemble.py
new file mode 100644
index 000000000..0f392d5a1
--- /dev/null
+++ b/binarycpython/tests/test_ensemble.py
@@ -0,0 +1,72 @@
+"""
+Unit tests for the ensemble module
+"""
+
+import os
+import unittest
+
+from binarycpython.utils.functions import (
+    temp_dir,
+    Capturing,
+)
+from binarycpython.utils.ensemble import (
+    binaryc_json_serializer,
+    handle_ensemble_string_to_json
+)
+
+TMP_DIR = temp_dir("tests", "test_ensemble")
+
+
+class test_binaryc_json_serializer(unittest.TestCase):
+    """
+    Unittests for function binaryc_json_serializer
+    """
+
+    def test_not_function(self):
+        with Capturing() as output:
+            self._test_not_function()
+
+    def _test_not_function(self):
+        """
+        Test passing an object that doesnt get turned in to a string
+        """
+
+        stringo = "hello"
+        output = binaryc_json_serializer(stringo)
+        self.assertTrue(stringo == output)
+
+    def test_function(self):
+        with Capturing() as output:
+            self._test_function()
+
+    def _test_function(self):
+        """
+        Test passing an object that gets turned in to a string: a function
+        """
+
+        string_of_function = str(os.path.isfile)
+        output = binaryc_json_serializer(os.path.isfile)
+        self.assertTrue(string_of_function == output)
+
+
+class test_handle_ensemble_string_to_json(unittest.TestCase):
+    """
+    Unittests for function handle_ensemble_string_to_json
+    """
+
+    def test_1(self):
+        with Capturing() as _:
+            self._test_1()
+
+    def _test_1(self):
+        """
+        Test passing string representation of a dictionary.
+        """
+
+        _ = str(os.path.isfile)
+        input_string = '{"ding": 10, "list_example": [1,2,3]}'
+        output_dict = handle_ensemble_string_to_json(input_string)
+
+        self.assertTrue(isinstance(output_dict, dict))
+        self.assertTrue(output_dict["ding"] == 10)
+        self.assertTrue(output_dict["list_example"] == [1, 2, 3])
\ No newline at end of file
diff --git a/binarycpython/tests/tests_population_extensions/test__version_info.py b/binarycpython/tests/tests_population_extensions/test__version_info.py
new file mode 100644
index 000000000..70729239a
--- /dev/null
+++ b/binarycpython/tests/tests_population_extensions/test__version_info.py
@@ -0,0 +1,106 @@
+"""
+Unit tests for the _version_info Population extension module
+"""
+
+import os
+import unittest
+
+from binarycpython.utils.functions import (
+    temp_dir,
+    Capturing,
+)
+from binarycpython.utils.grid import Population
+
+TMP_DIR = temp_dir("tests", "test__version_info")
+
+
+class test_return_binary_c_version_info(unittest.TestCase):
+    """
+    Unittests for return_binary_c_version_info
+    """
+
+    def __init__(self, *args, **kwargs):
+        """
+        init
+        """
+        super(test_return_binary_c_version_info, self).__init__(*args, **kwargs)
+        self._version_info_pop = Population()
+
+    def test_not_parsed(self):
+        with Capturing() as output:
+            self._test_not_parsed()
+
+    def _test_not_parsed(self):
+        """
+        Test for the raw version_info output
+        """
+
+        version_info = self._version_info_pop.return_binary_c_version_info(parsed=False)
+
+        self.assertTrue(isinstance(version_info, str))
+        self.assertIn("Build", version_info)
+        self.assertIn("REIMERS_ETA_DEFAULT", version_info)
+        self.assertIn("SIGMA_THOMPSON", version_info)
+
+    def test_parsed(self):
+        with Capturing() as output:
+            self._test_parsed()
+
+    def _test_parsed(self):
+        """
+        Test for the parssed version_info
+        """
+
+        # also tests the parse_version_info indirectly
+        version_info_parsed = self._version_info_pop.return_binary_c_version_info(parsed=True)
+
+        self.assertTrue(isinstance(version_info_parsed, dict))
+        self.assertIn("isotopes", version_info_parsed.keys())
+        self.assertIn("argpairs", version_info_parsed.keys())
+        self.assertIn("ensembles", version_info_parsed.keys())
+        self.assertIn("macros", version_info_parsed.keys())
+        self.assertIn("elements", version_info_parsed.keys())
+        self.assertIn("dt_limits", version_info_parsed.keys())
+        self.assertIn("nucleosynthesis_sources", version_info_parsed.keys())
+        self.assertIn("miscellaneous", version_info_parsed.keys())
+
+class test_parse_binary_c_version_info(unittest.TestCase):
+    """
+    Unittests for function parse_binary_c_version_info
+    """
+
+    def test_1(self):
+        with Capturing() as output:
+            self._test_1()
+
+    def _test_1(self):
+        """
+        Test for the parsed versio info, more detailed
+        """
+
+        _version_info_pop = Population()
+
+        #
+        info = _version_info_pop.return_binary_c_version_info(parsed=False)
+        parsed_info = _version_info_pop.parse_binary_c_version_info(info)
+
+        self.assertIn("isotopes", parsed_info.keys())
+        self.assertIn("argpairs", parsed_info.keys())
+        self.assertIn("ensembles", parsed_info.keys())
+        self.assertIn("macros", parsed_info.keys())
+        self.assertIn("elements", parsed_info.keys())
+        self.assertIn("dt_limits", parsed_info.keys())
+        self.assertIn("nucleosynthesis_sources", parsed_info.keys())
+        self.assertIn("miscellaneous", parsed_info.keys())
+
+        self.assertIsNotNone(parsed_info["argpairs"])
+        self.assertIsNotNone(parsed_info["ensembles"])
+        self.assertIsNotNone(parsed_info["macros"])
+        self.assertIsNotNone(parsed_info["dt_limits"])
+        self.assertIsNotNone(parsed_info["miscellaneous"])
+
+        if parsed_info["macros"]["NUCSYN"] == "on":
+            self.assertIsNotNone(parsed_info["isotopes"])
+
+            if parsed_info["macros"]["NUCSYN_ID_SOURCES"] == "on":
+                self.assertIsNotNone(parsed_info["nucleosynthesis_sources"])
\ No newline at end of file
diff --git a/binarycpython/tests/tmp_functions.py b/binarycpython/tests/tmp_functions.py
index f812a8652..e69de29bb 100644
--- a/binarycpython/tests/tmp_functions.py
+++ b/binarycpython/tests/tmp_functions.py
@@ -1,243 +0,0 @@
-
-from binarycpython.utils.ensemble import (
-    binaryc_json_serializer,
-    handle_ensemble_string_to_json,
-)
-
-
-# class test_return_binary_c_version_info(unittest.TestCase):
-#     """
-#     Unittests for return_binary_c_version_info
-#     """
-
-#     def test_not_parsed(self):
-#         with Capturing() as output:
-#             self._test_not_parsed()
-
-#     def _test_not_parsed(self):
-#         """
-#         Test for the raw version_info output
-#         """
-
-#         version_info = return_binary_c_version_info(parsed=False)
-
-#         self.assertTrue(isinstance(version_info, str))
-#         self.assertIn("Build", version_info)
-#         self.assertIn("REIMERS_ETA_DEFAULT", version_info)
-#         self.assertIn("SIGMA_THOMPSON", version_info)
-
-#     def test_parsed(self):
-#         with Capturing() as output:
-#             self._test_parsed()
-
-#     def _test_parsed(self):
-#         """
-#         Test for the parssed version_info
-#         """
-
-#         # also tests the parse_version_info indirectly
-#         version_info_parsed = return_binary_c_version_info(parsed=True)
-
-#         self.assertTrue(isinstance(version_info_parsed, dict))
-#         self.assertIn("isotopes", version_info_parsed.keys())
-#         self.assertIn("argpairs", version_info_parsed.keys())
-#         self.assertIn("ensembles", version_info_parsed.keys())
-#         self.assertIn("macros", version_info_parsed.keys())
-#         self.assertIn("elements", version_info_parsed.keys())
-#         self.assertIn("dt_limits", version_info_parsed.keys())
-#         self.assertIn("nucleosynthesis_sources", version_info_parsed.keys())
-#         self.assertIn("miscellaneous", version_info_parsed.keys())
-
-
-
-# class test_parse_binary_c_version_info(unittest.TestCase):
-#     """
-#     Unittests for function parse_binary_c_version_info
-#     """
-
-#     def test_1(self):
-#         with Capturing() as output:
-#             self._test_1()
-
-#     def _test_1(self):
-#         """
-#         Test for the parsed versio info, more detailed
-#         """
-
-#         info = return_binary_c_version_info(parsed=False)
-#         parsed_info = parse_binary_c_version_info(info)
-
-#         self.assertIn("isotopes", parsed_info.keys())
-#         self.assertIn("argpairs", parsed_info.keys())
-#         self.assertIn("ensembles", parsed_info.keys())
-#         self.assertIn("macros", parsed_info.keys())
-#         self.assertIn("elements", parsed_info.keys())
-#         self.assertIn("dt_limits", parsed_info.keys())
-#         self.assertIn("nucleosynthesis_sources", parsed_info.keys())
-#         self.assertIn("miscellaneous", parsed_info.keys())
-
-#         self.assertIsNotNone(parsed_info["argpairs"])
-#         self.assertIsNotNone(parsed_info["ensembles"])
-#         self.assertIsNotNone(parsed_info["macros"])
-#         self.assertIsNotNone(parsed_info["dt_limits"])
-#         self.assertIsNotNone(parsed_info["miscellaneous"])
-
-#         if parsed_info["macros"]["NUCSYN"] == "on":
-#             self.assertIsNotNone(parsed_info["isotopes"])
-
-#             if parsed_info["macros"]["NUCSYN_ID_SOURCES"] == "on":
-#                 self.assertIsNotNone(parsed_info["nucleosynthesis_sources"])
-
-
-
-# class test_inspect_dict(unittest.TestCase):
-#     """
-#     Unittests for function inspect_dict
-#     """
-
-#     def test_compare_dict(self):
-#         with Capturing() as output:
-#             self._test_compare_dict()
-
-#     def _test_compare_dict(self):
-#         """
-#         Test checking if inspect_dict returns the correct structure by comparing it to known value
-#         """
-
-#         input_dict = {
-#             "int": 1,
-#             "float": 1.2,
-#             "list": [1, 2, 3],
-#             "function": os.path.isfile,
-#             "dict": {"int": 1, "float": 1.2},
-#         }
-#         output_dict = inspect_dict(input_dict)
-#         compare_dict = {
-#             "int": int,
-#             "float": float,
-#             "list": list,
-#             "function": os.path.isfile.__class__,
-#             "dict": {"int": int, "float": float},
-#         }
-#         self.assertTrue(compare_dict == output_dict)
-
-#     def test_compare_dict_with_print(self):
-#         with Capturing() as output:
-#             self._test_compare_dict_with_print()
-
-#     def _test_compare_dict_with_print(self):
-#         """
-#         Test checking output is printed
-#         """
-
-#         input_dict = {
-#             "int": 1,
-#             "float": 1.2,
-#             "list": [1, 2, 3],
-#             "function": os.path.isfile,
-#             "dict": {"int": 1, "float": 1.2},
-#         }
-#         output_dict = inspect_dict(input_dict, print_structure=True)
-
-
-
-
-
-# class test_binaryc_json_serializer(unittest.TestCase):
-#     """
-#     Unittests for function binaryc_json_serializer
-#     """
-
-#     def test_not_function(self):
-#         with Capturing() as output:
-#             self._test_not_function()
-
-#     def _test_not_function(self):
-#         """
-#         Test passing an object that doesnt get turned in to a string
-#         """
-
-#         stringo = "hello"
-#         output = binaryc_json_serializer(stringo)
-#         self.assertTrue(stringo == output)
-
-#     def test_function(self):
-#         with Capturing() as output:
-#             self._test_function()
-
-#     def _test_function(self):
-#         """
-#         Test passing an object that gets turned in to a string: a function
-#         """
-
-#         string_of_function = str(os.path.isfile)
-#         output = binaryc_json_serializer(os.path.isfile)
-#         self.assertTrue(string_of_function == output)
-
-
-# class test_handle_ensemble_string_to_json(unittest.TestCase):
-#     """
-#     Unittests for function handle_ensemble_string_to_json
-#     """
-
-#     def test_1(self):
-#         with Capturing() as _:
-#             self._test_1()
-
-#     def _test_1(self):
-#         """
-#         Test passing string representation of a dictionary.
-#         """
-
-#         _ = str(os.path.isfile)
-#         input_string = '{"ding": 10, "list_example": [1,2,3]}'
-#         output_dict = handle_ensemble_string_to_json(input_string)
-
-#         self.assertTrue(isinstance(output_dict, dict))
-#         self.assertTrue(output_dict["ding"] == 10)
-#         self.assertTrue(output_dict["list_example"] == [1, 2, 3])
-
-
-# class test_AutoVivicationDict(unittest.TestCase):
-#     """
-#     Unittests for AutoVivicationDict
-#     """
-
-#     def test_add(self):
-#         """
-#         Tests to see if the adding is done correctly
-#         """
-
-#         result_dict = AutoVivificationDict()
-
-#         result_dict["a"]["b"]["c"] += 10
-
-#         self.assertEqual(result_dict["a"]["b"]["c"], 10)
-#         result_dict["a"]["b"]["c"] += 10
-#         self.assertEqual(result_dict["a"]["b"]["c"], 20)
-
-
-# class test_setopts(unittest.TestCase):
-#     """
-#     Unit test class for setopts
-#     """
-
-#     def test_setopts(self):
-#         with Capturing() as output:
-#             self._test_setopts()
-
-#     def _test_setopts(self):
-#         """
-#         Unittest for function set_opts
-#         """
-
-#         default_dict = {"m1": 2, "m2": 3}
-#         output_dict_1 = set_opts(default_dict, {})
-#         self.assertTrue(output_dict_1 == default_dict)
-
-#         new_opts = {"m1": 10}
-#         output_dict_2 = set_opts(default_dict, new_opts)
-#         updated_dict = default_dict.copy()
-#         updated_dict["m1"] = 10
-
-#         self.assertTrue(output_dict_2 == updated_dict)
\ No newline at end of file
-- 
GitLab