# Function ---- test_that("dca is valid function", { expect_function( dca, args = c("n", "H_counts", "N", "S", "rho", "rho2", "U", "details") ) }) # H_counts = 1 ---- test_that("dca works for H_counts=1, n sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca works for H_counts=2, nn_max", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- 29 result <- dca(n, H_counts, N, S, rho, rho^2) expected <- c(6.304348, 22.695652) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, details = TRUE) expected_details <- list( lambda = -0.7165948, k = 1.008696, v = 1, s = 1.008696, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=2, n>n_max, U=1", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- 29 result <- dca(n, H_counts, N, S, rho, rho^2, 1) expected <- c(N[1], 19) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1, details = TRUE) expected_details <- list( lambda = 1.332237, k = 0.8444444, v = 1, s = 0.8444444, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=2, n>n_max, U=2", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- 29 result <- dca(n, H_counts, N, S, rho, rho^2, 2) expected <- c(9, N[2]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2, details = TRUE) expected_details <- list( lambda = 0.4340278, k = 1.44, v = 1, s = 1.44, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-7) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=2, n=sum(N)", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2) expected <- c(6.521739, 23.478261) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, details = TRUE) expected_details <- list( lambda = -1.666667, k = 1.043478, v = 1, s = 1.043478, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=2, n=sum(N), U=1", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 1) expected <- c(N[1], 20) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1, details = TRUE) expected_details <- list( lambda = 0, k = 0.8888889, v = 1, s = 0.8888889, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-7) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=2, n=sum(N), U=2", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 2) expected <- c(10, N[2]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2, details = TRUE) expected_details <- list( lambda = 0, k = 1.6, v = 1, s = 1.6, x = expected ) elements <- names(expected_details) expect_identical(result_details[elements], expected_details) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=2, n=sum(N), U=1:2", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 1:2) expect_identical(result, N) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2, details = TRUE) expected_details <- list( lambda = 0, k = 1.6, v = 1, s = 1.6, x = N ) elements <- names(expected_details) expect_identical(result_details[elements], expected_details) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) # H_counts = c(1,1) ---- test_that("dca works for H_counts=c(1,1), n sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca works for H_counts=c(1,1), n sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca works for H_counts=c(1,2), n sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca works for H_counts=c(1,2), n>n_max", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 43 result <- dca(n, H_counts, N, S, rho, rho^2) expected <- c(10.06395, 14.63824, 18.29780) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, details = TRUE) expected_details <- list( lambda = -0.9929328, k = -0.4049989, v = c(-0.6286441, -0.7776931), s = c(0.2546001, 0.3149648), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(1,2), n>n_max, U=1", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 43 result <- dca(n, H_counts, N, S, rho, rho^2, 1) expected <- c(N[1], 14.66667, 18.33333) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1, details = TRUE) expected_details <- list( lambda = -1.636364, k = 0.3155764, v = 1, s = 0.3155764, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n>n_max, U=2", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 43 result <- dca(n, H_counts, N, S, rho, rho^2, 2) expected <- c(9.035355, N[2], 13.964645) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2, details = TRUE) expected_details <- list( lambda = 16.68177, k = -0.3317065, v = c(-0.6890984, -0.7246678), s = c(0.2285784, 0.2403770), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(1,2), n>n_max, U=3", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 43 result <- dca(n, H_counts, N, S, rho, rho^2, 3) expected <- c(9.477467, 18.522533, N[3]) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 3, details = TRUE) expected_details <- list( lambda = 8.614722, k = -0.4651039, v = c(-0.5155043, -0.8568870), s = c(0.2397631, 0.3985414), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(1,2), n>n_max, U=1:2", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 43 result <- dca(n, H_counts, N, S, rho, rho^2, 1:2) expected <- c(N[1:2], 12.9999999999999964) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:2, details = TRUE) expected_details <- list( lambda = 34.61538, k = 0.2237724, v = 1, s = 0.2237724, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n>n_max, U=c(1,3)", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 43 result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3)) expected <- c(N[1], 17.9999999999999964, N[3]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3), details = TRUE) expected_details <- list( lambda = 12, k = 0.3872983, v = 1, s = 0.3872983, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n>n_max, U=2:3", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 43 result <- dca(n, H_counts, N, S, rho, rho^2, 2:3) expected <- c(8, N[2:3]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2:3, details = TRUE) expected_details <- list( lambda = 39.0625, k = 0.2023858, v = 1, s = 0.2023858, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N)", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2) expected <- c(10.87450, 15.16689, 18.95861) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, details = TRUE) expected_details <- list( lambda = -12.56518, k = -0.426826, v = c(-0.6445375, -0.7645727), s = c(0.2751054, 0.3263395), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N), U=1", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2, 1) expected <- c(N[1], 15.55556, 19.44444) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1, TRUE) expected_details <- list( lambda = -20.57143, k = 0.3347023, v = 1, s = 0.3347023, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N), U=2", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2, 2) expected <- c(9.9999999999999982, N[2], 15.0000000000000036) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2, TRUE) expected_details <- list( lambda = -1.421085e-14, k = -0.3614784, v = c(-0.6998542, -0.7142857), s = c(0.2529822, 0.2581989), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N), U=3", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2, 3) expected <- c(10, 20.0000000000000036, N[3]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 3, TRUE) expected_details <- list( lambda = 0, k = -0.4991845, v = c(-0.506791, -0.862069), s = c(0.2529822, 0.4303315), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N), U=1:2", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2, 1:2) expected <- c(N[1:2], 15) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:2, TRUE) expected_details <- list( lambda = 2.842171e-14, k = 0.2581989, v = 1, s = 0.2581989, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N), U=c(1,3)", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3)) expected <- c(N[1], 20, N[3]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3), TRUE) expected_details <- list( lambda = 1.421085e-14, k = 0.4303315, v = 1, s = 0.4303315, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N), U=2:3", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2, 2:3) expected <- c(10, N[2:3]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2:3, TRUE) expected_details <- list( lambda = -2.842171e-14, k = 0.2529822, v = 1, s = 0.2529822, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(1,2), n=sum(N), U=1:3", { H_counts <- c(1, 2) N <- c(10, 20, 15) S <- c(5, 9, 15) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 45 result <- dca(n, H_counts, N, S, rho, rho^2, 1:3) expect_identical(result, N) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:3, TRUE) expect_identical(result_details, N) }) # H_counts = c(2,2) ---- test_that("dca works for H_counts=c(2,2), n sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca errors for H_counts=c(2,2), n sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca works for H_counts=c(2,2), n sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca errors for H_counts=c(2,2), n=n_max, U=3:4, too small n", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- dca_nmax(H_counts, N, S) # 54.60419 expect_error( dca(n, H_counts, N, S, rho, rho^2, 3:4), "U must be such that n > sum(N[U]) || (n == sum(N[U]) && n == sum(N))" ) }) test_that("dca works for H_counts=c(2,2), n=n_max, U=1:3", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- dca_nmax(H_counts, N, S) # 54.60419 result <- dca(n, H_counts, N, S, rho, rho^2, 1:3) expected <- c(N[1:3], 9.604187) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:3, details = TRUE) expected_details <- list( lambda = 33.7584, k = 0.4649607, v = 1, s = 0.4649607, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n>n_max", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2) expected <- c(6.597173, 23.749824, 29.252215, 10.400788) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, details = TRUE) expected_details <- list( lambda = -79.26825, k = -0.5304648, v = c(-0.3146236, -0.9492165), s = c(0.1668968, 0.5035260), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=1", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 1) expected <- c(N[1], 21.58247, 28.34080, 10.07673) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1, details = TRUE) expected_details <- list( lambda = -74.23862, k = -0.5108699, v = c(-0.2968782, -0.9549153), s = c(0.1516662, 0.4878375), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=2", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 2) expected <- c(15.539703, N[2], 25.421530, 9.038766) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2, details = TRUE) expected_details <- list( lambda = -55.7011, k = -0.5882444, v = c(-0.6683053, -0.7438871), s = c(0.3931269, 0.4375874), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=3", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 3) expected <- c(6.122328, 22.040379, N[3], 26.837293) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 3, details = TRUE) expected_details <- list( lambda = 5.231608, k = -1.308454, v = c(-0.1183717, -0.9929694), s = c(0.154884, 1.299255), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=4", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 4) expected <- c(5.019114, 18.068809, 6.912078, N[4]) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 4, details = TRUE) expected_details <- list( lambda = 263.2758, k = -0.1740076, v = c(-0.7297074, -0.6837596), s = c(0.1269746, 0.1189794), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=1:2", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 1:2) expected <- c(N[1:2], 29.5082, 10.4918) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:2, details = TRUE) expected_details <- list( lambda = -80.625, k = 0.5079322, v = 1, s = 0.5079322, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=c(1,3)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3)) expected <- c(N[1], 19.87602, N[3], 25.12398) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3), details = TRUE) expected_details <- list( lambda = 6.315779, k = -1.224303, v = c(-0.1140848, -0.9934710), s = c(0.1396744, 1.2163096), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=c(1,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 4)) expected <- c(N[1], 14.477914, 5.522086, N[4]) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 4), details = TRUE) expected_details <- list( lambda = 386.1821, k = -0.1392343, v = c(-0.7307135, -0.6826843), s = c(0.10174041, 0.09505309), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=2:3", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 2:3) expected <- c(9.621571, N[2:3], 25.378429) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2:3, details = TRUE) expected_details <- list( lambda = 6.145512, k = -1.252507, v = c(-0.1943371, -0.9809348), s = c(0.2434086, 1.2286279), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=c(2,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 80 result <- dca(n, H_counts, N, S, rho, rho^2, c(2, 4)) expected <- c(7.644246, N[2], 12.355754, N[4]) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(2, 4), details = TRUE) expected_details <- list( lambda = 48.1521, k = -0.2874579, v = c(-0.6727449, -0.7398745), s = c(0.1933858, 0.2126828), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=3:4", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 80 result <- dca(n, H_counts, N, S, rho, rho^2, 3:4) expected <- c(5.434783, 19.565217, N[3:4]) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 3:4, details = TRUE) expected_details <- list( lambda = 153.75, k = 0.1374903, v = 1, s = 0.1374903, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=1:3", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 1:3) expected <- c(N[1:3], 24.9999999999999964) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:3, details = TRUE) expected_details <- list( lambda = 6.4, k = 1.210307, v = 1, s = 1.210307, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=2:4", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 80 result <- dca(n, H_counts, N, S, rho, rho^2, 2:4) expected <- c(5, N[2:4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2:4, details = TRUE) expected_details <- list( lambda = 156.25, k = 0.1264911, v = 1, s = 0.1264911, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=c(1,3,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 80 result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3, 4)) expected <- c(N[1], 14.9999999999999982, N[3:4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3, 4), details = TRUE) expected_details <- list( lambda = 337.5, k = 0.1054093, v = 1, s = 0.1054093, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n>n_max, U=c(1,2,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 80 result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 2, 4)) expected <- c(N[1:2], 10, N[4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 2, 4), details = TRUE) expected_details <- list( lambda = 112.5, k = 0.1721326, v = 1, s = 0.1721326, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) # 85 result <- dca(n, H_counts, N, S, rho, rho^2) expected <- c(6.851509, 24.665431, 39.454717, 14.028344) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, details = TRUE) expected_details <- list( lambda = -119.7109, k = -0.7009141, v = c(-0.2472928, -0.9689408), s = c(0.1733310, 0.6791443), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=1", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 1) expected <- c(N[1], 22.61987, 38.64108, 13.73905) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1, details = TRUE) expected_details <- list( lambda = -117.2694, k = -0.6838691, v = c(-0.2324367, -0.9726115), s = c(0.1589562, 0.6651389), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=2", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 2) expected <- c(22.95252, N[2], 31.01863, 11.02885) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2, details = TRUE) expected_details <- list( lambda = -88.17468, k = -0.7888262, v = c(-0.7361037, -0.6768688), s = c(0.5806579, 0.5339318), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=3", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 3) expected <- c(6.152022, 22.147281, N[3], 41.700697) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 3, details = TRUE) expected_details <- list( lambda = -0.435023, k = -2.024817, v = c(-0.07686387, -0.99704160), s = c(0.1556352, 2.0188263), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=4", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 4) expected <- c(6.244061, 22.478621, 16.277318, N[4]) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 4, details = TRUE) expected_details <- list( lambda = -17.65625, k = -0.3216466, v = c(-0.4911093, -0.8710979), s = c(0.1579636, 0.2801857), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=1:2", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 1:2) expected <- c(N[1:2], 40.57377, 14.42623) expect_equal(result, expected, tolerance = 10^-6) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:2, details = TRUE) expected_details <- list( lambda = -122.9091, k = 0.6984068, v = 1, s = 0.6984068, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=c(1,3)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3)) expected <- c(N[1], 20, N[3], 40) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3), details = TRUE) expected_details <- list( lambda = 4.440892e-16, k = -1.941585, v = c(-0.07238708, -0.99737661), s = c(0.1405457, 1.9364917), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=c(1,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 4)) expected <- c(N[1], 20, 15.0000000000000036, N[4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 4), details = TRUE) expected_details <- list( lambda = -1.421085e-14, k = -0.2939724, v = c(-0.4780914, -0.8783101), s = c(0.1405457, 0.2581989), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=2:3", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 2:3) expected <- c(9.9999999999999982, N[2:3], 40) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2:3, details = TRUE) expected_details <- list( lambda = 0, k = -1.952946, v = c(-0.1295387, -0.9915744), s = c(0.2529822, 1.9364917), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=c(2,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, c(2, 4)) expected <- c(9.9999999999999982, N[2], 15.0000000000000036, N[4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(2, 4), details = TRUE) expected_details <- list( lambda = -1.421085e-14, k = -0.3614784, v = c(-0.6998542, -0.7142857), s = c(0.2529822, 0.2581989), x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(2L, 2L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=3:4", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 3:4) expected <- c(6.521739, 23.478261, N[3:4]) expect_equal(result, expected, tolerance = 10^-7) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 3:4, details = TRUE) expected_details <- list( lambda = -66.66667, k = 0.1649884, v = 1, s = 0.1649884, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=1:3", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- 70 result <- dca(n, H_counts, N, S, rho, rho^2, 1:3) expected <- c(N[1:3], 24.9999999999999964) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 1:3, details = TRUE) expected_details <- list( lambda = 6.4, k = 1.210307, v = 1, s = 1.210307, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=2:4", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, 2:4) expected <- c(10, N[2:4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, 2:4, details = TRUE) expected_details <- list( lambda = -2.842171e-14, k = 0.2529822, v = 1, s = 0.2529822, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=c(1,3,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3, 4)) expected <- c(N[1], 20, N[3:4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 3, 4), details = TRUE) expected_details <- list( lambda = 0, k = 0.1405457, v = 1, s = 0.1405457, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) test_that("dca works for H_counts=c(2,2), n=sum(N), U=c(1,2,4)", { H_counts <- c(2, 2) N <- c(10, 20, 15, 40) S <- c(5, 9, 15, 2) rho <- c(2, 5) * sqrt(c(0.4, 0.6)) n <- sum(N) result <- dca(n, H_counts, N, S, rho, rho^2, c(1, 2, 4)) expected <- c(N[1:2], 15, N[4]) expect_identical(result, expected) # Check details. result_details <- dca(n, H_counts, N, S, rho, rho^2, c(1, 2, 4), details = TRUE) expected_details <- list( lambda = 2.842171e-14, k = 0.2581989, v = 1, s = 0.2581989, x = expected ) elements <- names(expected_details) expect_equal(result_details[elements], expected_details, tolerance = 10^-6) # Check details: D.matrix. expect_identical(dim(result_details$D.matrix), c(1L, 1L)) }) # pop9d278s ---- test_that("dca works for pop9d278s, nn_max", { p <- pop9d278s n <- 20000 result <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2) expect_snapshot(result) # Check details. result_details <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, details = TRUE) expect_snapshot(result_details) }) test_that("dca works for pop9d278s, n>n_max, U (domain blockage)", { p <- pop9d278s n <- 20000 U <- 209:238 result <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, U) expect_snapshot(result) # Check details. result_details <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, U, details = TRUE) expect_snapshot(result_details) }) test_that("dca works for pop9d278s, n=sum(N)", { p <- pop9d278s n <- sum(p$N) result <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2) expect_snapshot(result) # Check details. result_details <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, details = TRUE) expect_snapshot(result_details) }) test_that("dca works for pop9d278s, n=sum(N), U", { p <- pop9d278s n <- sum(p$N) U <- 1:13 result <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, U) expect_snapshot(result) # Check details. result_details <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, U, details = TRUE) expect_snapshot(result_details) }) test_that("dca works for pop9d278s, n=sum(N), U (domain blockage)", { p <- pop9d278s n <- sum(p$N) U <- 239:278 result <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, U) expect_snapshot(result) # Check details. result_details <- dca(n, p$H_counts, p$N, p$S, p$rho, p$rho2, U, details = TRUE) expect_snapshot(result_details) })