From 923bca634091657750707f7df68434df6899e97a Mon Sep 17 00:00:00 2001 From: Chris Braddock Date: Sun, 18 May 2025 23:45:32 -0400 Subject: [PATCH] Add unit tests and pytest dependency --- requirements.txt | 1 + tests/test_process_experiment_data.py | 39 +++++++++++++++++++++++++++ tests/test_recommend.py | 24 +++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 tests/test_process_experiment_data.py create mode 100644 tests/test_recommend.py diff --git a/requirements.txt b/requirements.txt index f5a6d4e..8a45cbd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,4 @@ pynvml scipy torch transformers +pytest diff --git a/tests/test_process_experiment_data.py b/tests/test_process_experiment_data.py new file mode 100644 index 0000000..bf457f7 --- /dev/null +++ b/tests/test_process_experiment_data.py @@ -0,0 +1,39 @@ +import unittest + +try: + import pandas as pd +except Exception: + pd = None + +class MergeDataTest(unittest.TestCase): + def setUp(self): + if pd is None: + self.skipTest('pandas not available') + + def test_merge_with_tolerance(self): + from process_experiment_data import merge_data, MERGE_TOLERANCE + main_df = pd.DataFrame({ + 'timestamp': [ + pd.Timestamp('2023-01-01 00:00:03'), + pd.Timestamp('2023-01-01 00:00:10'), + pd.Timestamp('2023-01-01 00:00:11') + ], + 'value': [1, 2, 3] + }) + + additional_df = pd.DataFrame({ + 'timestamp': [ + pd.Timestamp('2023-01-01 00:00:00'), + pd.Timestamp('2023-01-01 00:00:05') + ], + 'extra': ['a', 'b'] + }) + + merged = merge_data(main_df, additional_df, tolerance=MERGE_TOLERANCE) + + self.assertEqual(merged.loc[0, 'extra'], 'a') + self.assertEqual(merged.loc[1, 'extra'], 'b') + self.assertTrue(pd.isna(merged.loc[2, 'extra'])) + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_recommend.py b/tests/test_recommend.py new file mode 100644 index 0000000..6a64c23 --- /dev/null +++ b/tests/test_recommend.py @@ -0,0 +1,24 @@ +import unittest + +try: + import pandas as pd +except Exception: + pd = None + +class RecommendSweetSpotTest(unittest.TestCase): + def setUp(self): + if pd is None: + self.skipTest('pandas not available') + + def test_recommend_selects_min_energy_row(self): + from recommend import recommend_sweet_spot + df = pd.DataFrame({ + 'max_watt': [150, 200, 250], + 'energy_consumption_watt_min': [100.0, 80.0, 120.0] + }).set_index('max_watt') + + result = recommend_sweet_spot(df) + self.assertEqual(result, 200) + +if __name__ == '__main__': + unittest.main()