tests/testthat/test-dates.R

context("dates")

test_that("Chronological age in months", {
  # Two years exactly
  expect_equal(chrono_age("2014-01-20", "2012-01-20"), 24)

  # Shift a year
  expect_equal(chrono_age("2014-01-20", "2013-01-20"), 12)
  expect_equal(chrono_age("2014-01-20", "2011-01-20"), 36)

  # Shift a month
  expect_equal(chrono_age("2014-01-20", "2012-02-20"), 23)
  expect_equal(chrono_age("2014-01-20", "2011-12-20"), 25)

  # Multiple dates
  t1 <- c("2014-01-20", "2014-01-20")
  t2 <- c("2012-02-20", "2011-12-20")
  expect_equal(chrono_age(t1, t2), c(23, 25))

  # Missing dates raise warnings and default to NA
  expect_warning(chrono_age(NA, "2011-12-20"))
  expect_true(is.na(suppressWarnings(chrono_age(NA, "2011-12-20"))))

  # 3 months exactly
  expect_equal(chrono_age("2014-05-10", "2014-02-10"), 3)

  # Borrow a month when the earlier date has a later day
  expect_equal(chrono_age("2014-05-10", "2014-02-11"), 2)

  # Reversed arguments
  expect_equal(chrono_age("2012-01-20", "2014-01-20"), 24)

  # Checks against EVT/PPVT examples
  expect_equal(chrono_age("2007-06-29", "2001-03-03"),  (6 * 12) + 3)
  expect_equal(chrono_age("2007-05-08", "1999-08-02"),  (7 * 12) + 9)
  expect_equal(chrono_age("2007-08-13", "1985-11-24"), (21 * 12) + 8)
})

test_that("Excel date recovery", {
  # An xls file
  dates <- readxl::read_excel(test_path("data/dates.xls"))

  # Parse expected date (string -> date)
  dates$exp_date <- as.Date(dates$Expected)

  # Convert excel date (string -> time -> date)
  dates$new_date <- suppressWarnings(as.Date(undo_excel_date(dates$Date)))

  expect_equal(dates$new_date, dates$exp_date)

  # An xlsx file
  x_dates <- readxl::read_excel(test_path("data/dates.xlsx"))

  # Parse expected date (string -> date)
  x_dates$exp_date <- as.Date(x_dates$Expected)

  # Convert excel date (string -> time -> date)
  x_dates$new_date <- suppressWarnings(as.Date(undo_excel_date(x_dates$Date)))

  expect_equal(x_dates$new_date, x_dates$exp_date)
})
LearningToTalk/L2TDatabase documentation built on June 24, 2020, 3:45 a.m.