tests/testthat/test_b04_disp.R

test_that("disp() returns appropriate, non-empty dataframe", {

  ## Errors
  expect_message(d <- visits(finches) %>% disp(), "There are no displacement")
  expect_silent(d <- visits(finches) %>% disp(bw = 300))

  ## Format
  expect_s3_class(d1 <- d[["displacements"]], "data.frame")
  expect_s3_class(d2 <- d[["summaries"]], "data.frame")
  expect_s3_class(d3 <- d[["interactions"]], "data.frame")

  expect_length(d1, 14)
  expect_length(d2, 4)
  expect_length(d3, 3)

  expect_equal(nrow(d1), 24)
  expect_equal(nrow(d2), 5)
  expect_equal(nrow(d3), 20)

  expect_equal(sum(is.na(d1)), 0)
  expect_equal(sum(is.na(d2)), 0)
  expect_equal(sum(is.na(d3)), 0)

  expect_match(names(d1)[1:3], "^animal_id$|^date$|^left$|^arrived$|^logger_id$|^role$")
  expect_s3_class(d1$animal_id, "factor")
  expect_s3_class(d1$date, "Date")
  expect_s3_class(d1$logger_id, "factor")
  expect_s3_class(d1$left, "POSIXct")
})

test_that("disp() has correct spacing", {
  for(b in c(15, 30, 100, 300, 1000)) {
    d <- visits(finches) %>% disp(., bw = b) %>% .$displacements
    expect_true(all(as.numeric(difftime(d$arrived, d$left, units = "secs")) <= b))
  }
})

test_that("disp() returns correct data", {
  d <- visits(finches) %>% disp(., bw = 300)
  d1 <- d[["displacements"]]
  d2 <- d[["summaries"]]
  d3 <- d[["interactions"]]

  ## Data
  expect_equal(unique(d1$animal_id[1]), factor("0620000514", levels = c("041868D396", "041868D861", "062000043E", "06200004F8", "0620000514")))
  expect_equal(d1$logger_id[1], factor(c("2200"), levels = c("2100", "2200", "2400", "2700")))
  expect_equal(d1$left[1], as.POSIXct(c("2016-01-28 12:34:28"), tz = "Etc/GMT+8"))
  expect_equal(d1$date[1], lubridate::as_date("2016-01-28"))

  expect_equal(d1$date, lubridate::as_date(d1$left, tz = lubridate::tz(d1$left)))

  expect_equal(d1$animal_n[1], 5)
  expect_equal(d1$logger_n[1], 4)
  expect_equal(round(d1$lon[2], 4), -120.3612)
  expect_equal(round(d1$lat[2], 5), 50.66778)
  expect_equal(d1$role[1], "displacee")
  expect_equal(d1$species[1], "House Finch")

  expect_equal(d2$p_win[1], 1.00)
  expect_equal(sum(d3$n == 0), 11)
})

test_that("disp() pass", {
  expect_length(visits(finches) %>% disp(., bw = 30, pass = FALSE) %>% .$displacements, 6)
  expect_length(visits(finches) %>% disp(., bw = 30, pass = TRUE) %>% .$displacements, 14)
})
animalnexus/feedr documentation built on Feb. 2, 2023, 1:12 a.m.