Nothing
context("Compositions")
test_that("Integer compositions - ncompositions", {
expect_equal(ncompositions(10), 512)
expect_equal(ncompositions(30), 536870912)
expect_error(ncompositions(50), "integer overflow")
expect_equal(ncompositions(10, bigz = TRUE), 512)
expect_equal(ncompositions(30, bigz = TRUE), 536870912)
expect_equal(ncompositions(50, bigz = TRUE), gmp::as.bigz("562949953421312"))
expect_equal(ncompositions(0), 1)
expect_error(ncompositions(-1), "expect integer")
expect_error(ncompositions(1.5), "expect integer")
})
test_that("Integer compositions - ascending compositions", {
comp <- compositions(7)
expect_equal(nrow(comp), 64)
expect_equal(ncol(comp), 7)
expect_equal(comp[1, ], rep(1, 7))
expect_equal(comp[2, ], c(rep(1, 5), 2, 0))
expect_equal(comp[64, ], c(7, rep(0, 6)))
expect_true(all(apply(comp, 1, sum) == 7))
comp <- compositions(7, layout = "row")
expect_equal(nrow(comp), 64)
expect_equal(ncol(comp), 7)
expect_equal(comp[1, ], rep(1, 7))
expect_equal(comp[2, ], c(rep(1, 5), 2, 0))
expect_equal(comp[64, ], c(7, rep(0, 6)))
expect_true(all(apply(comp, 1, sum) == 7))
comp <- compositions(7, layout = "column")
expect_equal(nrow(comp), 7)
expect_equal(ncol(comp), 64)
expect_equal(comp[, 1], rep(1, 7))
expect_equal(comp[, 2], c(rep(1, 5), 2, 0))
expect_equal(comp[, 64], c(7, rep(0, 6)))
expect_true(all(apply(comp, 2, sum) == 7))
comp <- compositions(7, layout = "list")
expect_equal(length(comp), 64)
expect_equal(comp[[1]], rep(1, 7))
expect_equal(comp[[2]], c(rep(1, 5), 2))
expect_equal(comp[[64]], 7)
expect_true(all(sapply(comp, sum) == 7))
expect_error(compositions(150), "too many results")
expect_error(compositions(-1), "expect integer")
expect_error(compositions(1.5), "expect integer")
})
test_that("Integer compositions - descending compositions", {
comp <- compositions(7, descending = TRUE)
expect_equal(nrow(comp), 64)
expect_equal(ncol(comp), 7)
expect_equal(comp[1, ], c(7, rep(0, 6)))
expect_equal(comp[63, ], c(rep(1, 5), 2, 0))
expect_equal(comp[64, ], rep(1, 7))
expect_true(all(apply(comp, 1, sum) == 7))
comp <- compositions(7, descending = TRUE, layout = "row")
expect_equal(nrow(comp), 64)
expect_equal(ncol(comp), 7)
expect_equal(comp[1, ], c(7, rep(0, 6)))
expect_equal(comp[63, ], c(rep(1, 5), 2, 0))
expect_equal(comp[64, ], rep(1, 7))
expect_true(all(apply(comp, 1, sum) == 7))
comp <- compositions(7, descending = TRUE, layout = "column")
expect_equal(nrow(comp), 7)
expect_equal(ncol(comp), 64)
expect_equal(comp[, 1], c(7, rep(0, 6)))
expect_equal(comp[, 63], c(rep(1, 5), 2, 0))
expect_equal(comp[, 64], rep(1, 7))
expect_true(all(apply(comp, 2, sum) == 7))
comp <- compositions(7, descending = TRUE, layout = "list")
expect_equal(length(comp), 64)
expect_equal(comp[[1]], 7)
expect_equal(comp[[63]], c(rep(1, 5), 2))
expect_equal(comp[[64]], rep(1, 7))
expect_true(all(sapply(comp, sum) == 7))
expect_error(compositions(150, descending = TRUE), "too many results")
expect_error(compositions(-1, descending = TRUE), "expect integer")
expect_error(compositions(1.5, descending = TRUE), "expect integer")
})
test_that("Integer compositions - ascending icompositions", {
comp <- compositions(7)
icomp <- icompositions(7)
expect_is(icomp, "Compositions")
expect_equal(icomp$collect(), comp)
expect_equal(icomp$getnext(), comp[1, ])
expect_equal(icomp$getnext(), comp[2, ])
expect_equal(icomp$getnext(2), comp[3:4, ])
icomp$getnext(40)
expect_equal(nrow(icomp$getnext(40)), 20)
expect_equal(icomp$getnext(), NULL)
comp <- compositions(7, layout = "row")
icomp$reset()
expect_is(icomp, "Compositions")
expect_equal(icomp$collect(), comp)
expect_equal(icomp$getnext(layout = "row"), comp[1, , drop = FALSE])
expect_equal(icomp$getnext(layout = "row"), comp[2, , drop = FALSE])
expect_equal(icomp$getnext(2, layout = "row"), comp[3:4, ])
icomp$getnext(40, layout = "row")
expect_equal(nrow(icomp$getnext(40, layout = "row")), 20)
expect_equal(icomp$getnext(layout = "column"), NULL)
comp <- compositions(7, layout = "column")
icomp$reset()
expect_equal(icomp$collect(layout = "column"), comp)
expect_equal(icomp$getnext(layout = "column"), comp[, 1, drop = FALSE])
expect_equal(icomp$getnext(layout = "column"), comp[, 2, drop = FALSE])
expect_equal(icomp$getnext(2, layout = "column"), comp[, 3:4])
icomp$getnext(40, layout = "column")
expect_equal(ncol(icomp$getnext(40, layout = "column")), 20)
expect_equal(icomp$getnext(layout = "column"), NULL)
comp <- compositions(7, layout = "list")
icomp$reset()
expect_equal(icomp$collect(layout = "list"), comp)
expect_equal(icomp$getnext(layout = "list"), comp[1])
expect_equal(icomp$getnext(layout = "list"), comp[2])
expect_equal(icomp$getnext(2, layout = "list"), comp[3:4])
icomp$getnext(40, layout = "list")
expect_equal(length(icomp$getnext(40, layout = "list")), 20)
expect_equal(icomp$getnext(layout = "list"), NULL)
expect_error(icompositions(-1), "expect integer")
expect_error(icompositions(1.5), "expect integer")
})
test_that("Integer compositions - descending icompositions", {
comp <- compositions(7, descending = TRUE)
icomp <- icompositions(7, descending = TRUE)
expect_is(icomp, "Compositions")
expect_equal(icomp$collect(), comp)
expect_equal(icomp$getnext(), comp[1, ])
expect_equal(icomp$getnext(), comp[2, ])
expect_equal(icomp$getnext(2), comp[3:4, ])
icomp$getnext(40)
expect_equal(nrow(icomp$getnext(40)), 20)
expect_equal(icomp$getnext(), NULL)
comp <- compositions(7, descending = TRUE, layout = "row")
icomp$reset()
expect_equal(icomp$collect(layout = "row"), comp)
expect_equal(icomp$getnext(layout = "row"), comp[1, , drop = FALSE])
expect_equal(icomp$getnext(layout = "row"), comp[2, , drop = FALSE])
expect_equal(icomp$getnext(2, layout = "row"), comp[3:4, ])
icomp$getnext(40, layout = "row")
expect_equal(nrow(icomp$getnext(40, layout = "row")), 20)
expect_equal(icomp$getnext(layout = "row"), NULL)
comp <- compositions(7, descending = TRUE, layout = "column")
icomp$reset()
expect_equal(icomp$collect(layout = "column"), comp)
expect_equal(icomp$getnext(layout = "column"), comp[, 1, drop = FALSE])
expect_equal(icomp$getnext(layout = "column"), comp[, 2, drop = FALSE])
expect_equal(icomp$getnext(2, layout = "column"), comp[, 3:4])
icomp$getnext(40, layout = "column")
expect_equal(ncol(icomp$getnext(40, layout = "column")), 20)
expect_equal(icomp$getnext(layout = "column"), NULL)
comp <- compositions(7, descending = TRUE, layout = "list")
icomp$reset()
expect_equal(icomp$collect(layout = "list"), comp)
expect_equal(icomp$getnext(layout = "list"), comp[1])
expect_equal(icomp$getnext(layout = "list"), comp[2])
expect_equal(icomp$getnext(2, layout = "list"), comp[3:4])
icomp$getnext(40, layout = "list")
expect_equal(length(icomp$getnext(40, layout = "list")), 20)
expect_equal(icomp$getnext(layout = "list"), NULL)
expect_error(icompositions(-1, descending = TRUE), "expect integer")
expect_error(icompositions(1.5, descending = TRUE), "expect integer")
})
test_that("Integer compositions - index", {
comp <- compositions(7)
expect_equal(compositions(7, index = 1:64), comp)
expect_equal(compositions(7, index = as.numeric(1:64)), comp)
expect_equal(compositions(7, index = as.character(1:64)), comp)
expect_equal(compositions(7, index = gmp::as.bigz(1:64)), comp)
expect_equal(compositions(7, index = 2), c(rep(1, 5), 2, 0))
expect_equal(compositions(7, index = 64), c(7, rep(0, 6)))
expect_equal(compositions(50, index = 2), c(rep(1, 48), 2, 0))
expect_equal(compositions(50, index = "562949953421312"), c(50, rep(0, 49)))
expect_equal(compositions(0, index = 1), integer(0))
comp <- compositions(7, descending = TRUE)
expect_equal(compositions(7, descending = TRUE, index = 1:64), comp)
expect_equal(compositions(7, descending = TRUE, index = as.numeric(1:64)), comp)
expect_equal(compositions(7, descending = TRUE, index = as.character(1:64)), comp)
expect_equal(compositions(7, descending = TRUE, index = gmp::as.bigz(1:64)), comp)
expect_equal(compositions(7, descending = TRUE, index = 2), c(6, 1, rep(0, 5)))
expect_equal(compositions(7, descending = TRUE, index = 64), rep(1, 7))
expect_equal(compositions(50, descending = TRUE, index = 2), c(49, 1, rep(0, 48)))
expect_equal(compositions(50, descending = TRUE, index = "562949953421312"), rep(1, 50))
expect_equal(compositions(0, descending = TRUE, index = 1), integer(0))
})
test_that("Integer compositions - skip", {
expect_equal(compositions(7, skip = 64), compositions(7))
expect_equal(compositions(7, skip = 3), compositions(7)[4:64, ])
expect_equal(compositions(7, skip = 3, nitem = 4), compositions(7)[4:7, ])
expect_equal(compositions(7, skip = gmp::as.bigz(3), nitem = 4), compositions(7)[4:7, ])
expect_equal(compositions(7, descending = TRUE, skip = 64), compositions(7, descending = TRUE))
expect_equal(compositions(7, descending = TRUE, skip = 3), compositions(7, descending = TRUE)[4:64, ])
expect_equal(compositions(7, descending = TRUE, skip = 3, nitem = 4), compositions(7, descending = TRUE)[4:7, ])
expect_equal(compositions(7, descending = TRUE, skip = gmp::as.bigz(3), nitem = 4), compositions(7, descending = TRUE)[4:7, ])
})
test_that("Integer compositions - small cases", {
expect_equal(compositions(0), matrix(0, nr = 1, nc = 0))
expect_equal(compositions(0, 0), matrix(0, nr = 1, nc = 0))
expect_equal(compositions(0, 1), matrix(0, nr = 0, nc = 1))
expect_equal(compositions(1), matrix(1, nr = 1, nc = 1))
expect_equal(compositions(1, 0), matrix(1, nr = 0, nc = 0))
icomp <- icompositions(0)
expect_equal(icomp$getnext(), integer(0))
expect_equal(icomp$getnext(), NULL)
icomp <- icompositions(0, 0)
expect_equal(icomp$getnext(), integer(0))
expect_equal(icomp$getnext(), NULL)
icomp <- icompositions(0, 1)
expect_equal(icomp$getnext(), NULL)
expect_equal(icomp$getnext(), NULL)
icomp <- icompositions(1)
expect_equal(icomp$getnext(), 1)
expect_equal(icomp$getnext(), NULL)
icomp <- icompositions(1, 0)
expect_equal(icomp$getnext(), NULL)
expect_equal(icomp$getnext(), NULL)
})
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.