71 lines
2.9 KiB
Python
71 lines
2.9 KiB
Python
from functools import reduce
|
|
|
|
import pandas as pd
|
|
import unittest
|
|
from parameterized import parameterized
|
|
from tabulate import tabulate
|
|
|
|
from testing.system_models.policy_aggregation import run
|
|
from testing.generic_test import make_generic_test
|
|
from testing.utils import generate_assertions_df
|
|
|
|
raw_result, tensor_field = run.execute()
|
|
result = pd.DataFrame(raw_result)
|
|
|
|
expected_results = {
|
|
(1, 0, 0): {'policies': {}, 's1': 0},
|
|
(1, 1, 1): {'policies': {'policy1': 2, 'policy2': 4}, 's1': 500},
|
|
(1, 1, 2): {'policies': {'policy1': 8, 'policy2': 8}, 's1': 2},
|
|
(1, 1, 3): {'policies': {'policy1': 4, 'policy2': 8, 'policy3': 12}, 's1': 3},
|
|
(1, 2, 1): {'policies': {'policy1': 2, 'policy2': 4}, 's1': 4},
|
|
(1, 2, 2): {'policies': {'policy1': 8, 'policy2': 8}, 's1': 5},
|
|
(1, 2, 3): {'policies': {'policy1': 4, 'policy2': 8, 'policy3': 12}, 's1': 6},
|
|
(1, 3, 1): {'policies': {'policy1': 2, 'policy2': 4}, 's1': 7},
|
|
(1, 3, 2): {'policies': {'policy1': 8, 'policy2': 8}, 's1': 8},
|
|
(1, 3, 3): {'policies': {'policy1': 4, 'policy2': 8, 'policy3': 12}, 's1': 9}
|
|
}
|
|
|
|
params = [["policy_aggregation", result, expected_results, ['policies', 's1']]]
|
|
|
|
|
|
class TestSequence(unittest.TestCase):
|
|
@parameterized.expand(params)
|
|
def test_validate_results(self, name, result_df, expected_reults, target_cols):
|
|
# alt for (*) Exec Debug mode
|
|
tested_df = generate_assertions_df(result_df, expected_reults, target_cols)
|
|
|
|
erroneous = tested_df[(tested_df['test'] == False)]
|
|
for index, row in erroneous.iterrows():
|
|
expected = expected_reults[(row['run'], row['timestep'], row['substep'])]
|
|
unexpected = {k: expected[k] for k in expected if k in row and expected[k] != row[k]}
|
|
for key in unexpected.keys():
|
|
erroneous[f"invalid_{key}"] = unexpected[key]
|
|
# etc.
|
|
|
|
# def etc.
|
|
|
|
print()
|
|
print(tabulate(erroneous, headers='keys', tablefmt='psql'))
|
|
|
|
self.assertEqual(reduce(lambda a, b: a and b, tested_df['test']), True)
|
|
|
|
s = 'hello world'
|
|
# self.assertEqual(s.split(), 1)
|
|
# # check that s.split fails when the separator is not a string
|
|
# with self.assertRaises(AssertionError):
|
|
# tested_df[(tested_df['test'] == False)]
|
|
# erroneous = tested_df[(tested_df['test'] == False)]
|
|
# for index, row in erroneous.iterrows():
|
|
# expected = expected_reults[(row['run'], row['timestep'], row['substep'])]
|
|
# unexpected = {k: expected[k] for k in expected if k in row and expected[k] != row[k]}
|
|
# for key in unexpected.keys():
|
|
# erroneous[f"invalid_{key}"] = unexpected[key]
|
|
# # etc.
|
|
#
|
|
# # def etc.
|
|
#
|
|
# print()
|
|
# print(tabulate(erroneous, headers='keys', tablefmt='psql'))
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |