Skip to content

Store reference solutions for test cases #122

@mrp089

Description

@mrp089

Problem

We currently store the results for each test cases in a list, e.g.:

def test_bifurcation_RCR(tmpdir):
results = run_test_case_by_name('bifurcation_RCR', tmpdir)
assert np.isclose(get_result(results, 'pressure', 0, 0, np.arange(100, 200), 'mean'), 123878.022943, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 0, 0, np.arange(100, 200), 'max'), 168182.372624, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 0, 0, np.arange(100, 200), 'min'), 89237.6441223, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 1, -1, np.arange(100, 200), 'mean'), 123855.677783, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 1, -1, np.arange(100, 200), 'max'), 171598.373528, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 1, -1, np.arange(100, 200), 'min'), 87624.0897929, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 2, -1, np.arange(100, 200), 'mean'), 123855.677783, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 2, -1, np.arange(100, 200), 'max'), 171598.373528, rtol=1e-7)
assert np.isclose(get_result(results, 'pressure', 2, -1, np.arange(100, 200), 'min'), 87624.0897929, rtol=1e-7)
assert np.isclose(get_result(results, 'flow', 0, 0, np.arange(100, 200), 'mean'), 7.557147487534, rtol=1e-7)
assert np.isclose(get_result(results, 'flow', 1, -1, np.arange(100, 200), 'mean'), 3.839024865141, rtol=1e-7)
assert np.isclose(get_result(results, 'flow', 1, -1, np.arange(100, 200), 'max'), 24.0553490482, rtol=1e-7)
assert np.isclose(get_result(results, 'flow', 1, -1, np.arange(100, 200), 'min'), -3.35029015773, rtol=1e-7)

While it's nice to explicitly see the results we're testing against, it makes it somewhat annoying to add new tests (especially if those are larger).

Solution

Store a reference solution for each case in a dedicated folder and compare every test against the reference.

Additional context

This has been done for svZeroDSolver in SimVascular/svZeroDSolver@ae38e9a

Code of Conduct

  • I agree to follow this project's Code of Conduct and Contributing Guidelines

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions