128 lines
4.0 KiB
Python
128 lines
4.0 KiB
Python
import unittest
|
|
from pprint import pprint
|
|
|
|
import pandas as pd
|
|
from tabulate import tabulate
|
|
# The following imports NEED to be in the exact order
|
|
from cadCAD.engine import ExecutionMode, ExecutionContext, Executor
|
|
from simulations.regression_tests import external_dataset
|
|
from cadCAD import configs
|
|
from testing.generic_test import make_generic_test
|
|
from testing.utils import gen_metric_dict
|
|
|
|
exec_mode = ExecutionMode()
|
|
|
|
print("Simulation Execution: Single Configuration")
|
|
print()
|
|
first_config = configs # only contains config1
|
|
single_proc_ctx = ExecutionContext(context=exec_mode.single_proc)
|
|
run = Executor(exec_context=single_proc_ctx, configs=first_config)
|
|
|
|
raw_result, tensor_field = run.execute()
|
|
result = pd.DataFrame(raw_result)
|
|
|
|
# print(tabulate(result, headers='keys', tablefmt='psql'))
|
|
|
|
# cols = ['run', 'substep', 'timestep', 'increment', 'external_data', 'policies']
|
|
# result = result[cols]
|
|
#
|
|
# metrics = gen_metric_dict(result, ['increment', 'external_data', 'policies'])
|
|
# #
|
|
# pprint(metrics)
|
|
|
|
def get_expected_results(run):
|
|
return {
|
|
(run, 0, 0): {
|
|
'external_data': {'ds1': None, 'ds2': None, 'ds3': None},
|
|
'increment': 0,
|
|
'policies': {'ds1': None, 'ds2': None, 'ds3': None}
|
|
},
|
|
(run, 1, 1): {
|
|
'external_data': {'ds1': 0, 'ds2': 0, 'ds3': 1},
|
|
'increment': 1,
|
|
'policies': {'ds1': 0, 'ds2': 0, 'ds3': 1}
|
|
},
|
|
(run, 1, 2): {
|
|
'external_data': {'ds1': 1, 'ds2': 40, 'ds3': 5},
|
|
'increment': 2,
|
|
'policies': {'ds1': 1, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 1, 3): {
|
|
'external_data': {'ds1': 2, 'ds2': 40, 'ds3': 5},
|
|
'increment': 3,
|
|
'policies': {'ds1': 2, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 2, 1): {
|
|
'external_data': {'ds1': 3, 'ds2': 40, 'ds3': 5},
|
|
'increment': 4,
|
|
'policies': {'ds1': 3, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 2, 2): {
|
|
'external_data': {'ds1': 4, 'ds2': 40, 'ds3': 5},
|
|
'increment': 5,
|
|
'policies': {'ds1': 4, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 2, 3): {
|
|
'external_data': {'ds1': 5, 'ds2': 40, 'ds3': 5},
|
|
'increment': 6,
|
|
'policies': {'ds1': 5, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 3, 1): {
|
|
'external_data': {'ds1': 6, 'ds2': 40, 'ds3': 5},
|
|
'increment': 7,
|
|
'policies': {'ds1': 6, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 3, 2): {
|
|
'external_data': {'ds1': 7, 'ds2': 40, 'ds3': 5},
|
|
'increment': 8,
|
|
'policies': {'ds1': 7, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 3, 3): {
|
|
'external_data': {'ds1': 8, 'ds2': 40, 'ds3': 5},
|
|
'increment': 9,
|
|
'policies': {'ds1': 8, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 4, 1): {
|
|
'external_data': {'ds1': 9, 'ds2': 40, 'ds3': 5},
|
|
'increment': 10,
|
|
'policies': {'ds1': 9, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 4, 2): {
|
|
'external_data': {'ds1': 10, 'ds2': 40, 'ds3': 5},
|
|
'increment': 11,
|
|
'policies': {'ds1': 10, 'ds2': 40, 'ds3': 5}
|
|
},
|
|
(run, 4, 3): {
|
|
'external_data': {'ds1': 11, 'ds2': 40, 'ds3': 5},
|
|
'increment': 12,
|
|
'policies': {'ds1': 11, 'ds2': 40, 'ds3': 5}
|
|
}
|
|
}
|
|
|
|
|
|
expected_results = {}
|
|
expected_results_1 = get_expected_results(1)
|
|
expected_results_2 = get_expected_results(2)
|
|
expected_results.update(expected_results_1)
|
|
expected_results.update(expected_results_2)
|
|
|
|
|
|
def row(a, b):
|
|
return a == b
|
|
params = [["external_dataset", result, expected_results, ['increment', 'external_data', 'policies'], [row]]]
|
|
|
|
|
|
class GenericTest(make_generic_test(params)):
|
|
pass
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|
|
# print()
|
|
# print("Tensor Field: config1")
|
|
# print(tabulate(tensor_field, headers='keys', tablefmt='psql'))
|
|
# print("Output:")
|
|
# print(tabulate(result, headers='keys', tablefmt='psql'))
|
|
# print()
|