x <- array(1:12, c(2, 2, 3), dimnames = list(letters[1:2], LETTERS[1:2], NULL)) test_that("array_branch creates a flat list when no margin specified", { expect_length(array_branch(x), 12) }) test_that("array_branch wraps array in list when margin has length 0", { expect_identical(array_branch(x, numeric(0)), list(x)) }) test_that("array_branch works on vectors", { expect_identical(array_branch(1:3), list(1L, 2L, 3L)) expect_identical(array_branch(1:3, 1), list(1L, 2L, 3L)) }) test_that("array_branch throws an error for wrong margins on a vector", { expect_snapshot(array_branch(1:3, 2), error = TRUE) }) test_that("length depends on whether list is flattened or not", { m1 <- c(3, 1) m2 <- 3 expect_length(array_branch(x, m1), prod(dim(x)[m1])) expect_length(array_tree(x, m1), prod(dim(x)[m2])) }) test_that("array_branch retains dimnames when going over one dimension", { expect_identical(names(array_branch(x, 1)), letters[1:2]) expect_identical(names(array_branch(x, 2)), LETTERS[1:2]) expect_identical(names(array_branch(x, 2:3)[[1]]), letters[1:2]) })