# Function ---- test_that("dca0 is valid function", { expect_function( dca0, args = c("n", "H_counts", "N", "S", "rho", "rho2", "details") ) }) # H_counts = 1 ---- test_that("dca0 works for H_counts=c(1), nn_max", { H_counts <- 2 N <- c(10, 20) S <- c(5, 9) rho <- 8 n <- 29 result <- dca0(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 <- dca0(n, H_counts, N, S, rho, rho^2, 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("dca0 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 <- dca0(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 <- dca0(n, H_counts, N, S, rho, rho^2, 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)) }) # H_counts = c(1,1) ---- test_that("dca0 works for H_counts=c(1,1), nn_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 <- dca0(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 <- dca0(n, H_counts, N, S, rho, rho^2, 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("dca0 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 <- dca0(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 <- dca0(n, H_counts, N, S, rho, rho^2, 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)) }) # H_counts = c(2,2) ---- test_that("dca0 works for H_counts=c(2,2), nn_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 <- dca0(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 <- dca0(n, H_counts, N, S, rho, rho^2, 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("dca0 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 <- dca0(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 <- dca0(n, H_counts, N, S, rho, rho^2, 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)) }) # pop9d278s ---- test_that("dca0 works for pop9d278s, nn_max", { H_counts <- pop9d278s$H_counts N <- pop9d278s$N S <- pop9d278s$S rho <- pop9d278s$rho n <- 20000 result <- dca0(n, H_counts, N, S, rho, rho^2) expect_snapshot(result) # Check details. result_details <- dca0(n, H_counts, N, S, rho, rho^2, TRUE) expect_snapshot(result_details) }) test_that("dca0 works for pop9d278s, n=sum(N)", { H_counts <- pop9d278s$H_counts N <- pop9d278s$N S <- pop9d278s$S rho <- pop9d278s$rho n <- sum(N) result <- dca0(n, H_counts, N, S, rho, rho^2) expect_snapshot(result) # Check details. result_details <- dca0(n, H_counts, N, S, rho, rho^2, TRUE) expect_snapshot(result_details) })