tests/testthat/test-99_helper.R

test_that("count_files()", {
  e <- temp_files()

  expect_silent(cnt <- count_files(fs::path_temp()))
  expect_s3_class(cnt, "data.frame")
  expect_named(cnt, c("dir", "n"))
  expect_type(cnt$dir, "character")
  expect_type(cnt$n, "integer")
  expect_gte(nrow(cnt), length(unique(fs::path_dir(example_files)))) # >= because may have other temp dirs

  # Subsets
  expect_silent(cnt2 <- count_files(fs::path_temp(), subset = "BARL"))
  expect_lt(nrow(cnt2), nrow(cnt))
  expect_equal(nrow(cnt2), sum(stringr::str_detect(cnt2$dir, "BARL")))

  # Subsets negated
  expect_silent(cnt3 <- count_files(fs::path_temp(), subset = "BARL", subset_type = "omit"))
  expect_lt(nrow(cnt3), nrow(cnt))
  expect_equal(nrow(cnt3), sum(stringr::str_detect(cnt3$dir, "BARL", negate = TRUE)))

  unlink(fs::path_dir(e), recursive = TRUE)
})

test_that("check_meta()", {
  m <- clean_metadata(project_files = example_files, quiet = TRUE)
  expect_silent(chk <- check_meta(m))
  expect_s3_class(chk, "data.frame")
  expect_named(
    chk, c("site_id", "aru_type", "aru_id", "type", "n_files", "n_dirs",
           "n_days", "min_date", "max_date", "min_time", "max_time"))
  expect_true(all(m$site_id %in% chk$site_id))
  expect_true(all(m$aru_id %in% chk$aru_id))


  expect_silent(chk2 <- check_meta(m, date = TRUE))
  expect_s3_class(chk2, "data.frame")
  expect_named(
    chk2, c("site_id", "aru_type", "aru_id", "type", "date", "n_files", "n_dirs",
           "n_days", "min_time", "max_time"))
  expect_true(all(m$date %in% chk2$date))
  expect_gt(nrow(chk2), nrow(chk))
})


test_that("check_problems() - basic meta", {
  m <- clean_metadata(project_files = example_files, quiet = TRUE)
  m$aru_id[c(3, 7, 10)] <- NA_character_
  m$site_id[7] <- m$site_id[3]

  # Pull out problems
  expect_silent(chk <- check_problems(m))
  expect_equal(
    chk,
    m[c(3, 7, 10), c("path", "aru_id", "site_id", "date_time", "date")])
  expect_equal(nrow(chk), 3)

  # Summarize by date
  expect_silent(chk2 <- check_problems(m, date = TRUE))
  expect_equal(nrow(chk2), 2)
  expect_equal(chk2$date_time_n, c(1, 2))
  expect_equal(chk2$date_time_n_na, c(0, 0))

  # Identify missing by date
  m$date_time[7] <- NA
  expect_silent(chk3 <- check_problems(m, date = TRUE))
  expect_equal(chk3$date_time_n, c(1, 2))
  expect_equal(chk3$date_time_n_na, c(0, 1))

  # Return paths
  expect_silent(chk4 <- check_problems(m, path = TRUE))
  expect_equal(chk4, dplyr::pull(m, "path")[c(3, 7, 10)])
})


test_that("check_problems() - meta with coords", {
  m <- clean_metadata(project_files = example_files, quiet = TRUE) |>
    add_sites(example_sites_clean, quiet = TRUE) |>
    dplyr::arrange(path)
  m$aru_id[c(3, 7, 10)] <- NA_character_
  m$site_id[7] <- m$site_id[3]
  m$latitude[3] <- NA_real_
  m$longitude[7] <- NA_real_

  # Pull out problems
  expect_silent(chk <- check_problems(m))
  expect_equal(
    chk,
    m[c(3, 7, 10), c("path", "aru_id", "site_id", "date_time", "date", "longitude", "latitude")])
  expect_equal(nrow(chk), 3)

  # Summarize by date
  expect_silent(chk2 <- check_problems(m, date = TRUE))
  expect_equal(nrow(chk2), 2)
  expect_equal(chk2$date_time_n, c(1, 2))
  expect_equal(chk2$date_time_n_na, c(0, 0))
  expect_equal(chk2$longitude_n, c(1, 2))
  expect_equal(chk2$latitude_n, c(1, 2))
  expect_equal(chk2$longitude_n_na, c(0, 1))
  expect_equal(chk2$latitude_n_na, c(0, 1))

  # Return paths
  expect_silent(chk4 <- check_problems(m, path = TRUE))
  expect_equal(chk4, dplyr::pull(m, "path")[c(3, 7, 10)])

})


test_that("check_file()", {
  p <- test_path("test.txt")
  writeLines(paste0(paste0("test", 1:20), collapse = "\n"), p)

  expect_silent(f <- check_file(p))
  expect_equal(paste0("test", 1:10), f)

  expect_silent(f <- check_file(p, n_max = 20, progress = FALSE))
  expect_equal(paste0("test", 1:20), f)

  unlink(p)
})

test_that("add_wildtrax()", {
  suppressMessages(m <- clean_metadata(project_files = example_files))
  expect_false("wildtrax_file_name" %in% names(m))
  expect_silent(m <- add_wildtrax(m))
  expect_true("wildtrax_file_name" %in% names(m))
  expect_equal(m$wildtrax_file_name[1:2],
               c("P01_1_20200502_050000",
                 "P01_1_20200503_052000"))
})
dhope/ARUtools documentation built on Jan. 18, 2024, 5:47 a.m.