ok.Rd
Report the test of an expression in TAP format.
ok(test, description)
ok()
returns whatever was returned when test
is evaluated.
More importantly it has the side effect of printing the result of the
test in TAP
format.
See unittest
package documentation.
The unittest.stop_on_fail
option tells unit test to stop on the first test failure.
This is useful when debugging long test scripts with multiple failures.
The unittest.output
option tells unittest where output should be sent.
This is most useful for vignettes, where sending output to
stderr
separates the unittest output from the vignette itself.
ok(1==1, "1 equals 1")
#> ok - 1 equals 1
ok(1==1)
#> ok - 1 == 1
ok(1==2, "1 equals 2")
#> not ok - 1 equals 2
#> # Test returned non-TRUE value:
#> # [1] FALSE
ok(all.equal(c(1,2),c(1,2)), "compare vectors")
#> ok - compare vectors
fn <- function () stop("oops")
ok(fn(), "something with a coding error")
#> not ok - something with a coding error
#> # Test resulted in error:
#> # oops
#> # Traceback:
#> # 1: fn()
#> # 2: stop("oops")
ok(c("Some diagnostic", "messages"), "A failure with diagnostic messages")
#> not ok - A failure with diagnostic messages
#> # Test returned non-TRUE value:
#> # Some diagnostic
#> # messages
## Write a failing unit test script
test_path <- tempfile(fileext = ".R")
writeLines('
library(unittest)
ok(1==1)
ok(1==2)
ok(2==2)
ok(3==3)
', con = test_path)
# Without unittest.stop_on_fail, we see all failures:
options(unittest.stop_on_fail = NULL)
tryCatch(source(test_path), error = function (e) { print("=== error ===") })
#> ok - 1 == 1
#> not ok - 1 == 2
#> # Test returned non-TRUE value:
#> # [1] FALSE
#> ok - 2 == 2
#> ok - 3 == 3
# With, we stop at the first failing test:
options(unittest.stop_on_fail = TRUE)
tryCatch(source(test_path), error = function (e) { print("=== error ===") })
#> ok - 1 == 1
#> not ok - 1 == 2
#> # Test returned non-TRUE value:
#> # [1] FALSE
#> [1] "=== error ==="
options(unittest.stop_on_fail = NULL)
## Send unittest output to stderr()
options(unittest.output = stderr())
ok(ut_cmp_equal(4, 5), "4 == 5? Probably not")
## Reset unittest output to default (stdout())
options(unittest.output = NULL)
ok(ut_cmp_equal(4, 5), "4 == 5? Probably not")
#> not ok - 4 == 5? Probably not
#> # Test returned non-TRUE value:
#> # Mean relative difference: 0.25
#> # --- 4
#> # +++ 5
#> # [1] [-4-]{+5+}