tests/testthat/test-CompadreDB-Subsetting.R

test_that("CompadreDB-Subsetting works correctly", {
  # [
  sub1 <- Compadre[1:5, ]
  expect_s4_class(sub1, "CompadreDB")
  expect_identical(nrow(sub1@data), 5L)
  expect_identical(ncol(sub1@data), ncol(Compadre@data))

  sub2 <- Compadre[1:5, 1:5]
  expect_identical(nrow(sub2@data), 5L)
  expect_identical(ncol(sub2@data), 5L)

  sub3 <- Compadre[, 1:10]
  expect_identical(ncol(sub3@data), 10L)

  sub4 <- Compadre[, -10]
  expect_identical(ncol(sub4@data), as.integer(ncol(Compadre@data) - 1))

  sub5 <- suppressWarnings(Compadre[, -(1:2)])
  expect_identical(ncol(sub5@data), as.integer(ncol(Compadre@data) - 1))

  sub6 <- Compadre[, c("mat", "SpeciesAuthor")]
  expect_identical(ncol(sub6@data), 2L)

  sub7 <- Compadre[, names(Compadre) %in% c("mat", "SpeciesAuthor")]
  expect_identical(ncol(sub7@data), 2L)

  sub1 <- subset(Compadre, SpeciesAccepted == "Lechea cernua")
  n1 <- length(which(Compadre@data$SpeciesAccepted == "Lechea cernua"))
  expect_s4_class(sub1, "CompadreDB")
  expect_identical(nrow(sub1@data), n1)

  sub2 <- subset(Compadre, select = c("mat", "SpeciesAccepted"))
  expect_identical(ncol(sub2@data), 2L)

  sub3 <- subset(Compadre, MatrixDimension == 4, select = 1:5)
  n3 <- length(which(Compadre@data$MatrixDimension == 4))
  expect_identical(nrow(sub3@data), n3)
  expect_identical(ncol(sub3@data), 5L)
})


test_that("CompadreDB-Subsetting warns and fails gracefully", {
  expect_warning(Compadre[, -1])
  expect_warning(Compadre[, "SpeciesAccepted"])
  expect_warning(Compadre[, names(Compadre) != "mat"])
  expect_error(Compadre[, expression(-1)])

  expect_error(subset(Compadre, 1:5))
  expect_warning(subset(Compadre, select = 5:10))
})
jonesor/Rcompadre documentation built on Jan. 16, 2024, 12:48 a.m.