tests/testthat/test-datetimewd.R

context("Datetime Tests")

options("logr.output" = FALSE)

Sys.setenv("LANGUAGE" = "EN")
Sys.setlocale("LC_TIME", "English")
Sys.setenv(TZ = "UTC")

test_that("datetimewd1: test error handling.", {
  
  dt <- as.POSIXct("2000-02-29 12:34:56", tz = "UTC", origin = "1970-01-01")
  
  expect_error(format_datetimewd(dt, 6))
  expect_error(format_datetimewd(dt, 41))
  expect_error(format_datetimewd(dt, 10, 10))
  expect_error(format_datetimewd(dt, 20, 40))
})

test_that("datetimewd2: format_timewd() work as expected.", {
  
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 = v1 - sas_offset
  
  dt_pos <-as.POSIXct(v2, tz="utc", origin = "1970-01-01")
  
  #numeric input
  expect_equal(
    format_datetimewd(v2, 7),
    c("29FEB00",
      "01JAN00",
      "15JUL15",
      "31DEC69",
      "01JAN00")
  )
  
  expect_equal(
    format_datetimewd(v2, 17, 2),
    c("29FEB00:12:34:56.",
      "31DEC99:23:59:59.",
      "15JUL15:08:09:10.",
      "31DEC69:23:59:59.",
      "31DEC99:23:59:59.")
  )
  
  expect_equal(
    format_datetimewd(v2, 21, 2),
    c("29FEB2000:12:34:56.00",
      "31DEC1999:23:59:59.99",
      "15JUL2015:08:09:10.00",
      "31DEC1969:23:59:59.16",
      "31DEC2099:23:59:59.74")
  )
  
  expect_equal(
    format_datetimewd(v2, 25, 4),
    c("  29FEB2000:12:34:56.0000",
      "  31DEC1999:23:59:59.9950",
      "  15JUL2015:08:09:10.0000",
      "  31DEC1969:23:59:59.1647",
      "  31DEC2099:23:59:59.7421")
  )
  
  expect_equal(
    format_datetimewd(v2, 27, 6),
    c("  29FEB2000:12:34:56.000000",
      "  31DEC1999:23:59:59.995000",
      "  15JUL2015:08:09:10.000000",
      "  31DEC1969:23:59:59.164720",
      "  31DEC2099:23:59:59.742086")
  )
  
  expect_equal(
    format_datetimewd(v2, 29, 8),
    c("  29FEB2000:12:34:56.00000000",
      "  31DEC1999:23:59:59.99499989",
      "  15JUL2015:08:09:10.00000000",
      "  31DEC1969:23:59:59.16472000",
      "  31DEC2099:23:59:59.74208641")
  )
  
  expect_equal(
    format_datetimewd(v2, 33, 12),
    c("  29FEB2000:12:34:56.000000000000",
      "  31DEC1999:23:59:59.994999885559",
      "  15JUL2015:08:09:10.000000000000",
      "  31DEC1969:23:59:59.164719998837",
      "  31DEC2099:23:59:59.742086410522")
  )
  
  # POSIXct input
  expect_equal(
    format_datetimewd(dt_pos, 7),
    c("29FEB00",
      "01JAN00",
      "15JUL15",
      "31DEC69",
      "01JAN00")
  )
  
  expect_equal(
    format_datetimewd(dt_pos, 17, 2),
    c("29FEB00:12:34:56.",
      "31DEC99:23:59:59.",
      "15JUL15:08:09:10.",
      "31DEC69:23:59:59.",
      "31DEC99:23:59:59.")
  )
  
  expect_equal(
    format_datetimewd(dt_pos, 21, 2),
    c("29FEB2000:12:34:56.00",
      "31DEC1999:23:59:59.99",
      "15JUL2015:08:09:10.00",
      "31DEC1969:23:59:59.16",
      "31DEC2099:23:59:59.74")
  )
  
  expect_equal(
    format_datetimewd(dt_pos, 25, 4),
    c("  29FEB2000:12:34:56.0000",
      "  31DEC1999:23:59:59.9950",
      "  15JUL2015:08:09:10.0000",
      "  31DEC1969:23:59:59.1647",
      "  31DEC2099:23:59:59.7421")
  )
  
})

