Nothing
# NextBest ----
## v_next_best_ewoc ----
test_that("v_next_best_ewoc passes for valid object", {
object <- .NextBestEWOC()
expect_true(v_next_best_ewoc(object))
})
test_that("v_next_best_ewoc returns message for non-valid target", {
object <- .NextBestEWOC()
object@target <- -0.1
err_msg <- "target must be a probability value from (0, 1) interval"
expect_equal(v_next_best_ewoc(object), err_msg)
})
test_that("v_next_best_ewoc returns message for non-valid overdose", {
object <- .NextBestEWOC()
object@overdose <- c(-0.2, 1.2)
err_msg <- c(
"target must be below the overdose interval",
"overdose has to be a probability range"
)
expect_equal(v_next_best_ewoc(object), err_msg)
})
test_that("v_next_best_ewoc returns message for non-valid max_overdose_prob", {
object <- .NextBestEWOC()
object@max_overdose_prob <- 1.0
err_msg <- "max_overdose_prob must be a probability value from (0, 1) interval"
expect_equal(v_next_best_ewoc(object), err_msg)
})
## v_next_best_mtd ----
test_that("v_next_best_mtd passes for valid object", {
object <- h_next_best_mtd()
expect_true(v_next_best_mtd(object))
})
test_that("v_next_best_mtd returns message for non-valid target", {
err_msg <- "target must be a probability value from (0, 1) interval"
object <- h_next_best_mtd()
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_next_best_mtd(object), err_msg)
object@target <- 0
expect_equal(v_next_best_mtd(object), err_msg)
object@target <- -0.5
expect_equal(v_next_best_mtd(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_next_best_mtd(object), err_msg)
})
test_that("v_next_best_mtd returns message for non-valid derive", {
object <- h_next_best_mtd()
# Changing `derive` so that it has many arguments.
object@derive <- function(x, y) 1L
expect_equal(
v_next_best_mtd(object),
"derive must have a single argument"
)
# Changing `derive` so that it does not return a number.
object@derive <- function(x) c(1, 2)
expect_equal(
v_next_best_mtd(object),
"derive must accept numerical vector as an argument and return a number"
)
})
## v_next_best_ncrm ----
test_that("v_next_best_ncrm passes for valid object", {
object <- h_next_best_ncrm()
expect_true(v_next_best_ncrm(object))
object <- h_next_best_ncrm(edge_case = TRUE)
expect_true(v_next_best_ncrm(object))
})
test_that("v_next_best_ncrm returns message for non-valid target", {
err_msg <- "target has to be a probability range"
object <- h_next_best_ncrm()
# Changing `target` so that it is not an interval.
object@target <- 0.6
expect_equal(v_next_best_ncrm(object), err_msg)
object@target <- c(0.5, 0.6, 0.8)
expect_equal(v_next_best_ncrm(object), err_msg)
object@target <- c(0.8, 0.6)
expect_equal(v_next_best_ncrm(object), err_msg)
# Changing `target` so that one bound is not a valid probability value.
object@target <- c(0.4, 1.2)
expect_equal(v_next_best_ncrm(object), err_msg)
})
test_that("v_next_best_ncrm returns message for non-valid overdose", {
err_msg <- "overdose has to be a probability range"
object <- h_next_best_ncrm()
# Changing `overdose` so that it is not an interval.
object@overdose <- 0.6
expect_equal(v_next_best_ncrm(object), err_msg)
object@overdose <- c(0.5, 0.6, 0.8)
expect_equal(v_next_best_ncrm(object), err_msg)
object@overdose <- c(0.8, 0.6)
expect_equal(v_next_best_ncrm(object), err_msg)
# Changing `overdose` so that one bound is not a valid probability value.
object@overdose <- c(0.4, 1.2)
expect_equal(v_next_best_ncrm(object), err_msg)
})
test_that("v_next_best_ncrm returns message for non-valid max_overdose_prob", {
err_msg <- "max_overdose_prob must be a probability value from (0, 1) interval"
object <- h_next_best_ncrm()
# Changing `max_overdose_prob` so that it does not represent allowed probability value.
object@max_overdose_prob <- 1
expect_equal(v_next_best_ncrm(object), err_msg)
object@max_overdose_prob <- 0
expect_equal(v_next_best_ncrm(object), err_msg)
object@max_overdose_prob <- -0.5
expect_equal(v_next_best_ncrm(object), err_msg)
# Changing `max_overdose_prob` so that it is not a scalar.
object@max_overdose_prob <- c(0.5, 0.6)
expect_equal(v_next_best_ncrm(object), err_msg)
})
## v_next_best_ncrm_loss ----
test_that("v_next_best_ncrm_loss passes for valid object", {
object <- h_next_best_ncrm_loss()
expect_true(v_next_best_ncrm_loss(object))
object <- h_next_best_ncrm_loss(edge_case = 1L)
expect_true(v_next_best_ncrm_loss(object))
object <- h_next_best_ncrm_loss(edge_case = 2L)
expect_true(v_next_best_ncrm_loss(object))
})
test_that("v_next_best_ncrm_loss returns message for non-valid target", {
err_msg <- "target has to be a probability range excluding 0 and 1"
object <- h_next_best_ncrm_loss()
# Changing `target` so that it is not an interval.
object@target <- 0.6
expect_equal(v_next_best_ncrm_loss(object), err_msg)
object@target <- c(0.5, 0.6, 0.8)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
object@target <- c(0.8, 0.6)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
# Changing `target` so that one bound is not a valid probability value.
object@target <- c(0.4, 1)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
object@target <- c(0, 0.9)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
})
test_that("v_next_best_ncrm_loss returns message for non-valid overdose", {
err_msg <- "overdose has to be a probability range"
object <- h_next_best_ncrm_loss()
# Changing `overdose` so that it is not an interval.
object@overdose <- 0.6
expect_equal(v_next_best_ncrm_loss(object), err_msg)
object@overdose <- c(0.5, 0.6, 0.8)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
object@overdose <- c(0.8, 0.6)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
# Changing `overdose` so that one bound is not a valid probability value.
object@overdose <- c(-0.5, 0.3)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
})
test_that("v_next_best_ncrm_loss returns message for non-valid unacceptable", {
err_msg <- "unacceptable has to be a probability range"
object <- h_next_best_ncrm_loss()
# Changing `unacceptable` so that it is not an interval.
object@unacceptable <- 0.6
expect_equal(v_next_best_ncrm_loss(object), err_msg)
object@unacceptable <- c(0.5, 0.6, 0.8)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
object@unacceptable <- c(0.8, 0.6)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
# Changing `unacceptable` so that one bound is not a valid probability value.
object@unacceptable <- c(-0.5, 0.3)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
})
test_that("v_next_best_ncrm_loss returns message for wrong overdose-unacceptable relation", {
object <- h_next_best_ncrm_loss()
# Changing `unacceptable` so that `overdose[2]` > `unacceptable[1]`.
object@unacceptable <- c(0.34, 0.5)
expect_equal(
v_next_best_ncrm_loss(object),
"lower bound of unacceptable has to be >= than upper bound of overdose"
)
})
test_that("v_next_best_ncrm_loss returns message for wrong losses", {
err_msg <- "losses must be a vector of non-negative numbers of length 3 if unacceptable is c(1, 1), otherwise 4"
object <- h_next_best_ncrm_loss()
# Changing `losses` so that it contains negative values.
object@losses <- c(1, 2, -4, 4)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
# Changing `losses` so that it is of wrong length.
object@losses <- c(1, 2, 4)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
# Changing `losses` so that it is of wrong length.
object@unacceptable <- c(1, 1)
object@losses <- c(1, 2, 4, 6)
expect_equal(v_next_best_ncrm_loss(object), err_msg)
})
## v_next_best_dual_endpoint ----
test_that("v_next_best_dual_endpoint passes for valid object", {
object <- h_next_best_dual_endpoint()
expect_true(v_next_best_dual_endpoint(object))
object <- h_next_best_dual_endpoint(target_relative = FALSE)
expect_true(v_next_best_dual_endpoint(object))
object <- h_next_best_dual_endpoint(edge_case = TRUE)
expect_true(v_next_best_dual_endpoint(object))
})
test_that("v_next_best_dual_endpoint returns message for non-valid target (relative)", {
err_msg <- "target has to be a probability range when target_relative is TRUE"
object <- h_next_best_dual_endpoint(target_relative = TRUE)
# Changing `target` so that it is not an interval.
object@target <- 0.6
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@target <- c(0.5, 0.6, 0.8)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@target <- c(0.8, 0.6)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
# Changing `target` so that one bound is not a valid probability value.
object@target <- c(0.4, 1.2)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
})
test_that("v_next_best_dual_endpoint returns message for non-valid target (absolute)", {
err_msg <- "target must be a numeric range"
object <- h_next_best_dual_endpoint(target_relative = FALSE)
# Changing `target` so that it is not a numeric range.
object@target <- 0.6
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@target <- c(1, 5, 7)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@target <- c(0.8, 0.6)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
})
test_that("v_next_best_dual_endpoint returns message for non-valid target_relative flag", {
object <- h_next_best_dual_endpoint()
# Changing `target_relative` so that it is not a flag.
object@target_relative <- c(TRUE, FALSE)
expect_equal(
v_next_best_dual_endpoint(object),
"target_relative must be a flag"
)
})
test_that("v_next_best_dual_endpoint returns message for non-valid overdose", {
err_msg <- "overdose has to be a probability range"
object <- h_next_best_dual_endpoint()
# Changing `overdose` so that it is not an interval.
object@overdose <- 0.6
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@overdose <- c(0.5, 0.6, 0.8)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@overdose <- c(0.8, 0.6)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
# Changing `overdose` so that one bound is not a valid probability value.
object@overdose <- c(0.4, 1.2)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
})
test_that("v_next_best_dual_endpoint returns message for non-valid max_overdose_prob", {
err_msg <- "max_overdose_prob must be a probability value from (0, 1) interval"
object <- h_next_best_dual_endpoint()
# Changing `max_overdose_prob` so that it does not represent allowed probability value.
object@max_overdose_prob <- 1
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@max_overdose_prob <- 0
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@max_overdose_prob <- -0.5
expect_equal(v_next_best_dual_endpoint(object), err_msg)
# Changing `max_overdose_prob` so that it is not a scalar.
object@max_overdose_prob <- c(0.5, 0.6)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
})
test_that("v_next_best_dual_endpoint returns message for non-valid target_thresh", {
err_msg <- "target_thresh must be a probability value from [0, 1] interval"
object <- h_next_best_dual_endpoint()
# Changing `target_thresh` so that it does not represent allowed probability value.
object@target_thresh <- 2
expect_equal(v_next_best_dual_endpoint(object), err_msg)
object@target_thresh <- -0.5
expect_equal(v_next_best_dual_endpoint(object), err_msg)
# Changing `target_thresh` so that it is not a scalar.
object@target_thresh <- c(0.5, 0.6)
expect_equal(v_next_best_dual_endpoint(object), err_msg)
})
## v_next_best_min_dist ----
test_that("v_next_best_min_dist passes for valid object", {
object <- NextBestMinDist(target = 0.3)
expect_true(v_next_best_min_dist(object))
})
test_that("v_next_best_min_dist returns message for non-valid target", {
err_msg <- "target must be a probability value from (0, 1) interval"
object <- NextBestMinDist(target = 0.3)
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_next_best_min_dist(object), err_msg)
object@target <- 0
expect_equal(v_next_best_min_dist(object), err_msg)
object@target <- -0.5
expect_equal(v_next_best_min_dist(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_next_best_min_dist(object), err_msg)
})
## v_next_best_inf_theory ----
test_that("v_next_best_inf_theory passes for valid object", {
object <- NextBestInfTheory(target = 0.4, asymmetry = 1.5)
expect_true(v_next_best_inf_theory(object))
})
test_that("v_next_best_inf_theory returns message for non-valid target", {
err_msg <- "target must be a probability value from (0, 1) interval"
object <- NextBestInfTheory(target = 0.4, asymmetry = 1.5)
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_next_best_inf_theory(object), err_msg)
object@target <- 0
expect_equal(v_next_best_inf_theory(object), err_msg)
object@target <- -0.5
expect_equal(v_next_best_inf_theory(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_next_best_inf_theory(object), err_msg)
})
test_that("v_next_best_inf_theory returns message for non-valid asymmetry", {
err_msg <- "asymmetry must be a number from (0, 2) interval"
object <- NextBestInfTheory(target = 0.4, asymmetry = 1.5)
# Changing `asymmetry` so that it is outside of (0, 2).
object@asymmetry <- 5
expect_equal(v_next_best_inf_theory(object), err_msg)
object@asymmetry <- 0
expect_equal(v_next_best_inf_theory(object), err_msg)
object@asymmetry <- 2
expect_equal(v_next_best_inf_theory(object), err_msg)
# Changing `asymmetry` so that it is not a scalar.
object@asymmetry <- c(1, 1.8)
expect_equal(v_next_best_inf_theory(object), err_msg)
})
## v_next_best_td ----
test_that("v_next_best_td passes for valid object", {
object <- NextBestTD(0.4, 0.35)
expect_true(v_next_best_td(object))
})
test_that("v_next_best_td returns message for non-valid prob_target_drt", {
err_msg <- "prob_target_drt must be a probability value from (0, 1) interval"
object <- NextBestTD(0.4, 0.35)
# Changing `prob_target_drt` so that it does not represent allowed probability value.
object@prob_target_drt <- 1
expect_equal(v_next_best_td(object), err_msg)
object@prob_target_drt <- 0
expect_equal(v_next_best_td(object), err_msg)
object@prob_target_drt <- -0.5
expect_equal(v_next_best_td(object), err_msg)
# Changing `prob_target_drt` so that it is not a scalar.
object@prob_target_drt <- c(0.5, 0.6)
expect_equal(v_next_best_td(object), err_msg)
})
test_that("v_next_best_td returns message for non-valid prob_target_eot", {
err_msg <- "prob_target_eot must be a probability value from (0, 1) interval"
object <- NextBestTD(0.4, 0.35)
# Changing `prob_target_eot` so that it does not represent allowed probability value.
object@prob_target_eot <- 1
expect_equal(v_next_best_td(object), err_msg)
object@prob_target_eot <- 0
expect_equal(v_next_best_td(object), err_msg)
object@prob_target_eot <- -0.5
expect_equal(v_next_best_td(object), err_msg)
# Changing `prob_target_eot` so that it is not a scalar.
object@prob_target_eot <- c(0.5, 0.6)
expect_equal(v_next_best_td(object), err_msg)
})
## v_next_best_td_samples ----
test_that("v_next_best_td_samples passes for valid object", {
object <- h_next_best_tdsamples()
expect_true(v_next_best_td_samples(object))
})
test_that("v_next_best_td_samples returns message for non-valid derive", {
object <- h_next_best_tdsamples()
# Changing `derive` so that it has many arguments.
object@derive <- function(x, y) 1L
expect_equal(
v_next_best_td_samples(object),
"derive must have a single argument"
)
# Changing `derive` so that it does not return a number.
object@derive <- function(x) c(1, 2)
expect_equal(
v_next_best_td_samples(object),
"derive must accept numerical vector as an argument and return a number"
)
})
## v_next_best_max_gain_samples ----
test_that("v_next_best_max_gain_samples passes for valid object", {
object <- h_next_best_mgsamples()
expect_true(v_next_best_max_gain_samples(object))
})
test_that("v_next_best_max_gain_samples returns message for non-valid derive", {
object <- h_next_best_mgsamples()
# Changing `derive` so that it has many arguments.
object@derive <- function(x, y) 1L
expect_equal(
v_next_best_max_gain_samples(object),
"derive must have a single argument"
)
# Changing `derive` so that it does not return a number.
object@derive <- function(x) c(1, 2)
expect_equal(
v_next_best_max_gain_samples(object),
"derive must accept numerical vector as an argument and return a number"
)
})
test_that("v_next_best_max_gain_samples returns message for non-valid mg_derive", {
object <- h_next_best_mgsamples()
# Changing `mg_derive` so that it has many arguments.
object@mg_derive <- function(x, y) 1L
expect_equal(
v_next_best_max_gain_samples(object),
"mg_derive must have a single argument"
)
# Changing `mg_derive` so that it does not return a number.
object@mg_derive <- function(x) c(1, 2)
expect_equal(
v_next_best_max_gain_samples(object),
"mg_derive must accept numerical vector as an argument and return a number"
)
})
## v_next_best_prob_mtd_lte ----
test_that("v_next_best_prob_mtd_lte passes for valid object", {
object <- NextBestProbMTDLTE(0.3)
expect_true(v_next_best_prob_mtd_lte(object))
})
test_that("v_next_best_prob_mtd_lte returns message for non-valid target", {
err_msg <- "target must be a probability value from (0, 1) interval"
object <- NextBestProbMTDLTE(0.3)
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_next_best_prob_mtd_lte(object), err_msg)
object@target <- 0
expect_equal(v_next_best_prob_mtd_lte(object), err_msg)
object@target <- -0.5
expect_equal(v_next_best_prob_mtd_lte(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_next_best_prob_mtd_lte(object), err_msg)
})
## v_next_best_prob_mtd_min_dist ----
test_that("v_next_best_prob_mtd_min_dist passes for valid object", {
object <- NextBestProbMTDMinDist(0.3)
expect_true(v_next_best_prob_mtd_min_dist(object))
})
test_that("v_next_best_prob_mtd_min_dist returns message for non-valid target", {
err_msg <- "target must be a probability value from (0, 1) interval"
object <- NextBestProbMTDMinDist(0.3)
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_next_best_prob_mtd_min_dist(object), err_msg)
object@target <- 0
expect_equal(v_next_best_prob_mtd_min_dist(object), err_msg)
object@target <- -0.5
expect_equal(v_next_best_prob_mtd_min_dist(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_next_best_prob_mtd_min_dist(object), err_msg)
})
# Increments ----
## v_increments_relative ----
test_that("v_increments_relative passes for valid object", {
object <- IncrementsRelative(intervals = c(0, 2), increments = c(2, 1))
expect_true(v_increments_relative(object))
})
test_that("v_increments_relative returns message for non-valid intervals", {
err_msg <- "intervals has to be a numerical vector with unique, finite, non-negative and sorted non-missing values"
object <- IncrementsRelative(
intervals = c(0, 2, 3),
increments = c(2, 1, 1.5)
)
# Changing `intervals` so that it contains non-unique values.
object@intervals <- c(1, 2, 2)
expect_equal(v_increments_relative(object), err_msg)
# Changing `intervals` so that it contains non-sorted values.
object@intervals <- c(1, 3, 2)
expect_equal(v_increments_relative(object), err_msg)
# Changing `intervals` so that it contains missing, or infinite negative values.
object@intervals <- c(-1, NA, 2, Inf)
object@increments <- 1:4
expect_equal(v_increments_relative(object), err_msg)
})
test_that("v_increments_relative returns message for non-valid increments", {
err_msg <- "increments has to be a numerical vector of the same length as `intervals` with finite values"
object <- IncrementsRelative(
intervals = c(0, 2, 3),
increments = c(2, 1, 1.5)
)
# Changing `increments` so that it is of a length different than the length of `intervals`.
object@increments <- c(1, 2, 3, 4)
expect_equal(v_increments_relative(object), err_msg)
# Changing `increments` so that it contains missing, or infinite values.
object@increments <- c(NA, 2, Inf)
expect_equal(v_increments_relative(object), err_msg)
})
## v_increments_relative_parts ----
test_that("v_increments_relative_parts passes for valid object", {
object <- IncrementsRelativeParts(dlt_start = -1L, clean_start = 3L)
expect_true(v_increments_relative_parts(object))
})
test_that("v_increments_relative_parts returns message for non-valid dlt_start", {
err_msg <- "dlt_start must be an integer number"
object <- IncrementsRelativeParts(dlt_start = -1L, clean_start = 3L)
# Changing `dlt_start` so that it not a scalar.
object@dlt_start <- c(1L, 2L)
expect_equal(v_increments_relative_parts(object), err_msg)
# Changing `dlt_start` so that it is a missing object.
object@dlt_start <- NA_integer_
expect_equal(v_increments_relative_parts(object), err_msg)
})
test_that("v_increments_relative_parts returns message for non-valid clean_start", {
err_msg <- "clean_start must be an integer number and it must be >= dlt_start"
object <- IncrementsRelativeParts(dlt_start = -1L, clean_start = 1L)
# Changing `clean_start` so that it not a scalar.
object@clean_start <- c(1L, 2L)
expect_equal(v_increments_relative_parts(object), err_msg)
# Changing `clean_start` so that it is a missing object.
object@clean_start <- NA_integer_
expect_equal(v_increments_relative_parts(object), err_msg)
# Changing `clean_start` so that it is less than `dlt_start`.
object@clean_start <- -2L
expect_equal(v_increments_relative_parts(object), err_msg)
})
## v_increments_relative_dlt ----
test_that("v_increments_relative_dlt passes for valid object", {
object <- IncrementsRelativeDLT(intervals = c(0, 2), increments = c(2, 1))
expect_true(v_increments_relative_dlt(object))
})
test_that("v_increments_relative_dlt returns message for non-valid intervals", {
err_msg <- "intervals has to be an integer vector with unique, finite, non-negative and sorted non-missing values"
object <- IncrementsRelativeDLT(
intervals = c(0, 2, 3),
increments = c(2, 1, 1.5)
)
# Changing `intervals` so that it contains non-unique values.
object@intervals <- c(1L, 2L, 2L)
expect_equal(v_increments_relative_dlt(object), err_msg)
# Changing `intervals` so that it contains non-sorted values.
object@intervals <- c(1L, 3L, 2L)
expect_equal(v_increments_relative_dlt(object), err_msg)
# Changing `intervals` so that it contains missing, or negative values.
object@intervals <- c(-1L, NA_integer_, 2L)
expect_equal(v_increments_relative_dlt(object), err_msg)
})
test_that("v_increments_relative_dlt returns message for non-valid increments", {
err_msg <- "increments has to be a numerical vector of the same length as `intervals` with finite values"
object <- IncrementsRelativeDLT(
intervals = c(0, 2, 3),
increments = c(2, 1, 1.5)
)
# Changing `increments` so that it is of a length different than the length of `intervals`.
object@increments <- c(1, 2, 3, 4)
expect_equal(v_increments_relative_dlt(object), err_msg)
# Changing `increments` so that it contains missing, or infinite values.
object@increments <- c(NA, 2, Inf)
expect_equal(v_increments_relative_dlt(object), err_msg)
})
## v_increments_dose_levels ----
test_that("v_increments_dose_levels passes for valid object", {
object <- IncrementsDoseLevels()
expect_true(v_increments_dose_levels(object))
object <- IncrementsDoseLevels(levels = 1, basis_level = "last")
expect_true(v_increments_dose_levels(object))
object <- IncrementsDoseLevels(levels = 2, basis_level = "max")
expect_true(v_increments_dose_levels(object))
})
test_that("v_increments_dose_levels returns message for non-valid levels", {
err_msg <- "levels must be scalar positive integer"
object <- IncrementsDoseLevels()
# Changing `levels` so that it not a scalar.
object@levels <- c(1L, 2L)
expect_equal(v_increments_dose_levels(object), err_msg)
# Changing `levels` so that it is a missing object.
object@levels <- NA_integer_
expect_equal(v_increments_dose_levels(object), err_msg)
# Changing `levels` so that it is a negative value.
object@levels <- -2L
expect_equal(v_increments_dose_levels(object), err_msg)
})
test_that("v_increments_dose_levels returns message for non-valid basis_level", {
err_msg <- "basis_level must be either 'last' or 'max'"
object <- IncrementsDoseLevels()
# Changing `basis_level` so that it is neither equal to 'last' nor 'max'
object@basis_level <- "last "
expect_equal(v_increments_dose_levels(object), err_msg)
object@basis_level <- " max "
expect_equal(v_increments_dose_levels(object), err_msg)
object@basis_level <- c("last", "max")
expect_equal(v_increments_dose_levels(object), err_msg)
})
## v_increments_hsr_beta ----
test_that("v_increments_hsr_beta passes for valid object", {
object <- IncrementsHSRBeta(target = 0.3, prob = 0.95)
expect_true(v_increments_hsr_beta(object))
object <- IncrementsHSRBeta(target = 0.2, prob = 0.9, a = 7, b = 3)
expect_true(v_increments_hsr_beta(object))
})
test_that("v_increments_hsr_beta returns expected messages for non-valid target", {
err_msg <- "target must be a probability value from (0, 1) interval"
object <- IncrementsHSRBeta()
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_increments_hsr_beta(object), err_msg)
object@target <- 0
expect_equal(v_increments_hsr_beta(object), err_msg)
object@target <- -0.5
expect_equal(v_increments_hsr_beta(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_increments_hsr_beta(object), err_msg)
})
test_that("v_increments_hsr_beta returns expected messages for non-valid prob", {
err_msg <- "prob must be a probability value from (0, 1) interval"
object <- IncrementsHSRBeta()
# Changing `prob` so that it does not represent allowed probability value.
object@prob <- 1
expect_equal(v_increments_hsr_beta(object), err_msg)
object@prob <- 0
expect_equal(v_increments_hsr_beta(object), err_msg)
object@prob <- -0.5
expect_equal(v_increments_hsr_beta(object), err_msg)
# Changing `prob` so that it is not a scalar.
object@prob <- c(0.5, 0.6)
expect_equal(v_increments_hsr_beta(object), err_msg)
})
test_that("v_increments_hsr_beta returns expected messages for non-valid beta parameters", {
err_msg <- c(
"Beta distribution shape parameter a must be a positive scalar",
"Beta distribution shape parameter b must be a positive scalar"
)
object <- IncrementsHSRBeta()
# Changing `a` and `b` so that they are not a positive scalars.
object@a <- -2
object@b <- 0
expect_equal(v_increments_hsr_beta(object), err_msg)
object@a <- c(1, 2)
object@b <- c(1, 2)
expect_equal(v_increments_hsr_beta(object), err_msg)
})
## v_increments_min ----
test_that("v_increments_min passes for valid object", {
object <- IncrementsMin(
increments_list = list(
IncrementsRelativeDLT(intervals = c(0L, 1L), increments = c(2, 1)),
IncrementsRelative(intervals = c(0, 2), increments = c(2, 1))
)
)
expect_true(v_increments_min(object))
})
test_that("v_increments_min returns expected messages for non-valid object", {
err_msg <- "all elements in increments_list must be of Increments class"
object <- IncrementsMin(
increments_list = list(
IncrementsRelativeDLT(intervals = c(0L, 1L), increments = c(2, 1)),
IncrementsRelative(intervals = c(0, 2), increments = c(2, 1))
)
)
# Changing `increments_list` so that is contains objects other than `Increments`.
object@increments_list <- list(
IncrementsRelativeDLT(intervals = c(0L, 1L), increments = c(2, 1)),
intervals = c(0, 2),
increments = c(2, 1)
)
expect_equal(v_increments_min(object), err_msg)
})
# Stopping ----
## v_stopping_cohorts_near_dose ----
test_that("v_stopping_cohorts_near_dose passes for valid object", {
object <- StoppingCohortsNearDose()
expect_true(v_stopping_cohorts_near_dose(object))
object <- StoppingCohortsNearDose(nCohorts = 5L, percentage = 40)
expect_true(v_stopping_cohorts_near_dose(object))
object <- StoppingCohortsNearDose(nCohorts = 5L, percentage = 0)
expect_true(v_stopping_cohorts_near_dose(object))
object <- StoppingCohortsNearDose(nCohorts = 5L, percentage = 100)
expect_true(v_stopping_cohorts_near_dose(object))
})
test_that("v_stopping_cohorts_near_dose returns message for non-valid nCohorts", {
err_msg <- "nCohorts must be positive integer scalar"
object <- StoppingCohortsNearDose()
# Changing `nCohorts` so that it not a scalar.
object@nCohorts <- c(1L, 2L)
expect_equal(v_stopping_cohorts_near_dose(object), err_msg)
# Changing `nCohorts` so that it is NA value.
object@nCohorts <- NA_integer_
expect_equal(v_stopping_cohorts_near_dose(object), err_msg)
# Changing `nCohorts` so that it is not a positive value.
object@nCohorts <- -2L
expect_equal(v_stopping_cohorts_near_dose(object), err_msg)
})
test_that("v_stopping_cohorts_near_dose returns message for non-valid percentage", {
err_msg <- "percentage must be a number between 0 and 100"
object <- StoppingCohortsNearDose()
# Changing `percentage` so that it not a scalar.
object@percentage <- c(1L, 2L)
expect_equal(v_stopping_cohorts_near_dose(object), err_msg)
# Changing `percentage` so that it is NA value.
object@percentage <- NA_integer_
expect_equal(v_stopping_cohorts_near_dose(object), err_msg)
# Changing `percentage` so that it is not a percentage.
object@percentage <- -1
expect_equal(v_stopping_cohorts_near_dose(object), err_msg)
# Changing `percentage` so that it is not a percentage.
object@percentage <- 101
expect_equal(v_stopping_cohorts_near_dose(object), err_msg)
})
## v_stopping_patients_near_dose ----
test_that("v_stopping_patients_near_dose passes for valid object", {
object <- StoppingPatientsNearDose(nPatients = 10L)
expect_true(v_stopping_patients_near_dose(object))
object <- StoppingPatientsNearDose(nPatients = 5L, percentage = 40)
expect_true(v_stopping_patients_near_dose(object))
object <- StoppingPatientsNearDose(nPatients = 5L, percentage = 0)
expect_true(v_stopping_patients_near_dose(object))
object <- StoppingPatientsNearDose(nPatients = 5L, percentage = 100)
expect_true(v_stopping_patients_near_dose(object))
})
test_that("v_stopping_patients_near_dose returns message for non-valid nPatients", {
err_msg <- "nPatients must be positive integer scalar"
object <- StoppingPatientsNearDose(nPatients = 5L)
# Changing `nPatients` so that it not a scalar.
object@nPatients <- c(1L, 2L)
expect_equal(v_stopping_patients_near_dose(object), err_msg)
# Changing `nPatients` so that it is NA value.
object@nPatients <- NA_integer_
expect_equal(v_stopping_patients_near_dose(object), err_msg)
# Changing `nPatients` so that it is not a positive value.
object@nPatients <- -2L
expect_equal(v_stopping_patients_near_dose(object), err_msg)
})
test_that("v_stopping_patients_near_dose returns message for non-valid percentage", {
err_msg <- "percentage must be a number between 0 and 100"
object <- StoppingPatientsNearDose(nPatients = 5L)
# Changing `percentage` so that it not a scalar.
object@percentage <- c(1L, 2L)
expect_equal(v_stopping_patients_near_dose(object), err_msg)
# Changing `percentage` so that it is NA value.
object@percentage <- NA_integer_
expect_equal(v_stopping_patients_near_dose(object), err_msg)
# Changing `percentage` so that it is not a percentage.
object@percentage <- -1
expect_equal(v_stopping_patients_near_dose(object), err_msg)
# Changing `percentage` so that it is not a percentage.
object@percentage <- 101
expect_equal(v_stopping_patients_near_dose(object), err_msg)
})
## v_stopping_min_cohorts ----
test_that("v_stopping_min_cohorts passes for valid object", {
object <- StoppingMinCohorts(nCohorts = 5L)
expect_true(v_stopping_min_cohorts(object))
})
test_that("v_stopping_min_cohorts returns message for non-valid nCohorts", {
err_msg <- "nCohorts must be positive integer scalar"
object <- StoppingMinCohorts(nCohorts = 5L)
# Changing `nCohorts` so that it not a scalar.
object@nCohorts <- c(1L, 2L)
expect_equal(v_stopping_min_cohorts(object), err_msg)
# Changing `nCohorts` so that it is NA value.
object@nCohorts <- NA_integer_
expect_equal(v_stopping_min_cohorts(object), err_msg)
# Changing `nCohorts` so that it is not a positive value.
object@nCohorts <- -2L
expect_equal(v_stopping_min_cohorts(object), err_msg)
})
## v_stopping_min_patients ----
test_that("v_stopping_min_patients passes for valid object", {
object <- StoppingMinPatients(nPatients = 5L)
expect_true(v_stopping_min_patients(object))
})
test_that("v_stopping_min_patients returns message for non-valid nPatients", {
err_msg <- "nPatients must be positive integer scalar"
object <- StoppingMinPatients(nPatients = 5L)
# Changing `nPatients` so that it not a scalar.
object@nPatients <- c(1L, 2L)
expect_equal(v_stopping_min_patients(object), err_msg)
# Changing `nPatients` so that it is NA value.
object@nPatients <- NA_integer_
expect_equal(v_stopping_min_patients(object), err_msg)
# Changing `nPatients` so that it is not a positive value.
object@nPatients <- -2L
expect_equal(v_stopping_min_patients(object), err_msg)
})
## v_stopping_target_prob ----
test_that("v_stopping_target_prob passes for valid object", {
object <- StoppingTargetProb(target = c(0.2, 0.35), prob = 0.4)
expect_true(v_stopping_target_prob(object))
object <- StoppingTargetProb(target = c(0, 1), prob = 0.4)
expect_true(v_stopping_target_prob(object))
})
test_that("v_stopping_target_prob returns message for non-valid target", {
err_msg <- "target has to be a probability range"
object <- StoppingTargetProb(target = c(0.2, 0.35), prob = 0.4)
# Changing `target` so that it is not an interval.
object@target <- 0.6
expect_equal(v_stopping_target_prob(object), err_msg)
object@target <- c(0.5, 0.6, 0.8)
expect_equal(v_stopping_target_prob(object), err_msg)
object@target <- c(0.8, 0.6)
expect_equal(v_stopping_target_prob(object), err_msg)
# Changing `target` so that one bound is not a valid probability value.
object@target <- c(0.4, 1.2)
expect_equal(v_stopping_target_prob(object), err_msg)
})
test_that("v_stopping_target_prob returns message for non-valid prob", {
err_msg <- "prob must be a probability value from (0, 1) interval"
object <- StoppingTargetProb(target = c(0.2, 0.35), prob = 0.4)
# Changing `prob` so that it does not represent allowed probability value.
object@prob <- 1
expect_equal(v_stopping_target_prob(object), err_msg)
object@prob <- 0
expect_equal(v_stopping_target_prob(object), err_msg)
object@prob <- -0.5
expect_equal(v_stopping_target_prob(object), err_msg)
# Changing `prob` so that it is not a scalar.
object@prob <- c(0.5, 0.6)
expect_equal(v_stopping_target_prob(object), err_msg)
})
## v_stopping_mtd_distribution ----
test_that("v_stopping_mtd_distribution passes for valid object", {
object <- StoppingMTDdistribution(target = 0.33, thresh = 0.5, prob = 0.9)
expect_true(v_stopping_mtd_distribution(object))
})
test_that("v_stopping_mtd_distribution returns message for non-valid target", {
err_msg <- "target must be a probability value from (0, 1) interval"
object <- StoppingMTDdistribution(target = 0.33, thresh = 0.5, prob = 0.9)
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_stopping_mtd_distribution(object), err_msg)
object@target <- 0
expect_equal(v_stopping_mtd_distribution(object), err_msg)
object@target <- -0.5
expect_equal(v_stopping_mtd_distribution(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_stopping_mtd_distribution(object), err_msg)
})
test_that("v_stopping_mtd_distribution returns message for non-valid thresh", {
err_msg <- "thresh must be a probability value from (0, 1) interval"
object <- StoppingMTDdistribution(target = 0.33, thresh = 0.5, prob = 0.9)
# Changing `thresh` so that it does not represent allowed probability value.
object@thresh <- 1
expect_equal(v_stopping_mtd_distribution(object), err_msg)
object@thresh <- 0
expect_equal(v_stopping_mtd_distribution(object), err_msg)
object@thresh <- -0.5
expect_equal(v_stopping_mtd_distribution(object), err_msg)
# Changing `thresh` so that it is not a scalar.
object@thresh <- c(0.5, 0.6)
expect_equal(v_stopping_mtd_distribution(object), err_msg)
})
test_that("v_stopping_mtd_distribution returns message for non-valid prob", {
err_msg <- "prob must be a probability value from (0, 1) interval"
object <- StoppingMTDdistribution(target = 0.33, thresh = 0.5, prob = 0.9)
# Changing `prob` so that it does not represent allowed probability value.
object@prob <- 1
expect_equal(v_stopping_mtd_distribution(object), err_msg)
object@prob <- 0
expect_equal(v_stopping_mtd_distribution(object), err_msg)
object@prob <- -0.5
expect_equal(v_stopping_mtd_distribution(object), err_msg)
# Changing `prob` so that it is not a scalar.
object@prob <- c(0.5, 0.6)
expect_equal(v_stopping_mtd_distribution(object), err_msg)
})
## v_stopping_mtd_cv ----
test_that("v_stopping_mtd_cv passes for valid object", {
object <- StoppingMTDCV(target = 0.3, thresh_cv = 30)
expect_true(v_stopping_mtd_cv(object))
object <- StoppingMTDCV(target = 0.3, thresh_cv = 100)
expect_true(v_stopping_mtd_cv(object))
})
test_that("v_stopping_mtd_cv returns message for non-valid target", {
err_msg <- "target must be probability value from (0, 1) interval"
object <- StoppingMTDCV(target = 0.3, thresh_cv = 30)
# Changing `target` so that it does not represent allowed probability value.
object@target <- 1
expect_equal(v_stopping_mtd_cv(object), err_msg)
object@target <- 0
expect_equal(v_stopping_mtd_cv(object), err_msg)
object@target <- -0.5
expect_equal(v_stopping_mtd_cv(object), err_msg)
# Changing `target` so that it is not a scalar.
object@target <- c(0.5, 0.6)
expect_equal(v_stopping_mtd_cv(object), err_msg)
})
test_that("v_stopping_mtd_cv returns message for non-valid thresh_cv", {
err_msg <- "thresh_cv must be percentage > 0"
object <- StoppingMTDCV(target = 0.3, thresh_cv = 30)
# Changing `thresh_cv` so that it not a scalar.
object@thresh_cv <- c(1L, 2L)
expect_equal(v_stopping_mtd_cv(object), err_msg)
# Changing `thresh_cv` so that it is NA value.
object@thresh_cv <- NA_integer_
expect_equal(v_stopping_mtd_cv(object), err_msg)
# Changing `thresh_cv` so that it is not a thresh_cv.
object@thresh_cv <- -1
expect_equal(v_stopping_mtd_cv(object), err_msg)
object@thresh_cv <- 0
expect_equal(v_stopping_mtd_cv(object), err_msg)
object@thresh_cv <- 101
expect_equal(v_stopping_mtd_cv(object), err_msg)
})
## v_stopping_target_biomarker ----
test_that("v_stopping_target_biomarker passes for valid object", {
object <- StoppingTargetBiomarker(c(0.85, 1), 0.4)
expect_true(v_stopping_target_biomarker(object))
object <- StoppingTargetBiomarker(c(0, 0.6), 0.4)
expect_true(v_stopping_target_biomarker(object))
object <- StoppingTargetBiomarker(c(2, 3), 0.4, FALSE)
expect_true(v_stopping_target_biomarker(object))
})
test_that("v_stopping_target_biomarker returns expected messages for non-valid target (relative)", {
err_msg <- "target has to be a probability range when is_relative flag is 'TRUE'"
object <- StoppingTargetBiomarker(c(0.85, 1), 0.4)
# Changing `target` so that it is not an interval.
object@target <- 0.6
expect_equal(v_stopping_target_biomarker(object), err_msg)
object@target <- c(0.5, 0.6, 0.8)
expect_equal(v_stopping_target_biomarker(object), err_msg)
object@target <- c(0.8, 0.6)
expect_equal(v_stopping_target_biomarker(object), err_msg)
# Changing `target` so that one bound is not a valid probability value.
object@target <- c(0.4, 1.2)
expect_equal(v_stopping_target_biomarker(object), err_msg)
})
test_that("v_stopping_target_biomarker returns expected messages for non-valid target (absolute)", {
err_msg <- "target must be a numeric range"
object <- StoppingTargetBiomarker(c(0.85, 1), 0.4, FALSE)
# Changing `target` so that it is not an interval.
object@target <- 0.6
expect_equal(v_stopping_target_biomarker(object), err_msg)
object@target <- c(0.5, 0.6, 0.8)
expect_equal(v_stopping_target_biomarker(object), err_msg)
object@target <- c(0.8, 0.6)
expect_equal(v_stopping_target_biomarker(object), err_msg)
})
test_that("v_stopping_target_biomarker returns expected messages for non-valid is_relative", {
err_msg <- "is_relative must be a flag"
object <- StoppingTargetBiomarker(c(0.85, 1), 0.4)
# Changing `is_relative` so that it is not a flag.
object@is_relative <- c(TRUE, TRUE)
expect_equal(v_stopping_target_biomarker(object), err_msg)
object@is_relative <- c(TRUE, FALSE)
expect_equal(v_stopping_target_biomarker(object), err_msg)
})
test_that("v_stopping_target_biomarker returns expected messages for non-valid prob", {
err_msg <- "prob must be a probability value from (0, 1) interval"
object <- StoppingTargetBiomarker(c(0.85, 1), 0.4)
# Changing `prob` so that it does not represent allowed probability value.
object@prob <- 1
expect_equal(v_stopping_target_biomarker(object), err_msg)
object@prob <- 0
expect_equal(v_stopping_target_biomarker(object), err_msg)
object@prob <- -0.5
expect_equal(v_stopping_target_biomarker(object), err_msg)
# Changing `prob` so that it is not a scalar.
object@prob <- c(0.5, 0.6)
expect_equal(v_stopping_target_biomarker(object), err_msg)
})
## v_stopping_list ----
test_that("v_stopping_list passes for valid object", {
object <- h_stopping_list()
expect_true(v_stopping_list(object))
})
test_that("v_stopping_list returns expected messages for non-valid stop_list", {
err_msg <- "every stop_list element must be of class 'Stopping'"
object <- h_stopping_list()
# Changing `stop_list` so that not all of its elements are of class `Stopping`.
object@stop_list <- list(object@stop_list[[1]], TRUE)
expect_equal(v_stopping_list(object), err_msg)
object@stop_list <- list(FALSE, TRUE)
expect_equal(v_stopping_list(object), err_msg)
})
test_that("v_stopping_list returns expected messages for non-valid summary (args)", {
err_msg <- "summary must be a function that accepts a single argument, without ..."
object <- h_stopping_list()
# Changing `summary` so that it has more than 1 or no arguments.
object@summary <- function(x, y) {
TRUE
}
expect_equal(v_stopping_list(object), err_msg)
object@summary <- function() {
TRUE
}
expect_equal(v_stopping_list(object), err_msg)
object@summary <- function(...) {
TRUE
}
expect_equal(v_stopping_list(object), err_msg)
})
test_that("v_stopping_list returns expected messages for non-valid summary (output)", {
err_msg <- "summary must accept a logical vector of the same length as 'stop_list' and return a boolean value"
object <- h_stopping_list()
# Changing `summary` so that it does not return a flag.
object@summary <- function(x) {
c(TRUE, FALSE)
}
expect_equal(v_stopping_list(object), err_msg)
object@summary <- function(x) {
c(TRUE, FALSE, TRUE)
}
expect_equal(v_stopping_list(object), err_msg)
})
## v_stopping_all ----
test_that("v_stopping_all passes for valid object", {
object <- StoppingAll(
stop_list = list(
StoppingMinCohorts(nCohorts = 3),
StoppingTargetProb(target = c(0.2, 0.35), prob = 0.5),
StoppingMinPatients(nPatients = 20)
)
)
expect_true(v_stopping_all(object))
})
test_that("v_stopping_all returns expected messages for non-valid stop_list", {
err_msg <- "every stop_list element must be of class 'Stopping'"
object <- StoppingAll(
stop_list = list(
StoppingMinCohorts(nCohorts = 3),
StoppingTargetProb(target = c(0.2, 0.35), prob = 0.5),
StoppingMinPatients(nPatients = 20)
)
)
# Changing `stop_list` so that not all of its elements are of class `Stopping`.
object@stop_list <- list(object@stop_list[[1]], TRUE)
expect_equal(v_stopping_all(object), err_msg)
object@stop_list <- list(FALSE, TRUE)
expect_equal(v_stopping_all(object), err_msg)
})
## v_stopping_tdci_ratio ----
test_that("v_stopping_tdci_ratio passes for valid object", {
object <- StoppingTDCIRatio(target_ratio = 7, prob_target = 0.2)
expect_true(v_stopping_tdci_ratio(object))
object <- StoppingTDCIRatio(target_ratio = 0.2, prob_target = 0)
expect_true(v_stopping_tdci_ratio(object))
object <- StoppingTDCIRatio(target_ratio = 6, prob_target = 1)
expect_true(v_stopping_tdci_ratio(object))
})
test_that("v_stopping_tdci_ratio returns message for non-valid target_ratio", {
err_msg <- "target_ratio must be a positive number"
object <- StoppingTDCIRatio(target_ratio = 7, prob_target = 0.2)
# Changing `target_ratio` so that it does not a positive number.
object@target_ratio <- -0.5
expect_equal(v_stopping_tdci_ratio(object), err_msg)
object@target_ratio <- 0
expect_equal(v_stopping_tdci_ratio(object), err_msg)
# Changing `target_ratio` so that it is not a scalar.
object@target_ratio <- c(0.5, 0.6)
expect_equal(v_stopping_tdci_ratio(object), err_msg)
})
test_that("v_stopping_tdci_ratio returns message for non-valid prob_target", {
err_msg <- "prob_target must be a probability value from [0, 1] interval"
object <- StoppingTDCIRatio(target_ratio = 7, prob_target = 0.2)
# Changing `prob_target` so that it does not represent allowed probability value.
object@prob_target <- 2
expect_equal(v_stopping_tdci_ratio(object), err_msg)
object@prob_target <- -0.5
expect_equal(v_stopping_tdci_ratio(object), err_msg)
# Changing `prob_target` so that it is not a scalar.
object@prob_target <- c(0.5, 0.6)
expect_equal(v_stopping_tdci_ratio(object), err_msg)
})
# CohortSize ----
## v_cohort_size_range ----
test_that("v_cohort_size_range passes for valid object", {
object <- CohortSizeRange(0, 20)
expect_true(v_cohort_size_range(object))
object <- CohortSizeRange(c(0, 30), c(20, 60))
expect_true(v_cohort_size_range(object))
object <- CohortSizeRange(c(20, 40, 90), c(50, 160, 400))
expect_true(v_cohort_size_range(object))
})
test_that("v_cohort_size_range returns message for non-valid intervals", {
err_msg <- "intervals must be a numeric vector with non-negative, sorted (asc.) and unique values"
object <- CohortSizeRange(c(0, 30), c(20, 60))
# Changing `intervals` so that it contains a non-unique values
object@intervals <- c(10, 10)
expect_equal(v_cohort_size_range(object), err_msg)
# Changing `intervals` so that it contains not allowed elements or it is not sorted.
object@intervals <- c(0, -30)
expect_equal(v_cohort_size_range(object), err_msg)
object@intervals <- c(20, Inf)
expect_equal(v_cohort_size_range(object), err_msg)
object@intervals <- c(NA, 30)
expect_equal(v_cohort_size_range(object), err_msg)
object@intervals <- -0.5
object@cohort_size <- 20L
expect_equal(v_cohort_size_range(object), err_msg)
# Changing `intervals` so that its length is not >= 1.
object@intervals <- numeric(0)
object@cohort_size <- integer(0)
expect_equal(v_cohort_size_range(object), err_msg)
})
test_that("v_cohort_size_range returns message for non-valid cohort_size", {
errmsg <- "cohort_size must be an integer vector of the same length as intervals, containing non-negative values only"
object <- CohortSizeRange(c(0, 30), c(20, 60))
# Changing `cohort_size` so that its length is not equal to the length of `intervals`.
object@cohort_size <- c(20L, 60L, 90L)
expect_equal(v_cohort_size_range(object), errmsg)
# Changing `cohort_size` so that it contains not allowed elements.
object@cohort_size <- c(0L, -30L)
expect_equal(v_cohort_size_range(object), errmsg)
object@cohort_size <- c(NA, 30L)
expect_equal(v_cohort_size_range(object), errmsg)
object@cohort_size <- -20L
object@intervals <- 0
expect_equal(v_cohort_size_range(object), errmsg)
})
## v_cohort_size_dlt ----
test_that("v_cohort_size_dlt passes for valid object", {
object <- CohortSizeDLT(0, 20)
expect_true(v_cohort_size_dlt(object))
object <- CohortSizeDLT(c(0, 1), c(20, 60))
expect_true(v_cohort_size_dlt(object))
object <- CohortSizeDLT(c(0, 1, 3), c(50, 160, 400))
expect_true(v_cohort_size_dlt(object))
})
test_that("v_cohort_size_dlt returns message for non-valid intervals", {
err_msg <- "intervals must be an integer vector with non-negative, sorted (asc.) and unique values"
object <- CohortSizeDLT(c(0, 1), c(20, 60))
# Changing `intervals` so that it contains a non-unique values
object@intervals <- c(10L, 10L)
expect_equal(v_cohort_size_dlt(object), err_msg)
# Changing `intervals` so that it contains not allowed elements or it is not sorted.
object@intervals <- c(0L, -30L)
expect_equal(v_cohort_size_dlt(object), err_msg)
object@intervals <- c(NA, 30L)
expect_equal(v_cohort_size_dlt(object), err_msg)
object@intervals <- -5L
object@cohort_size <- 20L
expect_equal(v_cohort_size_dlt(object), err_msg)
# Changing `intervals` so that its length is not >= 1.
object@intervals <- integer(0)
object@cohort_size <- integer(0)
expect_equal(v_cohort_size_dlt(object), err_msg)
})
test_that("v_cohort_size_dlt returns message for non-valid cohort_size", {
errmsg <-
"cohort_size must be an integer vector of the same length as intervals, containing non-negative values only"
object <- CohortSizeDLT(c(0, 1), c(20, 60))
# Changing `cohort_size` so that its length is not equal to the length of `intervals`.
object@cohort_size <- c(20L, 60L, 90L)
expect_equal(v_cohort_size_dlt(object), errmsg)
# Changing `cohort_size` so that it contains not allowed elements.
object@cohort_size <- c(0L, -30L)
expect_equal(v_cohort_size_dlt(object), errmsg)
object@cohort_size <- c(NA, 30L)
expect_equal(v_cohort_size_dlt(object), errmsg)
object@cohort_size <- -20L
object@intervals <- 0L
expect_equal(v_cohort_size_dlt(object), errmsg)
})
## v_cohort_size_const ----
test_that("v_cohort_size_const passes for valid object", {
object <- CohortSizeConst(0)
expect_true(v_cohort_size_const(object))
object <- CohortSizeConst(5)
expect_true(v_cohort_size_const(object))
})
test_that("v_cohort_size_const returns message for non-valid size", {
err_msg <- "size needs to be a non-negative scalar"
object <- CohortSizeConst(5)
# Changing `size` so that it is not allowed value.
object@size <- -(5L)
expect_equal(v_cohort_size_const(object), err_msg)
object@size <- NA_integer_
expect_equal(v_cohort_size_const(object), err_msg)
# Changing `size` so that it is not a scalar.
object@size <- c(2L, 4L)
expect_equal(v_cohort_size_const(object), err_msg)
})
## v_cohort_size_parts ----
test_that("v_cohort_size_parts passes for valid object", {
object <- CohortSizeParts(c(1, 4))
expect_true(v_cohort_size_parts(object))
object <- CohortSizeParts(c(9, 4))
expect_true(v_cohort_size_parts(object))
})
test_that("v_cohort_size_parts returns message for non-valid cohort_sizes", {
err_msg <- "cohort_sizes needs to be an integer vector of length 2 with all elements positive"
object <- CohortSizeParts(c(1L, 4L))
# Changing `cohort_sizes` so that it is not of length 2.
object@cohort_sizes <- c(1L, 4L, 7L)
expect_equal(v_cohort_size_parts(object), err_msg)
object@cohort_sizes <- 2L
expect_equal(v_cohort_size_parts(object), err_msg)
object@cohort_sizes <- integer(0)
expect_equal(v_cohort_size_parts(object), err_msg)
# Changing `cohort_sizes` so that it contains not allowed elements.
object@cohort_sizes <- c(0L, 4L)
expect_equal(v_cohort_size_parts(object), err_msg)
object@cohort_sizes <- c(1L, -30L)
expect_equal(v_cohort_size_parts(object), err_msg)
object@cohort_sizes <- c(NA, 30L)
expect_equal(v_cohort_size_parts(object), err_msg)
object@cohort_sizes <- -20L
expect_equal(v_cohort_size_parts(object), err_msg)
})
## v_cohort_size_max ----
test_that("v_cohort_size_max passes for valid object", {
object <- CohortSizeMax(h_cohort_sizes())
expect_true(v_cohort_size_max(object))
object <- CohortSizeMax(h_cohort_sizes(three_rules = TRUE))
expect_true(v_cohort_size_max(object))
})
test_that("v_cohort_size_parts returns message for non-valid sizes", {
err_msg <- "cohort_sizes must be a list of CohortSize (unique) objects only and be of length >= 2"
cohort_sizes <- h_cohort_sizes()
object <- CohortSizeMax(cohort_sizes)
# Changing `cohort_sizes` so that it does not contain `CohortSize` objects only.
object@cohort_sizes <- list(3, 5)
expect_equal(v_cohort_size_max(object), err_msg)
object@cohort_sizes <- list(cohort_sizes[[1]], 5L)
expect_equal(v_cohort_size_max(object), err_msg)
object@cohort_sizes <- list(cohort_sizes[[1]], NA)
expect_equal(v_cohort_size_max(object), err_msg)
object@cohort_sizes <- list()
expect_equal(v_cohort_size_max(object), err_msg)
# Changing `cohort_sizes` so that it contains non-unique `CohortSize` objects.
object@cohort_sizes <- list(cohort_sizes[[1]], cohort_sizes[[1]])
expect_equal(v_cohort_size_max(object), err_msg)
# Changing `cohort_sizes` so that it is not of length >=2.
object@cohort_sizes <- list(cohort_sizes[[1]])
expect_equal(v_cohort_size_max(object), err_msg)
})
# SafetyWindowSize ----
## v_safety_window_size ----
test_that("v_safety_window_size passes for valid object", {
object <- h_safety_window_size()
expect_true(v_safety_window_size(object))
object <- h_safety_window_size(three_cohorts = TRUE)
expect_true(v_safety_window_size(object))
})
test_that("v_safety_window_size returns message for non-valid gap", {
err_msg1 <- "gap must be a list of length >= 1 with integer vectors only"
err_msg2 <- "every element in gap list has to be an integer vector with non-negative and non-missing values"
object <- h_safety_window_size()
# Changing `gap` so that it not a list of integers.
object@gap <- c(object@gap[-2], list(c(4, 6)))
expect_equal(v_safety_window_size(object), c(err_msg1, err_msg2))
# Changing `gap` so that it not a list of non-negative integers.
object@gap <- c(object@gap[-2], list(c(4L, -(5L))))
expect_equal(v_safety_window_size(object), c(err_msg2))
object@gap <- c(object@gap[-2], list(integer(0)))
expect_equal(v_safety_window_size(object), c(err_msg2))
object@gap <- c(object@gap[-2], list(NA_integer_))
expect_equal(v_safety_window_size(object), c(err_msg2))
# Changing `gap` so that it not a list of length >= 1.
object@gap <- list()
object@size <- integer()
expect_equal(v_safety_window_size(object), err_msg1)
})
test_that("v_safety_window_size returns message for non-valid size", {
err_msg <- "size has to be an integer vector, of the same length as gap, with positive, unique and sorted non-missing values" # nolinter
object <- h_safety_window_size()
# Changing `size` so that it contains not allowed elements.
object@size <- c(0L, 4L)
expect_equal(v_safety_window_size(object), err_msg)
object@size <- c(1L, -30L)
expect_equal(v_safety_window_size(object), err_msg)
object@size <- c(NA, 30L)
expect_equal(v_safety_window_size(object), err_msg)
object@size <- c(2L, 1L)
expect_equal(v_safety_window_size(object), err_msg)
object@size <- c(1L, 1L)
expect_equal(v_safety_window_size(object), err_msg)
# Changing `size` so that it not of the same length as `gap`.
object@size <- 1L
expect_equal(v_safety_window_size(object), err_msg)
})
test_that("v_safety_window_size returns message for non-valid follow", {
err_msg <- "follow has to be a positive integer number"
object <- h_safety_window_size()
# Changing `follow` so that it is not a valid integer scalar.
object@follow <- 0L
expect_equal(v_safety_window_size(object), err_msg)
object@follow <- -1L
expect_equal(v_safety_window_size(object), err_msg)
object@follow <- c(1L, 2L)
expect_equal(v_safety_window_size(object), err_msg)
object@follow <- NA_integer_
expect_equal(v_safety_window_size(object), err_msg)
})
test_that("v_safety_window_size returns message for non-valid follow_min", {
err_msg <- "follow_min has to be a positive integer number"
object <- h_safety_window_size()
# Changing `follow_min` so that it is not a valid integer scalar.
object@follow_min <- 0L
expect_equal(v_safety_window_size(object), err_msg)
object@follow_min <- -1L
expect_equal(v_safety_window_size(object), err_msg)
object@follow_min <- c(1L, 2L)
expect_equal(v_safety_window_size(object), err_msg)
object@follow_min <- NA_integer_
expect_equal(v_safety_window_size(object), err_msg)
})
# SafetyWindowConst ----
## v_safety_window_const ----
test_that("v_safety_window_const passes for valid object", {
object <- SafetyWindowConst(8, 2, 18)
expect_true(v_safety_window_const(object))
object <- SafetyWindowConst(0, 2, 18)
expect_true(v_safety_window_const(object))
object <- SafetyWindowConst(c(2, 5), 2, 18)
expect_true(v_safety_window_const(object))
})
test_that("v_safety_window_const returns message for non-valid gap", {
err_msg <- "gap has to be an integer vector with non-negative and non-missing elements"
object <- SafetyWindowConst(8, 2, 18)
# Changing `gap` so that it is not a valid integer scalar.
object@gap <- -1L
expect_equal(v_safety_window_const(object), err_msg)
object@gap <- c(1L, -2L)
expect_equal(v_safety_window_const(object), err_msg)
object@gap <- NA_integer_
expect_equal(v_safety_window_const(object), err_msg)
object@gap <- c(2L, NA_integer_)
expect_equal(v_safety_window_const(object), err_msg)
})
test_that("v_safety_window_const returns message for non-valid follow", {
err_msg <- "follow has to be a positive integer number"
object <- SafetyWindowConst(8, 2, 18)
# Changing `follow` so that it is not a valid integer scalar.
object@follow <- 0L
expect_equal(v_safety_window_const(object), err_msg)
object@follow <- -1L
expect_equal(v_safety_window_const(object), err_msg)
object@follow <- c(1L, 2L)
expect_equal(v_safety_window_const(object), err_msg)
object@follow <- NA_integer_
expect_equal(v_safety_window_const(object), err_msg)
})
test_that("v_safety_window_const returns message for non-valid follow_min", {
err_msg <- "follow_min has to be a positive integer number"
object <- SafetyWindowConst(8, 2, 18)
# Changing `follow_min` so that it is not a valid integer scalar.
object@follow_min <- 0L
expect_equal(v_safety_window_const(object), err_msg)
object@follow_min <- -1L
expect_equal(v_safety_window_const(object), err_msg)
object@follow_min <- c(1L, 2L)
expect_equal(v_safety_window_const(object), err_msg)
object@follow_min <- NA_integer_
expect_equal(v_safety_window_const(object), err_msg)
})
test_that("v_increments_maxtoxprob validates correctly", {
expect_no_error({
x <- IncrementsMaxToxProb(c("DLAE" = 0.3, "DLT" = 0.1))
})
expect_error({
x <- IncrementsMaxToxProb(NA)
})
expect_error({
x <- IncrementsMaxToxProb(c(0.3, NA))
})
expect_error({
x <- IncrementsMaxToxProb(c(-1, 0.2))
})
expect_error({
x <- IncrementsMaxToxProb(c(0.2, 3))
})
})
test_that("v_nextbest_ordinal validates correctly", {
expect_no_error({
x <- NextBestOrdinal(
grade = 1L,
rule = NextBestMTD(target = 0.3, derive = mean)
)
})
expect_error(
{
x <- NextBestOrdinal(
grade = pi,
rule = NextBestMTD(target = 0.3, derive = mean)
)
},
"grade must be a positive integer"
)
expect_error(
{
x <- NextBestOrdinal(
grade = -2,
rule = NextBestMTD(target = 0.3, derive = mean)
)
},
"grade must be a positive integer"
)
expect_error(
{
x <- NextBestOrdinal(grade = 1L, rule = CohortSizeConst(3))
},
paste0(
"invalid class \"NextBestOrdinal\" object: invalid object for slot \"rule\"",
" in class \"NextBestOrdinal\": got class \"CohortSizeConst\", should be or ",
"extend class \"NextBest\""
)
)
})
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.