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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions