tests/testthat/test-as_tibble.R

context("as_tibble.tt_lst")

test_that("as_tibble.tt_lst outputs the expected dataframe", {
  tt_lst <- tt_test(fgeo.x::tree6_3species, fgeo.x::habitat)

  result <- as_tibble(tt_lst)
  expect_is(result, c("tt_df"))

  metrics <-
    c("N.Hab", "Gr.Hab", "Ls.Hab", "Eq.Hab", "Rep.Agg.Neut", "Obs.Quantile")
  expect_true(all(c("habitat", "sp", metrics) %in% names(result)))

  expect_true(all(vapply(result[metrics], is.numeric, logical(1))))
})



context("as.data.frame.tt_lst")

test_that("as.data.frame.tt_lst outputs the expected dataframe", {
  tt_lst <- tt_test(fgeo.x::tree6_3species, fgeo.x::habitat)

  expect_equal(
    class(as.data.frame(tt_lst)),
    "data.frame"
  )
})

test_that("as.data.frame.tt_lst takes arguments via `...`", {
  tt_lst <- tt_test(fgeo.x::tree6_3species, fgeo.x::habitat)
  expect_is(as.data.frame(tt_lst, stringsAsFactors = TRUE)[["sp"]], "factor")

  expect_is(
    as.data.frame(tt_lst, stringsAsFactors = FALSE)[["sp"]],
    "character"
  )
})



context("as_tibble.demography_ctfs")

census1 <- fgeo.x::tree5
census2 <- fgeo.x::tree6

test_that("With no split, or `split1`, outputs consistent dataframe", {
  nms <- c("N2", "R", "rate", "lower", "upper", "time", "date1", "date2")
  census1 <- fgeo.x::tree5
  census2 <- fgeo.x::tree6

  .x <- recruitment_ctfs(census1, census2)
  expect_is(as_tibble(.x), "data.frame")
  expect_named(as_tibble(.x), nms)

  by <- census1$sp
  .x <- recruitment_ctfs(census1, census2, split1 = by)
  expect_is(as_tibble(.x), "data.frame")
  expect_named(as_tibble(.x), c("groups", nms))
  # Same
  by <- interaction(census1$sp)
  .x <- recruitment_ctfs(census1, census2, split1 = by)
  expect_is(as_tibble(.x), "data.frame")
  expect_named(as_tibble(.x), c("groups", nms))

  by <- interaction(census1$sp, census1$quadrat)
  .x <- recruitment_ctfs(census1, census2, split1 = by)
  expect_is(as_tibble(.x), "data.frame")
  expect_named(as_tibble(.x), c("groups", nms))
})

test_that("as_tibble.demography_ctfs outputs different than unclassed result", {
  census1 <- fgeo.x::tree5
  census2 <- fgeo.x::tree6
  result <- recruitment_ctfs(census1, census2, split1 = census1$sp)

  expect_false(
    isTRUE(all.equal(
      as_tibble(result),
      as_tibble(unclass(result))
    ))
  )
})

test_that("as_tibble.demography_ctfs can't handle split2", {
  census1 <- fgeo.x::tree5
  census2 <- fgeo.x::tree6

  expect_warning(
    result <- recruitment_ctfs(
      census1,
      census2,
      split1 = census1$sp,
      split2 = census1$quadrat
    ),
    "`split2` is deprecated"
  )

  expect_error(as_tibble(result), "Can't deal with data created with `split2`")
})

test_that("as_tibble.demography_ctfs is equal to unclassed w/ ungrouped data", {
  result <- recruitment_ctfs(fgeo.x::tree5, fgeo.x::tree6)

  expect_equal(
    as_tibble(result),
    as_tibble(unclass(result))
  )
})

test_that("as_tibble.demography_ctfs and as.data.frame.* output equal", {
  result <- recruitment_ctfs(fgeo.x::tree5, fgeo.x::tree6)

  expect_equivalent(
    as_tibble(result),
    as.data.frame(result)
  )
})



context("as.data.frame.tt_lst")

test_that("as.data.frame.demography_ctfs takes arguments via `...`", {
  result <- recruitment_ctfs(
    fgeo.x::tree5, fgeo.x::tree6,
    split1 = fgeo.x::tree5$sp
  )

  expect_is(
    as.data.frame(result, stringsAsFactors = TRUE)[["groups"]],
    "factor"
  )
  expect_is(
    as.data.frame(result, stringsAsFactors = FALSE)[["groups"]],
    "character"
  )
})

# test_that("as.data.frame.tt_lst takes arguments via `...`", {
#   tt_lst <- tt_test(fgeo.x::tree6_3species, fgeo.x::habitat)
#   expect_is(as.data.frame(tt_lst)[["sp"]], "factor")
#
#   expect_is(
#     as.data.frame(tt_lst, stringsAsFactors = FALSE)[["sp"]],
#     "character"
#   )
# })

Try the fgeo.analyze package in your browser

Any scripts or data that you put into this service are public.

fgeo.analyze documentation built on Dec. 5, 2020, 9:06 a.m.