test_that("datetimewd3: fapply() with datetime7. to datetime7.6 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime7.")
  res2 <- fapply(v2, "datetime7.1")
  res3 <- fapply(v2, "datetime7.2")
  res4 <- fapply(v2, "datetime7.3")
  res5 <- fapply(v2, "datetime7.4")
  res6 <- fapply(v2, "datetime7.5")
  res7 <- fapply(v2, "datetime7.6")
  
  # datetime7.
  expect_equal(res1[1], "29FEB00")
  expect_equal(res1[2], "01JAN00")
  expect_equal(res1[3], "15JUL15")
  expect_equal(res1[4], "31DEC69")
  expect_equal(res1[5], "01JAN00")
  
  # datetime7.1
  expect_equal(res2[1], "29FEB00")
  expect_equal(res2[2], "01JAN00")
  expect_equal(res2[3], "15JUL15")
  expect_equal(res2[4], "31DEC69")
  expect_equal(res2[5], "31DEC99")
  
  # datetime7.2
  expect_equal(res3[1], "29FEB00")
  expect_equal(res3[2], "31DEC99")
  expect_equal(res3[3], "15JUL15")
  expect_equal(res3[4], "31DEC69")
  expect_equal(res3[5], "31DEC99")
  
  # datetime7.3
  expect_equal(res4[1], "29FEB00")
  expect_equal(res4[2], "31DEC99")
  expect_equal(res4[3], "15JUL15")
  expect_equal(res4[4], "31DEC69")
  expect_equal(res4[5], "31DEC99")
  
  # datetime7.4
  expect_equal(res5[1], "29FEB00")
  expect_equal(res5[2], "31DEC99")
  expect_equal(res5[3], "15JUL15")
  expect_equal(res5[4], "31DEC69")
  expect_equal(res5[5], "31DEC99")
  
  # datetime7.5
  expect_equal(res6[1], "29FEB00")
  expect_equal(res6[2], "31DEC99")
  expect_equal(res6[3], "15JUL15")
  expect_equal(res6[4], "31DEC69")
  expect_equal(res6[5], "31DEC99")
  
  # datetime7.6
  expect_equal(res7[1], "29FEB00")
  expect_equal(res7[2], "31DEC99")
  expect_equal(res7[3], "15JUL15")
  expect_equal(res7[4], "31DEC69")
  expect_equal(res7[5], "31DEC99")
  
})


test_that("datetimewd4: fapply() with datetime9. to datetime9.8 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime9.")
  res2 <- fapply(v2, "datetime9.1")
  res3 <- fapply(v2, "datetime9.2")
  res4 <- fapply(v2, "datetime9.3")
  res5 <- fapply(v2, "datetime9.4")
  res6 <- fapply(v2, "datetime9.5")
  res7 <- fapply(v2, "datetime9.6")
  res8 <- fapply(v2, "datetime9.8")
  
  # datetime9.
  expect_equal(res1[1], "29FEB2000")
  expect_equal(res1[2], "01JAN2000")
  expect_equal(res1[3], "15JUL2015")
  expect_equal(res1[4], "31DEC1969")
  expect_equal(res1[5], "01JAN2100")
  
  # datetime9.1
  expect_equal(res2[1], "29FEB2000")
  expect_equal(res2[2], "01JAN2000")
  expect_equal(res2[3], "15JUL2015")
  expect_equal(res2[4], "31DEC1969")
  expect_equal(res2[5], "31DEC2099")
  
  # datetime9.2
  expect_equal(res3[1], "29FEB2000")
  expect_equal(res3[2], "31DEC1999")
  expect_equal(res3[3], "15JUL2015")
  expect_equal(res3[4], "31DEC1969")
  expect_equal(res3[5], "31DEC2099")
  
  # datetime9.3
  expect_equal(res4[1], "29FEB2000")
  expect_equal(res4[2], "31DEC1999")
  expect_equal(res4[3], "15JUL2015")
  expect_equal(res4[4], "31DEC1969")
  expect_equal(res4[5], "31DEC2099")
  
  # datetime9.4
  expect_equal(res5[1], "29FEB2000")
  expect_equal(res5[2], "31DEC1999")
  expect_equal(res5[3], "15JUL2015")
  expect_equal(res5[4], "31DEC1969")
  expect_equal(res5[5], "31DEC2099")
  
  # datetime9.5
  expect_equal(res6[1], "29FEB2000")
  expect_equal(res6[2], "31DEC1999")
  expect_equal(res6[3], "15JUL2015")
  expect_equal(res6[4], "31DEC1969")
  expect_equal(res6[5], "31DEC2099")
  
  # datetime9.6
  expect_equal(res7[1], "29FEB2000")
  expect_equal(res7[2], "31DEC1999")
  expect_equal(res7[3], "15JUL2015")
  expect_equal(res7[4], "31DEC1969")
  expect_equal(res7[5], "31DEC2099")
  
  # datetime9.8
  expect_equal(res8[1], "29FEB2000")
  expect_equal(res8[2], "31DEC1999")
  expect_equal(res8[3], "15JUL2015")
  expect_equal(res8[4], "31DEC1969")
  expect_equal(res8[5], "31DEC2099")
  
})


