p <- pop2d4s # ASSERTIONS ---- ## function ---- test_that("dopt is valid function", { expect_function(dopt, args = c("n", "H_counts", "N", "S", "total", "kappa", "return_T")) }) ## n ---- test_that("dopt throws error when n is not valid", { expect_error( dopt(-1, p$H_counts, p$N, p$S, p$total, p$kappa), "n" ) expect_error( dopt(0, p$H_counts, p$N, p$S, p$total, p$kappa), "n" ) expect_error( dopt(sum(p$N) + 1, p$H_counts, p$N, p$S, p$total, p$kappa), "n" ) expect_error( dopt(c(1, 1), p$H_counts, p$N, p$S, p$total, p$kappa), "n" ) expect_error( dopt(c(1, NA), p$H_counts, p$N, p$S, p$total, p$kappa), "'n'" ) expect_error( dopt(NA, p$H_counts, p$N, p$S, p$total, p$kappa), "'n'" ) expect_error( dopt(NULL, p$H_counts, p$N, p$S, p$total, p$kappa), "'n'" ) expect_error( dopt(c(1, Inf), p$H_counts, p$N, p$S, p$total, p$kappa), "'n'" ) expect_error( dopt(Inf, p$H_counts, p$N, p$S, p$total, p$kappa), "'n'" ) }) ## H_counts ---- test_that("dopt throws error when H_counts is not valid", { expect_error( dopt(350, c(-2, 6), p$N, p$S, p$total, p$kappa), "H_counts" ) expect_error( dopt(350, c(4, 0), p$N, p$S, p$total, p$kappa), "H_counts" ) expect_error( dopt(350, c(1.5, 2.5), p$N, p$S, p$total, p$kappa), "'H_counts'" ) expect_error( dopt(350, c(Inf, 6), p$N, p$S, p$total, p$kappa), "'H_counts'" ) expect_error( dopt(350, c(4, NA), p$N, p$S, p$total, p$kappa), "'H_counts'" ) expect_error( dopt(350, NA, p$N, p$S, p$total, p$kappa), "'H_counts'" ) expect_error( dopt(350, integer(), p$N, p$S, p$total, p$kappa), "'H_counts'" ) expect_error( dopt(350, NULL, p$N, p$S, p$total, p$kappa), "'H_counts'" ) }) ## N ---- test_that("dopt throws error when N is not valid", { expect_error( dopt(350, p$H_counts, c(p$N, 4), p$S, p$total, p$kappa), "N" ) expect_error( dopt(350, p$H_counts, p$N[-1], p$S, p$total, p$kappa), "'N'" ) expect_error( dopt(350, p$H_counts, c(-1, 2, 3, 4), p$S, p$total, p$kappa), "N" ) expect_error( dopt(350, p$H_counts, c(1, 0, 3, 4), p$S, p$total, p$kappa), "N" ) expect_error( dopt(350, p$H_counts, c(1, 2, 3.5, 4), p$S, p$total, p$kappa), "'N'" ) expect_error( dopt(350, p$H_counts, c(1, 2, 3, Inf), p$S, p$total, p$kappa), "'N'" ) expect_error( dopt(350, p$H_counts, c(1, NA, 3, 4), p$S, p$total, p$kappa), "'N'" ) expect_error( dopt(350, p$H_counts, c(NA, NA, NA, NA), p$S, p$total, p$kappa), "'N'" ) expect_error( dopt(350, p$H_counts, NULL, p$S, p$total, p$kappa), "'N'" ) }) ## S ---- test_that("dopt throws error when S is not valid", { expect_error( dopt(350, p$H_counts, p$N, c(p$S, 4), p$total, p$kappa), "'S'" ) expect_error( dopt(350, p$H_counts, p$N, p$S[-1], p$total, p$kappa), "'S'" ) expect_error( dopt(350, p$H_counts, p$N, c(-1, 2, 3, 4), p$total, p$kappa), "S" ) expect_error( dopt(350, p$H_counts, p$N, c(1, 0, 3, 4), p$total, p$kappa), "S" ) expect_error( dopt(350, p$H_counts, p$N, c(1, 2, 3, Inf), p$total, p$kappa), "'S'" ) expect_error( dopt(350, p$H_counts, p$N, c(1, NA, 3, 4), p$total, p$kappa), "'S'" ) expect_error( dopt(350, p$H_counts, p$N, c(NA, NA, NA, NA), p$total, p$kappa), "'S'" ) expect_error( dopt(350, p$H_counts, p$N, NULL, p$total, p$kappa), "'S'" ) }) ## total ---- test_that("dopt throws error when total is not valid", { expect_error( dopt(350, p$H_counts, p$N, p$S, c(p$total, 4), p$kappa), "'total'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total[-1], p$kappa), "'total'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, c(-1, 2), p$kappa), "total" ) expect_error( dopt(350, p$H_counts, p$N, p$S, c(1, 0), p$kappa), "total" ) expect_error( dopt(350, p$H_counts, p$N, p$S, c(1, Inf), p$kappa), "'total'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, c(1, NA), p$kappa), "'total'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, c(NA, NA), p$kappa), "'total'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, NULL, p$kappa), "'total'" ) }) ## kappa ---- test_that("dopt throws error when kappa is not valid", { expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, c(p$kappa, 4)), "'kappa'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa[-1]), "'kappa'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, c(-1, 2)), "kappa" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, c(1, 0)), "kappa" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, c(1, Inf)), "'kappa'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, c(1, NA)), "'kappa'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, c(NA, NA)), "'kappa'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, NULL), "'kappa'" ) }) ## n ---- test_that("dopt throws error when n is not valid", { expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, -1), "'return_T'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, 0), "'return_T'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, 1), "'return_T'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, c(0, 1)), "'return_T'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, c(1, NA)), "'return_T'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, NA), "'return_T'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, Inf), "'return_T'" ) expect_error( dopt(350, p$H_counts, p$N, p$S, p$total, p$kappa, NULL), "'return_T'" ) }) # OPTIMUM ALLOCATION ---- ## H_counts = 1 ---- test_that("dopt works for H_counts=1, n