changes to mantid's assert_almost_equal
test fixture
#37878
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of work
Summary of work
This changes the internal logic of
assert_almost_equal
, in particular fixing the condition for it to run comparisons. It is no longer necessary to pass one of the tolerances (it defaults to an absolute comparison at 1.e-10).Many more tests were added, including extensive negative tests.
Purpose of work
In PR #37708, the
assert_almost_equal
test fixture was updated to accept two possible tolerances, one absolute and one relative. To make both optional, they were given the default valueProperty.EMPTY_DBL
. This value is more or less equivalent toDBL_MAX
in C++, representing the largest possible double value.The fixture would only run comparisons if one or the other tolerances was set. However, it checked if they were set by
and
These conditions are never true, so it never ran any comparisons, meaning the fixture did nothing. Doing nothing is equivalent to the assertion passing. Therefore,
assert_almost_equal
passes for any workspace whatsoever.That PR also removed a negative test that would have caught the issue. This adds many more negative tests.
There is no associated issue.
ORNL EWM 7016
See discussion on PR #37708, here and here.
Further detail of work
There is further validation of
atol
andrtol
to make sure they are positive.The code calculate two flags
by seeing if the values equal the defaults. If not, then the associated comparison is performed.
Previously, the function would fail early if the first comparison failed. Instead, if both comparisons are called for then both will be performed, and the error message thrown later. This allows better debugging, so users can see if both or only one comparison is failing.
There are now many more tests. There is an additional positive test, several validation tests, and negative tests of basically every situation.
To test:
In
main
, launch workbench and run the following:This will print "assert passes", even though the workspaces are not equal to within the tolerance.
Pull and build this branch and launch workbench. Run the same script. It should fail on
assert_almost_equal
.Explore some other combinations of
atol
,rtol
, and values of the workspaces. It should work as expected.Reviewer
Please comment on the points listed below (full description).
Your comments will be used as part of the gatekeeper process, so please comment clearly on what you have checked during your review. If changes are made to the PR during the review process then your final comment will be the most important for gatekeepers. In this comment you should make it clear why any earlier review is still valid, or confirm that all requested changes have been addressed.
Code Review
Functional Tests
Does everything look good? Mark the review as Approve. A member of
@mantidproject/gatekeepers
will take care of it.Gatekeeper
If you need to request changes to a PR then please add a comment and set the review status to "Request changes". This will stop the PR from showing up in the list for other gatekeepers.