test_that("datetimewd5: fapply() with datetime15. to datetime15.12 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime15.")
  res2 <- fapply(v2, "datetime15.1")
  res3 <- fapply(v2, "datetime15.2")
  res4 <- fapply(v2, "datetime15.3")
  res5 <- fapply(v2, "datetime15.4")
  res6 <- fapply(v2, "datetime15.5")
  res7 <- fapply(v2, "datetime15.6")
  res8 <- fapply(v2, "datetime15.8")
  res9 <- fapply(v2, "datetime15.12")
  
  # datetime15.
  expect_equal(res1[1], "  29FEB00:12:34")
  expect_equal(res1[2], "  01JAN00:00:00")
  expect_equal(res1[3], "  15JUL15:08:09")
  expect_equal(res1[4], "  31DEC69:23:59")
  expect_equal(res1[5], "  01JAN00:00:00")
  
  # datetime15.1
  expect_equal(res2[1], "  29FEB00:12:34")
  expect_equal(res2[2], "  01JAN00:00:00")
  expect_equal(res2[3], "  15JUL15:08:09")
  expect_equal(res2[4], "  31DEC69:23:59")
  expect_equal(res2[5], "  31DEC99:23:59")
  
  # datetime15.2
  expect_equal(res3[1], "  29FEB00:12:34")
  expect_equal(res3[2], "  31DEC99:23:59")
  expect_equal(res3[3], "  15JUL15:08:09")
  expect_equal(res3[4], "  31DEC69:23:59")
  expect_equal(res3[5], "  31DEC99:23:59")
  
  # datetime15.3
  expect_equal(res4[1], "  29FEB00:12:34")
  expect_equal(res4[2], "  31DEC99:23:59")
  expect_equal(res4[3], "  15JUL15:08:09")
  expect_equal(res4[4], "  31DEC69:23:59")
  expect_equal(res4[5], "  31DEC99:23:59")
  
  # datetime15.4
  expect_equal(res5[1], "  29FEB00:12:34")
  expect_equal(res5[2], "  31DEC99:23:59")
  expect_equal(res5[3], "  15JUL15:08:09")
  expect_equal(res5[4], "  31DEC69:23:59")
  expect_equal(res5[5], "  31DEC99:23:59")
  
  # datetime15.5
  expect_equal(res6[1], "  29FEB00:12:34")
  expect_equal(res6[2], "  31DEC99:23:59")
  expect_equal(res6[3], "  15JUL15:08:09")
  expect_equal(res6[4], "  31DEC69:23:59")
  expect_equal(res6[5], "  31DEC99:23:59")
  
  # datetime15.6
  expect_equal(res7[1], "  29FEB00:12:34")
  expect_equal(res7[2], "  31DEC99:23:59")
  expect_equal(res7[3], "  15JUL15:08:09")
  expect_equal(res7[4], "  31DEC69:23:59")
  expect_equal(res7[5], "  31DEC99:23:59")
  
  # datetime15.8
  expect_equal(res8[1], "  29FEB00:12:34")
  expect_equal(res8[2], "  31DEC99:23:59")
  expect_equal(res8[3], "  15JUL15:08:09")
  expect_equal(res8[4], "  31DEC69:23:59")
  expect_equal(res8[5], "  31DEC99:23:59")
  
  # datetime15.12
  expect_equal(res9[1], "  29FEB00:12:34")
  expect_equal(res9[2], "  31DEC99:23:59")
  expect_equal(res9[3], "  15JUL15:08:09")
  expect_equal(res9[4], "  31DEC69:23:59")
  expect_equal(res9[5], "  31DEC99:23:59")
  
})


