tests/testthat/test-dimnames.r

context("dimnames")

dn = list(c('a','b'),c('x','y'))
a = setNames(1:2, dn[[1]])
A = matrix(1:4, nrow=2, ncol=2, dimnames=dn)
DF = structure(list(y=3:4, z=c(6,5), x=1:2, A=c("b", "a")),
        .Names=c("y","z","x","A"), row.names=1:2, class="data.frame")
ll = list(a=a, A=A, DF=DF)

test_that("vector and dropping rules", {
    expect_equal(dimnames(a), dimnames(a, drop=FALSE))
    expect_equal(dimnames(a), dn[1])
    expect_equal(dimnames(a, drop=TRUE), dn[[1]])
    expect_equal(dimnames(a, along=1), dn[[1]])
    expect_equal(dimnames(a, along=1, drop=FALSE), dn[1])
})

test_that("ignore along for vector, not array", {
    expect_equal(dimnames(a, along=2), dn[[1]])
    expect_error(dimnames(as.array(a), along=2))
})

test_that("matrix", {
    expect_equal(dimnames(A), dn)
    expect_equal(dimnames(A, along=2), dn[[2]])
    expect_error(dimnames(A, along=3))
})

test_that("data.frame", {
    expect_equal(dimnames(DF, along=1), as.character(1:2))
})

test_that("list", {
    dnl = dimnames(ll)
    expect_equal(dnl$a, dn[1])
    expect_equal(dnl$A, dn)
    dnl1 = dimnames(ll, along=1)
    expect_equal(dnl1$a, dnl1$A, dn[[1]])
})

test_that("zero-length", {
    expect_equal(dimnames(c()), list(NULL)) #TODO: this should give integer()
    expect_equal(dimnames(c(), null_as_integer=TRUE), list(integer()))

    expect_null(dimnames(c(), drop=TRUE))
    expect_equal(dimnames(c(), null_as_integer=TRUE, drop=TRUE), integer())
})
mschubert/arraytools documentation built on Jan. 12, 2023, 8:21 a.m.