library(pedbp)
################################################################################
# expect an error if q and/or p have length 1
test <- tryCatch(est_norm(q = c(1), p = c(0.1)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "length(q) > 1L & length(p) > 1L is not TRUE"))
test <- tryCatch(est_norm(q = c(1), p = c(0.1, 0.2)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "length(q) > 1L & length(p) > 1L is not TRUE"))
test <- tryCatch(est_norm(q = c(1, 2), p = c(0.2)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "length(q) > 1L & length(p) > 1L is not TRUE"))
test <- tryCatch(est_norm(q = c(1, 2), p = numeric(1)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "length(q) > 1L & length(p) > 1L is not TRUE"))
test <- tryCatch(est_norm(q = c(1, 2)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "argument \"p\" is missing, with no default"))
test <- tryCatch(est_norm(p = c(0.1, 0.22)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "argument \"q\" is missing, with no default"))
################################################################################
# expect an error when q and p are of different length
test <- tryCatch(est_norm(q = c(1, 2), p = c(0.1, 0.2, 0.3)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "length(q) == length(p) is not TRUE"))
################################################################################
# check that all( p > 0 & p < 1)
test <- tryCatch(est_norm(q = c(1, 2), p = numeric(2)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "all(p > 0) & all(p < 1) is not TRUE"))
test <- tryCatch(est_norm(q = c(1, 2), p = c(0.1, 02)), error = function(e) e)
stopifnot(inherits(test,"error"))
stopifnot(identical(test$message, "all(p > 0) & all(p < 1) is not TRUE"))
################################################################################
# quick check of results
set.seed(42)
m <- pi
s <- (1 + sqrt(5)) / 2
ps <- c(0.1988159, 0.5340165, 0.8743177, 0.9812)
qs <- qnorm(ps, mean = m, sd = s)
out <- est_norm(qs, ps)
stopifnot(identical(names(out$par), c("mean", "sd")))
stopifnot(isTRUE(abs(m - out$par[1]) < 0.0001))
stopifnot(isTRUE(abs(s - out$par[2]) < 0.0001))
# also check that the printing method returns the object
out2 <- print(out)
stopifnot(identical(out2, out))
# the print method is identical to the print(x$par)
stopifnot(identical(capture.output(print(out)), capture.output(print.default(out$par))))
################################################################################
# what happens when a completely insane set of values is used to start?
#
# unsorted values will error
ps2 <- sample(ps)
qs2 <- sample(ps)
test <- tryCatch(est_norm(qs, ps2), error = function(e) e)
stopifnot(identical(test$message, "q and p are expected to be sorted in ascending order."))
test <- tryCatch(est_norm(qs2, ps), error = function(e) e)
stopifnot(identical(test$message, "q and p are expected to be sorted in ascending order."))
test <- tryCatch(est_norm(qs2, ps2), error = function(e) e)
stopifnot(identical(test$message, "q and p are expected to be sorted in ascending order."))
################################################################################
# test the plot -- this was okay on one machine, but fails on other machines
#g <- plot(out)
#
## when needed, update the saved plot that is tested against
## ggplot2::ggsave(g, file = "tests/plot.est_norm.png", width = 7, height = 7)
#
## build and save a graphic
#tmpfile <- tempfile(fileext = ".png")
#ggplot2::ggsave(g, file = tmpfile, width = 7, height = 7)
#
## read the graphics
#if (interactive()) {
# expected_img <- png::readPNG("tests/plot.est_norm.png")
#} else {
# expected_img <- png::readPNG("plot.est_norm.png")
#}
#new_img <- png::readPNG(tmpfile)
#
## compare the graphics
#stopifnot(identical(new_img, expected_img))
################################################################################
## End of file ##
################################################################################
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.