test_that("datetimewd6: fapply() with datetime17. to datetime17.12 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime17.")
  res2 <- fapply(v2, "datetime17.1")
  res3 <- fapply(v2, "datetime17.2")
  res4 <- fapply(v2, "datetime17.3")
  res5 <- fapply(v2, "datetime17.4")
  res6 <- fapply(v2, "datetime17.5")
  res7 <- fapply(v2, "datetime17.6")
  res8 <- fapply(v2, "datetime17.8")
  res9 <- fapply(v2, "datetime17.12")
  
  # datetime17.
  expect_equal(res1[1], "29FEB00:12:34:56")
  expect_equal(res1[2], "01JAN00:00:00:00")
  expect_equal(res1[3], "15JUL15:08:09:10")
  expect_equal(res1[4], "31DEC69:23:59:59")
  expect_equal(res1[5], "01JAN00:00:00:00")
  
  # datetime17.1
  expect_equal(res2[1], "29FEB00:12:34:56.")
  expect_equal(res2[2], "01JAN00:00:00:00.")
  expect_equal(res2[3], "15JUL15:08:09:10.")
  expect_equal(res2[4], "31DEC69:23:59:59.")
  expect_equal(res2[5], "31DEC99:23:59:59.")
  
  # datetime17.2
  expect_equal(res3[1], "29FEB00:12:34:56.")
  expect_equal(res3[2], "31DEC99:23:59:59.")
  expect_equal(res3[3], "15JUL15:08:09:10.")
  expect_equal(res3[4], "31DEC69:23:59:59.")
  expect_equal(res3[5], "31DEC99:23:59:59.")
  
  # datetime17.3
  expect_equal(res4[1], "29FEB00:12:34:56.")
  expect_equal(res4[2], "31DEC99:23:59:59.")
  expect_equal(res4[3], "15JUL15:08:09:10.")
  expect_equal(res4[4], "31DEC69:23:59:59.")
  expect_equal(res4[5], "31DEC99:23:59:59.")
  
  # datetime17.4
  expect_equal(res5[1], "29FEB00:12:34:56.")
  expect_equal(res5[2], "31DEC99:23:59:59.")
  expect_equal(res5[3], "15JUL15:08:09:10.")
  expect_equal(res5[4], "31DEC69:23:59:59.")
  expect_equal(res5[5], "31DEC99:23:59:59.")
  
  # datetime17.5
  expect_equal(res6[1], "29FEB00:12:34:56.")
  expect_equal(res6[2], "31DEC99:23:59:59.")
  expect_equal(res6[3], "15JUL15:08:09:10.")
  expect_equal(res6[4], "31DEC69:23:59:59.")
  expect_equal(res6[5], "31DEC99:23:59:59.")
  
  # datetime17.6
  expect_equal(res7[1], "29FEB00:12:34:56.")
  expect_equal(res7[2], "31DEC99:23:59:59.")
  expect_equal(res7[3], "15JUL15:08:09:10.")
  expect_equal(res7[4], "31DEC69:23:59:59.")
  expect_equal(res7[5], "31DEC99:23:59:59.")
  
  # datetime17.8
  expect_equal(res8[1], "29FEB00:12:34:56.")
  expect_equal(res8[2], "31DEC99:23:59:59.")
  expect_equal(res8[3], "15JUL15:08:09:10.")
  expect_equal(res8[4], "31DEC69:23:59:59.")
  expect_equal(res8[5], "31DEC99:23:59:59.")
  
  # datetime17.12
  expect_equal(res9[1], "29FEB00:12:34:56.")
  expect_equal(res9[2], "31DEC99:23:59:59.")
  expect_equal(res9[3], "15JUL15:08:09:10.")
  expect_equal(res9[4], "31DEC69:23:59:59.")
  expect_equal(res9[5], "31DEC99:23:59:59.")
  
})


