Nothing
# ==================================================================================================
# setup
# ==================================================================================================
## Original objects in env
ols <- ls()
# ==================================================================================================
# pdc_configs
# ==================================================================================================
test_that("Using pdc_configs() works as expected.", {
expect_warning(pdc_configs("d", tadpole = list(a = "a")))
share_base <- c("partitional", "hierarchical", "fuzzy", "tadpole")
pdc_p <- list(pp = list(p1 = 1L))
pdc_h <- list(ph = list(h1 = 1L, h2 = 1L:2L))
pdc_f <- list(pf = list(f1 = "a", f2 = c(FALSE, TRUE), f3 = 1:3))
pdc_t <- list(pt = list(t2 = c("x", "y")))
pdc_nrows <- c(
partitional = 2L,
hierarchical = 3L,
fuzzy = 7L,
tadpole = 3L
)
pdc_args <- list(
# shared
none = list(),
# specific
partitional = pdc_p,
hierarchical = pdc_h,
fuzzy = pdc_f,
tadpole = pdc_t
)
nrows_is_correct <- times(100L) %do% {
this_args <- sample(pdc_args)[1L:sample(length(pdc_args), 1L)]
this_share <- sample(share_base)[1L:sample(length(share_base), 1L)]
type <- sample(c("preproc", "distance", "centroid"), 1L)
if (type == "distance") {
this_args$tadpole <- NULL
this_share <- this_share[setdiff(names(this_share), "tadpole")]
}
if (length(this_args) == 0L || length(this_share) == 0L)
return(TRUE)
this_cfg <- do.call(pdc_configs, c(
this_args,
list(
type = type,
share.config = this_share
)))
decrease <- c(
partitional = 0L,
hierarchical = 0L,
fuzzy = 0L,
tadpole = 0L
)
if (is.null(this_args$none)) {
decrease <- decrease + 1L
} else {
must_decrease <- setdiff(share_base, this_share)
decrease[must_decrease] <- decrease[must_decrease] + 1L
}
must_decrease <- sapply(this_args[names(decrease)], is.null)
decrease[must_decrease] <- decrease[must_decrease] + pdc_nrows[must_decrease] - 1L
expected_nrows <- pdc_nrows - decrease
all(expected_nrows[names(this_cfg)] == sapply(this_cfg, nrow))
}
expect_true(all(nrows_is_correct))
})
# ==================================================================================================
# compare_clusterings_configs
# ==================================================================================================
test_that("Using compare_clusterings_configs() works as expected.", {
## ---------------------------------------------------------- controls errors
expect_error(compare_clusterings_configs(controls = "a"),
"controls.*list")
expect_error(compare_clusterings_configs(controls = list(partitional_control())),
"controls.*name")
expect_error(compare_clusterings_configs(controls = list(partitional = partitional_control())),
"controls.*types")
## ---------------------------------------------------------- preprocs errors
expect_error(compare_clusterings_configs(preprocs = "a"),
"preprocs.*list")
expect_error(compare_clusterings_configs(preprocs = list(pdc_configs())),
"preprocs.*name")
expect_error(compare_clusterings_configs(preprocs = list(partitional = pdc_configs())),
"preprocs.*types")
## ---------------------------------------------------------- distances errors
expect_error(compare_clusterings_configs(distances = "a"),
"distances.*list")
expect_error(compare_clusterings_configs(distances = list(pdc_configs())),
"distances.*name")
expect_error(compare_clusterings_configs(distances = list(partitional = pdc_configs())),
"distances.*types")
## ---------------------------------------------------------- centroids errors
expect_error(compare_clusterings_configs(centroids = "a"),
"centroids.*list")
expect_error(compare_clusterings_configs(centroids = list(pdc_configs())),
"centroids.*name")
expect_error(compare_clusterings_configs(centroids = list(partitional = pdc_configs())),
"centroids.*types")
## ---------------------------------------------------------- working configs
nrows_each_config <- sapply(compare_clusterings_configs(), nrow)
expect_true(all(nrows_each_config == 1L))
nrows_each_custom_config <- sapply(FUN = nrow, X = compare_clusterings_configs(
types = c("p", "h", "f", "t"),
controls = list(
partitional = partitional_control(),
hierarchical = hierarchical_control(),
fuzzy = fuzzy_control(),
tadpole = tadpole_control(dc = 1.5, window.size = 1L)
),
preprocs = pdc_configs("p", none = list(foo = "bar")),
distances = pdc_configs("d", sbd = list(foo = "bar")),
centroids = pdc_configs("c", default = list(foo = "bar"))
))
expect_true(all(nrows_each_custom_config == 1L))
# no.expand
cfg <- compare_clusterings_configs(
types = "p",
preprocs = pdc_configs("p", pre = list(window.size = 1L:2L)),
distances = pdc_configs("d", dtw_basic = list(window.size = 1L:2L)),
centroids = pdc_configs("c", dba = list(window.size = 1L:2L)),
no.expand = c("window.size")
)
expect_identical(
cfg$partitional$window.size_preproc,
cfg$partitional$window.size_distance
)
expect_identical(
cfg$partitional$window.size_distance,
cfg$partitional$window.size_centroid
)
cfg_tp <- compare_clusterings_configs(
types = "t",
controls = list(
tadpole = tadpole_control(1.5, 1L:2L)
),
centroids = pdc_configs("c", dba = list(window.size = 1L:2L)),
no.expand = c("window.size")
)
expect_identical(
cfg_tp$tadpole$window.size,
cfg_tp$tadpole$window.size_centroid
)
})
# ==================================================================================================
# clean
# ==================================================================================================
rm(list = setdiff(ls(), ols))
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.