blob: 80007e29bae09cae3c46d47fcafd8ac7edcd2804 [file] [log] [blame]
basic_tests <- list(
list(input=c(TRUE, FALSE), any=TRUE, all=FALSE),
list(input=c(FALSE, TRUE), any=TRUE, all=FALSE),
list(input=c(TRUE, TRUE), any=TRUE, all=TRUE),
list(input=c(FALSE, FALSE), any=FALSE, all=FALSE),
list(input=c(NA, FALSE), any=NA, all=FALSE, any.na.rm=FALSE),
list(input=c(FALSE, NA), any=NA, all=FALSE, any.na.rm=FALSE),
list(input=c(NA, TRUE), any=TRUE, all=NA, all.na.rm=TRUE),
list(input=c(TRUE, NA), any=TRUE, all=NA, all.na.rm=TRUE),
list(input=logical(0), any=FALSE, all=TRUE),
list(input=NA, any=NA, all=NA, any.na.rm=FALSE, any.na.rm=TRUE),
list(input=c(TRUE, NA, FALSE), any=TRUE, any.na.rm=TRUE,
all=FALSE, all.na.rm=FALSE)
)
## any, all accept '...' for input.
list_input_tests <-
list(
list(input=list(TRUE, TRUE), all=TRUE, any=TRUE),
list(input=list(FALSE, FALSE), all=FALSE, any=FALSE),
list(input=list(TRUE, FALSE), all=FALSE, any=TRUE),
list(input=list(FALSE, TRUE), all=FALSE, any=TRUE),
list(input=list(FALSE, NA),
all=FALSE, all.na.rm=FALSE, any=NA, any.na.rm=FALSE),
list(input=list(NA, FALSE),
all=FALSE, all.na.rm=FALSE, any=NA, any.na.rm=FALSE),
list(input=list(TRUE, NA),
all=NA, all.na.rm=TRUE, any=TRUE, any.na.rm=TRUE),
list(input=list(NA, TRUE),
all=NA, all.na.rm=TRUE, any=TRUE, any.na.rm=TRUE),
list(input=list(NA, NA),
any=NA, any.na.rm=FALSE, all=NA, all.na.rm=TRUE),
list(input=list(rep(TRUE, 2), rep(TRUE, 10)),
all=TRUE, any=TRUE),
list(input=list(rep(TRUE, 2), c(TRUE, NA)),
all=NA, all.na.rm=TRUE, any=TRUE),
list(input=list(rep(TRUE, 2), c(TRUE, FALSE)),
all=FALSE, any=TRUE),
list(input=list(c(TRUE, FALSE), c(TRUE, NA)),
all=FALSE, all.na.rm=FALSE, any=TRUE, any.na.rm=TRUE)
)
do_tests <- function(L)
{
run <- function(f, input, na.rm = FALSE)
{
if (is.list(input))
do.call(f, c(input, list(na.rm = na.rm)))
else f(input, na.rm = na.rm)
}
do_check <- function(case, f)
{
fun <- deparse(substitute(f))
if (!identical(case[[fun]], run(f, case$input))) {
cat("input: "); dput(case$input)
stop(fun, " returned ", run(f, case$input),
" wanted ", case[[fun]], call. = FALSE)
}
narm <- paste(fun, ".na.rm", sep = "")
if (!is.null(case[[narm]])) {
if (!identical(case[[narm]],
run(f, case$input, na.rm = TRUE))) {
cat("input: "); dput(case$input)
stop(narm, " returned ", run(f, case$input, na.rm = TRUE),
" wanted ", case[[narm]], call. = FALSE)
}
}
}
lab <- deparse(substitute(L))
for (case in L) {
do_check(case, any)
do_check(case, all)
}
}
do_tests(basic_tests)
do_tests(list_input_tests)