test_that("datetimewd7: fapply() with datetime18. to datetime18.12 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime18.")
  res2 <- fapply(v2, "datetime18.1")
  res3 <- fapply(v2, "datetime18.2")
  res4 <- fapply(v2, "datetime18.3")
  res5 <- fapply(v2, "datetime18.4")
  res6 <- fapply(v2, "datetime18.5")
  res7 <- fapply(v2, "datetime18.6")
  res8 <- fapply(v2, "datetime18.8")
  res9 <- fapply(v2, "datetime18.12")
  
  # datetime18.
  expect_equal(res1[1], "  29FEB00:12:34:56")
  expect_equal(res1[2], "  01JAN00:00:00:00")
  expect_equal(res1[3], "  15JUL15:08:09:10")
  expect_equal(res1[4], "  31DEC69:23:59:59")
  expect_equal(res1[5], "  01JAN00:00:00:00")
  
  # datetime18.1
  expect_equal(res2[1], "29FEB00:12:34:56.0")
  expect_equal(res2[2], "01JAN00:00:00:00.0")
  expect_equal(res2[3], "15JUL15:08:09:10.0")
  expect_equal(res2[4], "31DEC69:23:59:59.2")
  expect_equal(res2[5], "31DEC99:23:59:59.7")
  
  # datetime18.2
  expect_equal(res3[1], "29FEB00:12:34:56.0")
  expect_equal(res3[2], "31DEC99:23:59:59.9")
  expect_equal(res3[3], "15JUL15:08:09:10.0")
  expect_equal(res3[4], "31DEC69:23:59:59.1")
  expect_equal(res3[5], "31DEC99:23:59:59.7")
  
  # datetime18.3
  expect_equal(res4[1], "29FEB00:12:34:56.0")
  expect_equal(res4[2], "31DEC99:23:59:59.9")
  expect_equal(res4[3], "15JUL15:08:09:10.0")
  expect_equal(res4[4], "31DEC69:23:59:59.1")
  expect_equal(res4[5], "31DEC99:23:59:59.7")
  
  # datetime18.4
  expect_equal(res5[1], "29FEB00:12:34:56.0")
  expect_equal(res5[2], "31DEC99:23:59:59.9")
  expect_equal(res5[3], "15JUL15:08:09:10.0")
  expect_equal(res5[4], "31DEC69:23:59:59.1")
  expect_equal(res5[5], "31DEC99:23:59:59.7")
  
  # datetime18.5
  expect_equal(res6[1], "29FEB00:12:34:56.0")
  expect_equal(res6[2], "31DEC99:23:59:59.9")
  expect_equal(res6[3], "15JUL15:08:09:10.0")
  expect_equal(res6[4], "31DEC69:23:59:59.1")
  expect_equal(res6[5], "31DEC99:23:59:59.7")
  
  # datetime18.6
  expect_equal(res7[1], "29FEB00:12:34:56.0")
  expect_equal(res7[2], "31DEC99:23:59:59.9")
  expect_equal(res7[3], "15JUL15:08:09:10.0")
  expect_equal(res7[4], "31DEC69:23:59:59.1")
  expect_equal(res7[5], "31DEC99:23:59:59.7")
  
  # datetime18.8
  expect_equal(res8[1], "29FEB00:12:34:56.0")
  expect_equal(res8[2], "31DEC99:23:59:59.9")
  expect_equal(res8[3], "15JUL15:08:09:10.0")
  expect_equal(res8[4], "31DEC69:23:59:59.1")
  expect_equal(res8[5], "31DEC99:23:59:59.7")
  
  # datetime18.12
  expect_equal(res9[1], "29FEB00:12:34:56.0")
  expect_equal(res9[2], "31DEC99:23:59:59.9")
  expect_equal(res9[3], "15JUL15:08:09:10.0")
  expect_equal(res9[4], "31DEC69:23:59:59.1")
  expect_equal(res9[5], "31DEC99:23:59:59.7")
  
})


