Nothing
# library(testthat)
# library(dendextend)
context("Tanglegram")
test_that("plot_horiz.dendrogram works", {
suppressWarnings(RNGversion("3.5.0"))
set.seed(1)
hc <- USArrests[1:10, ] %>%
dist() %>%
hclust()
dend <- as.dendrogram(hc)
# covers cases where side = F
expect_no_error(
plot_horiz.dendrogram(dend, side = F)
)
# if horiz = F, should raise error
expect_error(
plot_horiz.dendrogram(dend, horiz = F)
)
# hclust object will be converted to dend, should work fine
expect_no_error(
plot_horiz.dendrogram(hc, side = T, edge.root = T, center = T)
)
# covers cases where text_pos is used but dleaf is not
attr(dend, "edgetext") <- "t"
capture.output(expect_no_error(
plot_horiz.dendrogram(dend, side = T, edge.root = T, horiz = T, text_pos = 1)
))
# covers cases where text_pos and dleaf used
attr(dend, "edgetext") <- "t"
capture.output(expect_no_error(
plot_horiz.dendrogram(dend, side = T, edge.root = T, horiz = T, text_pos = 1, dLeaf = 1)
))
# if a leaf is passed in
expect_no_error(
plot_horiz.dendrogram(dend[[1]], side = T, edge.root = T)
)
# create custom horiz class to bypass horiz = T requirement while still accessing lines that require horiz = F
horiz_trick <<- structure(FALSE, class = "horiz_trick")
`!.horiz_trick` <<- function(x) FALSE
capture.output(expect_no_error(
plot_horiz.dendrogram(dend, side = T, edge.root = T, horiz = horiz_trick)
))
})
options(verbose = TRUE)
test_that("plotNode_horiz verbose works", {
hc <- USArrests[1:10, ] %>%
dist() %>%
hclust()
dend <- as.dendrogram(hc)
attr(dend[[1]], "edgetext") <- "t"
# general case which covers most lines
capture.output(expect_no_error(
plotNode_horiz(1, 1, dend, center = T, nodePar = NULL, leaflab = "perpendicular")
))
# specific cases to cover all lines
capture.output(expect_no_error(
plotNode_horiz(0.5, 1, dend, center = T, nodePar = 1, horiz = F, leaflab = "perpendicular", edgePar = list(), type = "rectangle", dLeaf = NULL)
))
capture.output(expect_no_error(
plotNode_horiz(0.5, 1, dend, center = T, nodePar = 1, leaflab = "textlike", edgePar = list(), type = "rectangle", dLeaf = NULL)
))
# with type triangle
capture.output(expect_no_error(
plotNode_horiz(0.5, 1, dend, center = T, nodePar = 1, leaflab = "textlike", horiz = T, edgePar = list(), type = "triangle", dLeaf = NULL)
))
capture.output(expect_no_error(
plotNode_horiz(0.5, 1, dend, center = T, nodePar = 1, horiz = F, leaflab = "perpendicular", edgePar = list(), type = "triangle", dLeaf = NULL)
))
# if a leaf is passed in
leaf <- dend[[1]]
attr(leaf, "label") <- 1
capture.output(expect_no_error(
plotNode_horiz(0.5, 1, leaf, center = T, nodePar = 1, leaflab = "perpendicular", horiz = T, edgePar = list(), type = "triangle", dLeaf = NULL)
))
# if ybot is null
attr(dend[[1]], "height") <- NULL
capture.output(expect_no_error(
plotNode_horiz(0.5, 1, dend, center = T, nodePar = 1, leaflab = "textlike", horiz = T, edgePar = list(), type = "triangle", dLeaf = NULL)
))
})
options(verbose = FALSE)
test_that("tanglegram works", {
suppressWarnings(RNGversion("3.5.0"))
set.seed(23235)
ss <- sample(1:150, 10)
dend1 <- iris[ss, -5] %>%
dist() %>%
hclust("com") %>%
as.dendrogram()
dend2 <- iris[ss, -5] %>%
dist() %>%
hclust("sin") %>%
as.dendrogram()
dend12 <- dendlist(dend1, dend2)
expect_no_error(
tanglegram(dend12, common_subtrees_color_branches = TRUE)
)
# if non-dendrogram objects are passed in
expect_no_error(
tanglegram.hclust(as.hclust(dend1), as.hclust(dend2))
)
expect_no_error(
tanglegram.phylo(ape::as.phylo(dend1), ape::as.phylo(dend2))
)
expect_error(
tanglegram.default(1:4, 4:1)
)
# temporarily overwrite par() function to access error that is otherwise inaccessible
expect_error(with_mock(
par = function(mar = 0) c(1,1),
tanglegram.dendlist(dend12, just_one = F)
))
# if only 1 dendrogram is passed in
expect_error(
tanglegram.dendlist(dend12[1])
)
# if trying to plot trees that are not in the dendlist
expect_error(
tanglegram.dendlist(dend12, which = c(1,2,3))
)
# if dendrograms with names are passed in
names(dend12) <- c("dendrogram1", "dendrogram2")
expect_no_error(
tanglegram.dendlist(dend12)
)
# cover additional parameters
expect_no_error(
tanglegram.dendrogram(dend1, dend2, faster = T, remove_nodePar = T, sort = T, rank_branches = T, hang = T,
lab.cex = 1, edge.lwd = 2, k_labels = 2, k_branches = 2)
)
expect_no_error(
tanglegram.dendrogram(dend1, dend2, highlight_branches_col = T)
)
expect_no_error(
tanglegram.dendrogram(dend1, dend2, dLeaf = 3)
)
})
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.