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