test_that("datetimewd8: fapply() with datetime21. to datetime21.12 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime21.")
  res2 <- fapply(v2, "datetime21.1")
  res3 <- fapply(v2, "datetime21.2")
  res4 <- fapply(v2, "datetime21.3")
  res5 <- fapply(v2, "datetime21.4")
  res6 <- fapply(v2, "datetime21.5")
  res7 <- fapply(v2, "datetime21.6")
  res8 <- fapply(v2, "datetime21.8")
  res9 <- fapply(v2, "datetime21.12")
  
  # datetime21.
  expect_equal(res1[1], "   29FEB2000:12:34:56")
  expect_equal(res1[2], "   01JAN2000:00:00:00")
  expect_equal(res1[3], "   15JUL2015:08:09:10")
  expect_equal(res1[4], "   31DEC1969:23:59:59")
  expect_equal(res1[5], "   01JAN2100:00:00:00")
  
  # datetime21.1
  expect_equal(res2[1], "29FEB2000:12:34:56.0")
  expect_equal(res2[2], "01JAN2000:00:00:00.0")
  expect_equal(res2[3], "15JUL2015:08:09:10.0")
  expect_equal(res2[4], "31DEC1969:23:59:59.2")
  expect_equal(res2[5], "31DEC2099:23:59:59.7")
  
  # datetime21.2
  expect_equal(res3[1], "29FEB2000:12:34:56.00")
  expect_equal(res3[2], "31DEC1999:23:59:59.99")
  expect_equal(res3[3], "15JUL2015:08:09:10.00")
  expect_equal(res3[4], "31DEC1969:23:59:59.16")
  expect_equal(res3[5], "31DEC2099:23:59:59.74")
  
  # datetime21.3
  expect_equal(res4[1], "29FEB00:12:34:56.000")
  expect_equal(res4[2], "31DEC99:23:59:59.995")
  expect_equal(res4[3], "15JUL15:08:09:10.000")
  expect_equal(res4[4], "31DEC69:23:59:59.165")
  expect_equal(res4[5], "31DEC99:23:59:59.742")
  
  # datetime21.4
  expect_equal(res5[1], "29FEB00:12:34:56.0000")
  expect_equal(res5[2], "31DEC99:23:59:59.9950")
  expect_equal(res5[3], "15JUL15:08:09:10.0000")
  expect_equal(res5[4], "31DEC69:23:59:59.1647")
  expect_equal(res5[5], "31DEC99:23:59:59.7421")
  
  # datetime21.5
  expect_equal(res6[1], "29FEB00:12:34:56.0000")
  expect_equal(res6[2], "31DEC99:23:59:59.9950")
  expect_equal(res6[3], "15JUL15:08:09:10.0000")
  expect_equal(res6[4], "31DEC69:23:59:59.1647")
  expect_equal(res6[5], "31DEC99:23:59:59.7420")
  
  # datetime21.6
  expect_equal(res7[1], "29FEB00:12:34:56.0000")
  expect_equal(res7[2], "31DEC99:23:59:59.9950")
  expect_equal(res7[3], "15JUL15:08:09:10.0000")
  expect_equal(res7[4], "31DEC69:23:59:59.1647")
  expect_equal(res7[5], "31DEC99:23:59:59.7420")
  

  
})


