Nothing
test_that("Integers fit into integer sizes", {
INT_MAX <- 2147483647L
expect_equal(as.integer64(INT_MAX), as.integer64("2147483647"))
expect_gt(.TT_BASE[1], .TT_BASE[2])
})
test_that("as.phylo.numeric()", {
expect_true(all.equal(as.phylo(0:2, 6, letters[1:6])[[1]],
PectinateTree(letters[c(1, 3:6, 2)])))
expect_true(all.equal(as.phylo(0, tipLabels = letters[1:6]),
PectinateTree(letters[c(1, 3:6, 2)])))
expect_error(as.phylo(0))
expect_equal(as.phylo(123, nTip = 8),
as.phylo(123L, nTip = 8))
expect_equal(as.phylo(123, nTip = 8),
as.phylo(as.integer64(123), nTip = 8))
expect_equal(as.phylo(123:124, nTip = 10),
as.phylo(as.integer64(123:124), nTip = 10))
expect_equal(as.phylo(as.integer64(10), tipLabels = paste0("t", 1:8)),
as.phylo(10, 8))
})
test_that("as.TreeNumber() error handling", {
expect_error(as.phylo(integer64(1), NULL, NULL))
expect_error(as.TreeNumber(StarTree(5)))
expect_warning(as.TreeNumber(BalancedTree(20)))
})
test_that("as.TreeNumber()", {
expect_equal(SingleTaxonTree("t1"), as.phylo(integer64(1), 1, NULL))
expect_equal(c("Phylogenetic tree number 0 of 105 ",
" 6 tips: t1 t2 t3 t4 t5 t6"),
capture.output(print(as.TreeNumber(as.phylo(105, 6)))))
expect_equal("Phylogenetic tree number 105 of 6332659870762850625 ",
capture.output(print(as.TreeNumber(as.phylo(105, 19))))[1])
expect_warning(
expect_equal("Phylogenetic tree number 105 of 2.216431e+20 ",
capture.output(print(as.TreeNumber(as.phylo(105, 20))))[1])
)
expect_equal(unlist(lapply(1:3, as.integer64)),
unlist(as.TreeNumber(as.phylo(1:3, 6))))
tn6 <- as.TreeNumber(as.phylo(1, 6, letters[1:6]))
expect_equal(as.phylo(1, 6), as.phylo(tn6, tipLabels = NULL))
tn16 <- as.TreeNumber(as.phylo(1, 16, letters[1:16]))
expect_equal(as.phylo(1, 16), as.phylo(tn16, tipLabels = NULL))
expect_equal(as.TreeNumber(as.MixedBase(tn16)), as.TreeNumber(tn16))
expect_error(as.phylo(as.integer64(2) ^ 62, 16), "too large ")
bigNumber <- as.integer64(2) ^ 61 + 1
# Not necessarily equal to as.integer64(2 ^ 61 + 1), due to numeric conversion
tn16 <- as.TreeNumber(as.phylo(bigNumber, 16, letters[1:16]))
expect_equal(as.phylo(bigNumber, 16), as.phylo(tn16, tipLabels = NULL))
# Rounding:
expect_identical(as.integer64(as.TreeNumber(as.phylo(bigNumber, 16))) - 1,
as.integer64(as.TreeNumber(as.phylo(bigNumber - 1, 16))))
expect_equal(as.TreeNumber(as.MixedBase(tn16)), tn16)
})
test_that("as.MixedBase()", {
expect_error(as.MixedBase(RandomTree(100000)),
"Too many \\w+ for mixed base")
expect_equal(as.integer(as.TreeNumber(as.phylo(16, 16))), 16)
nTip <- 9
expect_equal(as.integer(as.MixedBase(as.TreeNumber(as.phylo(16, nTip)))),
c(rep(0, nTip - 3 - 3), 1, 0, 1))
expect_equal(as.MixedBase(as.phylo(0, 6)),
structure(integer(3),
nTip = 6,
tip.label = paste0("t", 1:6),
binary = TRUE,
class = "MixedBase"))
expect_equal(as.MixedBase(as.phylo(105, 20)),
structure(tabulate(17 - 3, 17),
nTip = 20,
tip.label = paste0("t", 1:20),
binary = TRUE,
class = "MixedBase"))
expect_equal(unlist(lapply(1:3, function(n) as.MixedBase(as.phylo(n, 6)))),
unlist(as.MixedBase(as.phylo(1:3, 6))))
mb3 <- as.MixedBase(as.phylo(1, 3, letters[1:3]))
expect_equal(as.phylo(1, 3), as.phylo(mb3, tipLabels = NULL))
mb6 <- as.MixedBase(as.phylo(1, 6, letters[1:6]))
expect_equal(as.phylo(1, 6), as.phylo(mb6, tipLabels = NULL))
mb16 <- as.TreeNumber(as.phylo(1337, 16, letters[1:16]))
expect_equal(as.phylo(1337, 16), as.phylo(mb16, tipLabels = NULL))
expect_error(as.MixedBase(42, TipLabels(2)))
expect_true(as.MixedBase(as.phylo(1337, 16)) == as.MixedBase(1337, 16))
expect_true(as.MixedBase(44) > as.MixedBase(as.MixedBase(42)))
expect_true(as.MixedBase(44, 10) < as.MixedBase(42, 11))
bigNo <- as.integer64(2) ^ 62 + 1337
expect_equal(sum(as.integer(as.MixedBase(bigNo)) * .TT_BASE), bigNo)
})
test_that("as.MixedBase() supports larger trees", {
expect_equal(tail(as.MixedBase(BalancedTree(100))),
c(6, 10, 8, 3, 4, 1) # From observation, not calculation
)
})
test_that("is.TreeNumber()", {
expect_equal(is.TreeNumber(as.integer64(5)), FALSE)
expect_equal(is.TreeNumber(as.TreeNumber(BalancedTree(5))), TRUE)
})
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.