#' @importFrom precrec
context("MM 2: Join label datasets")
# Test join_labels(..., byrow, chklen)
test_that("join_labels() combines muliple label datasets", {
l1 <- c(1, 0, 1, 1)
l2 <- c(1, 1, 0, 0)
l3 <- c(0, 1, 0, 1)
labels <- join_labels(l1, l2, l3)
expect_equal(labels[[1]], l1)
expect_equal(labels[[2]], l2)
expect_equal(labels[[3]], l3)
})
test_that("'...' must be specified", {
err_msg <- "No datasets specified"
expect_error(join_labels(), err_msg)
})
test_that("'byrow' should be TRUE or FALSE", {
expect_silent(join_labels(c(0, 1), byrow = TRUE))
expect_silent(join_labels(c(0, 1), byrow = FALSE))
expect_err_msg <- function(err_msg, byrow) {
expect_error(join_labels(0, byrow = byrow), err_msg)
}
err_msg <- "byrow contains 1 missing values"
expect_err_msg(err_msg, NA)
err_msg <- "byrow is not a flag"
expect_err_msg(err_msg, "T")
expect_err_msg(err_msg, list(c(TRUE, FALSE)))
expect_err_msg(err_msg, data.frame(c(TRUE, FALSE)))
expect_err_msg(err_msg, array(c(TRUE, FALSE)))
expect_err_msg(err_msg, matrix(c(TRUE, FALSE)))
})
test_that("'chklen' should be TRUE or FALSE", {
expect_silent(join_labels(c(0, 1), chklen = TRUE))
expect_silent(join_labels(c(0, 1), chklen = FALSE))
expect_err_msg <- function(err_msg, chklen) {
expect_error(join_labels(0, chklen = chklen), err_msg)
}
err_msg <- "chklen contains 1 missing values"
expect_err_msg(err_msg, NA)
err_msg <- "chklen is not a flag"
expect_err_msg(err_msg, "T")
expect_err_msg(err_msg, list(c(TRUE, FALSE)))
expect_err_msg(err_msg, data.frame(c(TRUE, FALSE)))
expect_err_msg(err_msg, array(c(TRUE, FALSE)))
expect_err_msg(err_msg, matrix(c(TRUE, FALSE)))
})
test_that("All vectors should have the same length", {
vec1 <- c(1, 0)
vec2 <- c(0, 1)
vec3 <- c(1, 1, 0)
s <- join_labels(vec1, vec2)
expect_equal(length(s), 2)
expect_equal(length(s[[1]]), 2)
expect_equal(length(s[[2]]), 2)
err_msg <- "All vectors must be the same lengths"
expect_error(join_labels(vec1, vec3), err_msg)
})
test_that("Checking vector lenghts is ignore by 'chklen'", {
vec1 <- c(-1, 1)
vec2 <- c(1, 1, -1)
err_msg <- "All vectors must be the same lengths"
expect_error(join_labels(vec1, vec2), err_msg)
s <- join_labels(vec1, vec2, chklen = FALSE)
expect_equal(length(s), 2)
expect_equal(length(s[[1]]), 2)
expect_equal(length(s[[2]]), 3)
})
test_that("join_labels() returns a list", {
cdat <- join_labels(c(0, 1))
expect_true(is.list(cdat))
})
test_that("join_labels() only accepts vectors or factors", {
vec1 <- c(1, 2)
vec2 <- factor(c(1, 2))
vec3 <- c("0", "1")
vec4 <- c(TRUE, FALSE)
l <- join_labels(vec1, vec2, vec3, vec4)
expect_equal(is.numeric(l[[1]]), TRUE)
expect_equal(is.vector(l[[1]]), TRUE)
expect_equal(is.factor(l[[1]]), FALSE)
expect_equal(is.factor(l[[2]]), TRUE)
expect_equal(is.numeric(l[[2]]), FALSE)
expect_equal(is.vector(l[[2]]), FALSE)
expect_equal(is.character(l[[3]]), TRUE)
expect_equal(is.vector(l[[3]]), TRUE)
expect_equal(is.numeric(l[[3]]), FALSE)
expect_equal(is.logical(l[[4]]), TRUE)
expect_equal(is.vector(l[[4]]), TRUE)
expect_equal(is.numeric(l[[4]]), FALSE)
expect_err_msg <- function(vec1, vec2) {
err_msg <- "Cannot join this type of data"
expect_error(join_labels(vec1, vec2), err_msg)
}
vec5 <- c(NULL, NULL)
expect_err_msg(vec1, vec5)
})
test_that("join_labels() accepts any number of unique labels", {
expect_err_msg <- function(vec1, vec2) {
expect_silent(join_labels(vec1, vec2))
}
vec1 <- c(1, 0)
vec2 <- c(0, 1)
l <- join_labels(vec1, vec2)
expect_equal(length(l), 2)
expect_true(is.vector(l[[1]]))
expect_true(is.vector(l[[2]]))
vec1 <- c(1, 2, 1)
vec2 <- c(1, 2, 3)
expect_err_msg(vec1, vec2)
vec1 <- factor(c(1, 2, 1))
vec2 <- factor(c(1, 2, 3))
expect_err_msg(vec1, vec2)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.