test_that("datetimewd9: fapply() with datetime25. to datetime25.12 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime25.")
  res2 <- fapply(v2, "datetime25.1")
  res3 <- fapply(v2, "datetime25.2")
  res4 <- fapply(v2, "datetime25.3")
  res5 <- fapply(v2, "datetime25.4")
  res6 <- fapply(v2, "datetime25.5")
  res7 <- fapply(v2, "datetime25.6")
  res8 <- fapply(v2, "datetime25.8")
  res9 <- fapply(v2, "datetime25.12")
  
  # datetime25.
  expect_equal(res1[1], "       29FEB2000:12:34:56")
  expect_equal(res1[2], "       01JAN2000:00:00:00")
  expect_equal(res1[3], "       15JUL2015:08:09:10")
  expect_equal(res1[4], "       31DEC1969:23:59:59")
  expect_equal(res1[5], "       01JAN2100:00:00:00")
  
  # datetime25.1
  expect_equal(res2[1], "     29FEB2000:12:34:56.0")
  expect_equal(res2[2], "     01JAN2000:00:00:00.0")
  expect_equal(res2[3], "     15JUL2015:08:09:10.0")
  expect_equal(res2[4], "     31DEC1969:23:59:59.2")
  expect_equal(res2[5], "     31DEC2099:23:59:59.7")
  
  # datetime25.2
  expect_equal(res3[1], "    29FEB2000:12:34:56.00")
  expect_equal(res3[2], "    31DEC1999:23:59:59.99")
  expect_equal(res3[3], "    15JUL2015:08:09:10.00")
  expect_equal(res3[4], "    31DEC1969:23:59:59.16")
  expect_equal(res3[5], "    31DEC2099:23:59:59.74")
  
  # datetime25.3
  expect_equal(res4[1], "   29FEB2000:12:34:56.000")
  expect_equal(res4[2], "   31DEC1999:23:59:59.995")
  expect_equal(res4[3], "   15JUL2015:08:09:10.000")
  expect_equal(res4[4], "   31DEC1969:23:59:59.165")
  expect_equal(res4[5], "   31DEC2099:23:59:59.742")
  
  # datetime25.4
  expect_equal(res5[1], "  29FEB2000:12:34:56.0000")
  expect_equal(res5[2], "  31DEC1999:23:59:59.9950")
  expect_equal(res5[3], "  15JUL2015:08:09:10.0000")
  expect_equal(res5[4], "  31DEC1969:23:59:59.1647")
  expect_equal(res5[5], "  31DEC2099:23:59:59.7421")
  
  # datetime25.5
  expect_equal(res6[1], "29FEB2000:12:34:56.00000")
  expect_equal(res6[2], "31DEC1999:23:59:59.99500")
  expect_equal(res6[3], "15JUL2015:08:09:10.00000")
  expect_equal(res6[4], "31DEC1969:23:59:59.16472")
  expect_equal(res6[5], "31DEC2099:23:59:59.74209")
  
  # datetime25.6
  expect_equal(res7[1], "29FEB2000:12:34:56.000000")
  expect_equal(res7[2], "31DEC1999:23:59:59.995000")
  expect_equal(res7[3], "15JUL2015:08:09:10.000000")
  expect_equal(res7[4], "31DEC1969:23:59:59.164720")
  expect_equal(res7[5], "31DEC2099:23:59:59.742086")
  
  # datetime25.8
  expect_equal(res8[1], "29FEB00:12:34:56.00000000")
  expect_equal(res8[2], "31DEC99:23:59:59.99499989")
  expect_equal(res8[3], "15JUL15:08:09:10.00000000")
  expect_equal(res8[4], "31DEC69:23:59:59.16472000")
  expect_equal(res8[5], "31DEC99:23:59:59.74208641")
  
  # datetime25.12
  expect_equal(res9[1], "29FEB00:12:34:56.00000000")
  expect_equal(res9[2], "31DEC99:23:59:59.99499988")
  expect_equal(res9[3], "15JUL15:08:09:10.00000000")
  expect_equal(res9[4], "31DEC69:23:59:59.16471999")
  expect_equal(res9[5], "31DEC99:23:59:59.74208641")
  
})


