untizer_sect
Often it is useful to group tests in sections for the sake of documentation and clarity. Here is a slghtly modified version of the original demo file with sections:
unitizer_sect("Basic Tests", {
library(unitizer.fastlm)
x <- 1:10
y <- x ^ 3
res <- fastlm(x, y)
get_slope(res)
})
unitizer_sect("Advanced Tests", {
2 * get_slope(res) + get_intercept(res)
get_rsq(res)
})
Now re-running unitizer
segments everything by section (note, first few lines are set-up):
(.unitizer.fastlm <- copy_fastlm_to_tmpdir())
update_fastlm(.unitizer.fastlm, version="0.1.2")
install.packages(.unitizer.fastlm, repos=NULL, type='src', quiet=TRUE)
unitize(file.path(.unitizer.fastlm, "tests", "unitizer", "unitizer.fastlm.R"))
+------------------------------------------------------------------------------+
| unitizer for: tests/unitizer/unitizer.fastlm.R |
+------------------------------------------------------------------------------+
Pass Fail New
1. Basic Tests - - 1
2. Advanced Tests - - 2
..................................
- - 3
If there are tests that require reviewing, each section will be reviewed in turn.
Note that unitizer_sect
does not create separate evaluation environments for each section. Any created object will be available to all lexically subsequent tests, regardless of whether they are in the same section or not. Additionally on.exit
expressions in unitizer_sect
are evaluated immediately, not on exit.
It is possible to have nested sections, though at this point in time unitizer
only explicitly reports information at the outermost section level.
By default tested components (values and conditions) are compared with all.eq
, a wrapper around all.equal
that returns FALSE on inequality instead of a character description of the inequality. If you want to override the function used for value comparisons it is as simple as creating a new section for the tests you want to compare differently and use the compare
argument:
unitizer_sect("Accessor Functions", compare=identical,
{
get_slope(res)
get_rsq(res)
get_intercept(res)
} )
The values produced by these three tests will be compared using identical
instead of all.eq
. If you want to modify how other components of the test are compared, then you can pass a unitizerItemTestsFuns
object as the value to the compare
argument instead of a function:
unitizer_sect("Accessor Functions",
compare=unitizerItemTestsFuns(
value=identical,
output=all.equal,
message=identical
),
{
get_slope(res)
get_rsq(res)
get_intercept(res)
} )
This will cause the value of tests to be compared with identical
, the screen output with all.equal
, and messages (stderr) with identical
.
If you want to change the comparison function for conditions, keep in mind that what you are comparing are conditionList
objects so this is not straightforward (see getMethod("all.equal", "conditionList")
). In the future we might expose a better interface for custom comparison functions for conditions (see issue #32).
If you need to have different comparison functions within a section, use nested sections. While unitizer
will only report the outermost section metrics in top-level summaries, the specified comparison functions will be used for each nested section.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4