Nothing
# TEST INPUT CHECKS ================================================================================================================================================================
# Required data --------------------------------------------------------------------------------------------------------------------------------------------------------------------
data("dataLatentIV")
# formula --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
context("Inputchecks - latentIV - Parameter formula")
test_that("Fail if no formula object is passed", {
expect_error(latentIV(formula = data.frame(1:3), data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = NULL, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = NA, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = , data = dataLatentIV), regexp = "The above errors were encountered!")
})
test_that("Fail if bad 1st RHS", {
# Fail if > 1 regressor in RHS
expect_error(latentIV(formula = y ~ I + P , data = cbind(I=1, dataLatentIV)), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ X1 + X2 + P , data = cbind(X1=1.23, X2=2.34, dataLatentIV)), regexp = "The above errors were encountered!")
})
test_that("Fail if bad 2nd RHS", {
# Fail if ANY 2nd RHS
expect_error(latentIV(formula = y ~ P | P, data = dataLatentIV), regexp = "The above errors were encountered!")
})
test_that("Fail if bad LHS", {
# Fail for missing LHS
expect_error(latentIV(formula = ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Fail for > 1 LHS
expect_error(latentIV(formula = y1 + y2 ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y1 + y2 + y3 ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y1 | y2 ~ P, data = dataLatentIV), regexp = "The above errors were encountered!") # multipart LHS
# Fail for LHS in RHS and vice-versa
expect_error(latentIV(formula = P ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ y, data = dataLatentIV), regexp = "The above errors were encountered!")
# Fail for dot in LHS as not more than one LHS allowed
# expect_error(latentIV(formula = . ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
})
test_that("Fail if formula variables are not in data", {
# Fail if any regressors not in data (RHS1, RHS2, LHS1)
expect_error(latentIV(formula = y ~ P, data = data.frame(y=1:10, X1=1:10, X2=1:10)), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = data.frame(X1=1:10,X2=1:10, P=1:10)), regexp = "The above errors were encountered!")
})
test_that("Fail if formula contains dot (.)", {
# Fail if dot (.) is in formula in any part
expect_error(latentIV(formula = . ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ ., data = dataLatentIV), regexp = "The above errors were encountered!")
})
test_that("Fail if formula variables are not in data", {
# Fail if any regressors not in data (RHS1, RHS2, LHS1)
expect_error(latentIV(formula= y ~ P ,data=data.frame(y=1:10)), regexp = "The above errors were encountered!")
expect_error(latentIV(formula= y ~ P ,data=data.frame(P=1:10)), regexp = "The above errors were encountered!")
})
# data ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
context("Inputchecks - latentIV - Parameter data")
test_that("Fail if not data.frame", {
expect_error(latentIV(formula = y ~ P, data = ), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = NULL), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = NA_integer_), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = c(y=1:10, P=1:10)), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = list(y=1:10,P=1:10)), regexp = "The above errors were encountered!")
})
test_that("Fail if no rows or cols",{
expect_error(latentIV(formula = y ~ P, data = data.frame()), regexp = "The above errors were encountered!") # no cols
expect_error(latentIV(formula = y ~ P, data = data.frame(y=integer(), P=integer())), regexp = "The above errors were encountered!")
})
test_that("Fail if contains any non-finite", {
call.args <- list(formula=y ~ P)
test.nonfinite.in.data(data = dataLatentIV, name.col = "y", fct = latentIV, call.args = call.args)
test.nonfinite.in.data(data = dataLatentIV, name.col = "P", fct = latentIV, call.args = call.args)
})
test_that("Fail if wrong data type in any of the formula parts", {
# Only allow numericals in all relevant columns
# Factor
expect_error(latentIV(formula = y ~ P, data = data.frame(y=factor(1:10), P=1:10)), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = data.frame(y=1:10, P=factor(1:10)), regexp = "The above errors were encountered!"))
# Characters
expect_error(latentIV(formula = y ~ P, data = data.frame(y=as.character(1:10), P=1:10, stringsAsFactors=FALSE)), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = data.frame(y=1:10, P=as.character(1:10), stringsAsFactors=FALSE)), regexp = "The above errors were encountered!")
# Logicals (as indicate dichotomous variable (=factor))
expect_error(latentIV(formula = y ~ P, data = data.frame(y=as.logical(0:9), P=1:10)), regexp = "The above errors were encountered!")
expect_error(latentIV(formula = y ~ P, data = data.frame(y=1:10, P=as.logical(0:9)), regexp = "The above errors were encountered!"))
})
test_that("Allow wrong data type in irrelevant columns", {
# Allow wrong data types in unused columns
expect_silent(latentIV(formula = y ~ P, verbose = FALSE,
data = cbind(dataLatentIV,
unused1=as.logical(0:9), unused2=as.character(1:10),unused3=as.factor(1:10), stringsAsFactors = FALSE)))
})
# start.params ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
context("Inputchecks - latentIV - Parameter start.params")
test_that("start.params is vector and all numeric", {
# Any parameter is character, logical, factor, matrix
expect_error(latentIV(start.params = c("(Intercept)"=2, P = as.character(1)), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = as.factor(c("(Intercept)"=2, P = 1)), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = as.logical(c("(Intercept)"=2, P = 1)), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = as.matrix(c("(Intercept)"=2, P = 0)), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = complex(1,4,2)), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
})
test_that("start.params is not NA",{
expect_error(latentIV(start.params = c("(Intercept)"=2, P = NA_integer_), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = NA_real_), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=NA_integer_, P = 2), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=NA_real_, P = 2), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = NA_integer_, formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = NA_real_, formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
})
test_that("start.params is NULL or missing but runs with message", {
expect_message(latentIV(start.params = , formula = y ~ P, data = dataLatentIV), regexp = "No start parameters were given")
expect_message(latentIV(start.params = NULL, formula = y ~ P, data = dataLatentIV), regexp = "No start parameters were given")
})
test_that("start.params is named correctly", {
# Unnamed vec given
expect_error(latentIV(start.params = c(2, 1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Partially named vec given
expect_error(latentIV(start.params = c(2, P=0), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Wrong case
expect_error(latentIV(start.params = c("(Intercept)"=2, p = 1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Same param name twice
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 1, P = 2), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Unrelated name
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 1, P2 =3), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Param missing (main, endo, intercept)
expect_error(latentIV(start.params = c("(Intercept)"=2), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c(P = 2), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Intercept spelling
expect_error(latentIV(start.params = c("Intercept"=2, P = 0), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(intercept)"=2, P = 0), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Intercept given but none required
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0),
formula = y ~ X1 + X2 + P -1 |P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Additional, not required param given
expect_error(latentIV(start.params = c("(Intercept)"=2, X1 = 1, P = 0), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
})
test_that("start.params contains no parameter named pi1, pi2, theta5, theta6, theta7, theta8", {
# Given additionally
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, pi1=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, pi2=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, theta5=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, theta6=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, theta7=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, theta8=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, pi1=1, pi2=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, pi1=1, theta5=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, theta7=1, pi2=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, P = 0, pi1=1, pi2=1, theta5=1, theta6=1, theta7=1, theta8=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
# Given instead of other parameters
expect_error(latentIV(start.params = c("(Intercept)"=2, pi1=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, pi2=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, theta5=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, theta6=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, theta7=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
expect_error(latentIV(start.params = c("(Intercept)"=2, theta8=1), formula = y ~ P, data = dataLatentIV), regexp = "The above errors were encountered!")
})
# optimx.args -----------------------------------------------------------------------------------------------------------
context("Inputchecks - latentIV - Parameter optimx.args")
test.optimx.args(function.to.test = latentIV, parameter.name = "optimx.args", formula=y~P,
function.std.data = dataLatentIV)
test_that("Has default value empty list()",{
default.arg <- eval(formals(REndo:::latentIV)[["optimx.args"]])
expect_equal(class(default.arg), "list") # S3 class does not work
})
# verbose ----------------------------------------------------------------------------------------------------------------
context("Inputchecks - latentIV - Parameter verbose")
test.single.logical(function.to.test = latentIV, parameter.name="verbose",
formula=y~P, function.std.data=dataLatentIV)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.