test_that("datetimewd10: fapply() with datetime40. to datetime40.12 work as expected", {
  v1 <- c(1267446896,
          1262303999.995,
          1752566950,
          315619199.16472,
          4418063999.74208615)
  sas_offset <- 315619200
  
  v2 <- v1 - sas_offset
  
  res1 <- fapply(v2, "datetime40.")
  res2 <- fapply(v2, "datetime40.1")
  res3 <- fapply(v2, "datetime40.2")
  res4 <- fapply(v2, "datetime40.3")
  res5 <- fapply(v2, "datetime40.4")
  res6 <- fapply(v2, "datetime40.5")
  res7 <- fapply(v2, "datetime40.6")
  res8 <- fapply(v2, "datetime40.8")
  res9 <- fapply(v2, "datetime40.12")
  
  # datetime40.
  expect_equal(res1[1], "                      29FEB2000:12:34:56")
  expect_equal(res1[2], "                      01JAN2000:00:00:00")
  expect_equal(res1[3], "                      15JUL2015:08:09:10")
  expect_equal(res1[4], "                      31DEC1969:23:59:59")
  expect_equal(res1[5], "                      01JAN2100:00:00:00")
  
  # datetime40.1
  expect_equal(res2[1], "                    29FEB2000:12:34:56.0")
  expect_equal(res2[2], "                    01JAN2000:00:00:00.0")
  expect_equal(res2[3], "                    15JUL2015:08:09:10.0")
  expect_equal(res2[4], "                    31DEC1969:23:59:59.2")
  expect_equal(res2[5], "                    31DEC2099:23:59:59.7")
  
  # datetime40.2
  expect_equal(res3[1], "                   29FEB2000:12:34:56.00")
  expect_equal(res3[2], "                   31DEC1999:23:59:59.99")
  expect_equal(res3[3], "                   15JUL2015:08:09:10.00")
  expect_equal(res3[4], "                   31DEC1969:23:59:59.16")
  expect_equal(res3[5], "                   31DEC2099:23:59:59.74")
  
  # datetime40.3
  expect_equal(res4[1], "                  29FEB2000:12:34:56.000")
  expect_equal(res4[2], "                  31DEC1999:23:59:59.995")
  expect_equal(res4[3], "                  15JUL2015:08:09:10.000")
  expect_equal(res4[4], "                  31DEC1969:23:59:59.165")
  expect_equal(res4[5], "                  31DEC2099:23:59:59.742")
  
  # datetime40.4
  expect_equal(res5[1], "                 29FEB2000:12:34:56.0000")
  expect_equal(res5[2], "                 31DEC1999:23:59:59.9950")
  expect_equal(res5[3], "                 15JUL2015:08:09:10.0000")
  expect_equal(res5[4], "                 31DEC1969:23:59:59.1647")
  expect_equal(res5[5], "                 31DEC2099:23:59:59.7421")
  
  # datetime40.5
  expect_equal(res6[1], "                29FEB2000:12:34:56.00000")
  expect_equal(res6[2], "                31DEC1999:23:59:59.99500")
  expect_equal(res6[3], "                15JUL2015:08:09:10.00000")
  expect_equal(res6[4], "                31DEC1969:23:59:59.16472")
  expect_equal(res6[5], "                31DEC2099:23:59:59.74209")
  
  # datetime40.6
  expect_equal(res7[1], "               29FEB2000:12:34:56.000000")
  expect_equal(res7[2], "               31DEC1999:23:59:59.995000")
  expect_equal(res7[3], "               15JUL2015:08:09:10.000000")
  expect_equal(res7[4], "               31DEC1969:23:59:59.164720")
  expect_equal(res7[5], "               31DEC2099:23:59:59.742086")
  
  # datetime40.8
  expect_equal(res8[1], "             29FEB2000:12:34:56.00000000")
  expect_equal(res8[2], "             31DEC1999:23:59:59.99499989")
  expect_equal(res8[3], "             15JUL2015:08:09:10.00000000")
  expect_equal(res8[4], "             31DEC1969:23:59:59.16472000")
  expect_equal(res8[5], "             31DEC2099:23:59:59.74208641")
  
  # datetime40.12
  expect_equal(res9[1], "         29FEB2000:12:34:56.000000000000")
  expect_equal(res9[2], "         31DEC1999:23:59:59.994999885559")
  expect_equal(res9[3], "         15JUL2015:08:09:10.000000000000")
  expect_equal(res9[4], "         31DEC1969:23:59:59.164719998837")
  expect_equal(res9[5], "         31DEC2099:23:59:59.742086410522")
  
})

Try the fmtr package in your browser

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

fmtr documentation built on March 15, 2026, 5:08 p.m.