tests/testthat/test-time_bins.R

test_that("time_bins() works with macrostrat", {
  # Skip if offline
  skip_if_offline(host = "macrostrat.org")

  # Test macrostrat
  expect_equal(nrow(time_bins(scale = "North american land mammal ages")), 19)
  expect_equal(nrow(time_bins(size = 10,
                              scale = "North american land mammal ages")), 7)
})

test_that("time_bins() works", {
  #correct format
  expect_true(is.data.frame(time_bins(interval = 10)))
  expect_true(is.list(time_bins(interval = c("Fortunian", "Meghalayan"),
                                assign = c(232, 167, 33), plot = TRUE)))
  expect_true(is.list(time_bins(
    interval = c("Fortunian", "Holocene"), scale = "GTS2012",
    assign = c(232, 167, 33), plot = TRUE)))
  expect_true(is.vector(time_bins(interval = c("Fortunian", "Meghalayan"),
                                assign = c(232, 167, 33))$Assignation))

  #correct amount of data returned
  expect_equal(nrow(time_bins(interval = c("Maastrichtian"))), 1)
  expect_equal(nrow(time_bins(interval = c("Fortunian", "Meghalayan"),
                              size = 10, plot = TRUE)), 50)
  expect_equal(nrow(time_bins(interval = c("Fortunian", "Meghalayan"),
                              size = 6)), 74)
  expect_equal(nrow(time_bins(interval = c("Fortunian", "Meghalayan"),
                              scale = "GTS2020")), 102)
  expect_equal(nrow(time_bins(interval = c("Fortunian", "Holocene"),
                              scale = "GTS2012")), 100)
  expect_equal(nrow(time_bins(interval = c("Fortunian", "Holocene"),
                              scale = "GTS2012", size = 10)), 51)
  expect_equal(nrow(time_bins(interval = c(500, 0), scale = "GTS2012")), 94)
  expect_equal(nrow(time_bins(interval = "Mesozoic", scale = "GTS2012",
                              plot = TRUE)), 30)
  expect_equal(nrow(time_bins(interval = "Mesozoic", rank = "period")), 3)
  expect_equal(nrow(time_bins(interval = c(0, 200), rank = "period")), 5)
  expect_equal(nrow(time_bins(interval = c(0, 200),
                              rank = "period", size = 20)), 4)
  expect_equal(nrow(time_bins(interval = c("Albian", "Danian"),
                              rank = "stage")), 8)
  expect_equal(nrow(time_bins(interval = c("Permian", "Danian"),
                              rank = "period",
                              scale = "GTS2012")), 5)
  expect_equal(colnames(time_bins()), c("bin", "interval_name",
                                        "rank",
                                       "max_ma", "mid_ma", "min_ma",
                                       "duration_myr", "abbr", "colour",
                                       "font"))
  expect_equal(colnames(time_bins(size = 10)), c("bin",
                                        "max_ma", "mid_ma", "min_ma",
                                        "duration_myr", "grouping_rank",
                                        "intervals"))
  expect_equal(nrow(time_bins(size = 50)), 11)

  # Test edge effect resolve
  expect_equal(nrow(time_bins(interval = c("Phanerozoic"),
                              size = 25, rank = "stage")), 22)

  # Test user-input bins
  scale <- data.frame(interval_name = 1:5,
                      min_ma = c(0, 18, 32, 38, 45),
                      max_ma = c(18, 32, 38, 45, 53))
  expect_equal(nrow(time_bins(scale = scale, size = 15)), 4)

  #error handling
  expect_error(time_bins(interval = c("Mastrichtian", "Danian")))
  expect_error(time_bins(interval = "Mastrichtian", scale = "GTS2012",
                         plot = TRUE))
  expect_error(time_bins(interval = "Mastrichtian", scale = "2012",
                         plot = TRUE))
  expect_error(time_bins(interval = 700, scale = "GTS2020", plot = TRUE))
  expect_error(time_bins(interval = -1, plot = TRUE))
  expect_error(time_bins(interval = data.frame()))
  expect_error(time_bins(interval = c(50, 10, 20), plot = TRUE))
  expect_error(time_bins(interval = "Mesozoic", plot = "TRUE"))
  expect_error(time_bins(interval = "Mesozoic", assign = 40))
  expect_error(time_bins(interval = "Mesozoic", assign = -40))
  expect_error(time_bins(interval = "Mesozoic", assign = "30"))
  expect_error(time_bins(interval = "Mesozoic", size = "ten"))
  expect_error(time_bins(interval = "Mesozoic", rank = "stages"))
  expect_error(time_bins(interval = "Mesozoic", rank = c("stage", "period")))
  expect_error(time_bins(interval = "Mesozoic", scale = 1))
  expect_error(time_bins(interval = NULL, scale = "GTS2020"))
  expect_error(time_bins(interval = c(10000, 100), scale = "GTS2020"))
  scale <- data.frame(name = 1:5,
                      min_ma = c(0, 18, 32, 38, 45),
                      max_ma = c(18, 32, 38, 45, 53))
  expect_error(time_bins(scale = scale, size = 15))
})

Try the palaeoverse package in your browser

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

palaeoverse documentation built on Oct. 15, 2024, 5:08 p.m.