test_that("Coercion from other date classes into messydt works", {
date <- as.Date("2010-10-10")
POSIXct <- as.POSIXct("2010-10-10")
POSIXlt <- as.POSIXlt("2010-10-10")
character <- "2010-10-10"
character2 <- "AD2010-10-10"
character3 <- "{BC2010-10-10,BC2010-10-11,BC2010-10-12}"
month_text <- "10 October 2010"
messy <- as_messydate("2010-10-10")
messyneg <- as_messydate("{-2010-10-10,-2010-10-11,-2010-10-12}")
expect_equal(as_messydate(date), messy)
expect_equal(as_messydate(POSIXct), messy)
expect_equal(as_messydate(POSIXlt), messy)
expect_equal(as_messydate(character), messy)
expect_equal(as_messydate(character2), messy)
expect_equal(as_messydate(character3), messyneg)
expect_equal(as_messydate(month_text), messy)
expect_equal(mdate(date), messy)
expect_equal(mdate(POSIXct), messy)
expect_equal(mdate(POSIXlt), messy)
expect_equal(mdate(character), messy)
expect_equal(mdate(character2), messy)
expect_equal(mdate(character3), messyneg)
expect_equal(mdate(month_text), messy)
})
test_that("Coercion of unespecified date components are properly handled", {
unspecified <- c("1908-??-??", "1908-10-??", "1908/X/X", "1908/?/?", "XX-1998",
"XXXX-01-01", "01-01-XXXX", "XX-10-1998", "XX-XX-1998")
b <- as_messydate(c("1908", "1908-10", "1908", "1908", "1998",
"XXXX-01-01", "XXXX-01-01", "1998-10", "1998"))
expect_equal(as_messydate(unspecified), b)
})
test_that("resequence argument works properly", {
expect_equal(as_messydate(c("121008", "20121008"), resequence = "ymd"),
as_messydate(c("12-10-08", "2012-10-08")))
expect_equal(as_messydate(c("081012", "08102012", "08-10-12"), resequence = "dmy"),
as_messydate(c("12-10-08", "2012-10-08", "12-10-08")))
expect_equal(as_messydate(c("03312022", "043097"), resequence = "mdy"),
as_messydate(c("2022-03-31", "97-04-30")))
expect_equal(as_messydate("201212", resequence = "ym"),
as_messydate("2012-12"))
expect_equal(as_messydate("201212", resequence = "my"),
as_messydate("1212-20"))
})
test_that("dates are properly extracted from text", {
expect_equal(as_messydate(c("This function was created on the 29 of September 2021",
"Tomorrow is 13-10-2021",
"Second of February, two thousand and twenty-two")),
as_messydate(c("2021-09-29", "2021-10-13", "2022-02-02")))
expect_equal(as_messydate(c("signed on this thirtieth day of October one thousand nine hundred and forty-seven",
"signed on one thousand nine hundred and forty-seven, on the month of October, the thirtieth day",
"signed on this twenty-first day of October one thousand nine hundred and forty-seven",
"twenty second day of November 2022")),
as_messydate(c("1947-10-30", "1947-10-30", "1947-10-21", "22-11-2022")))
})
month_dates <- c("Sep 13, 1988", "Jul 11, 2003", "May 28, 1996", "Oct 2, 2009",
"1990, Apr 20", "2006, 22 Nov", "1996, Oct 25", "1997, 2 Dec",
"Jan-1990")
dmy <- c("1988-09-13", "2003-07-11", "1996-05-28", "2009-10-02",
"1990-04-20", "2006-11-22", "1996-10-25", "02-12-1997", "1990-01")
test_that("conversion from MDY dates with written month works properly", {
expect_equal(as_messydate(month_dates), as_messydate(dmy))
})
test_that("list conversion works properly", {
expect_equal(as_messydate(list(c("2012-06-01", "2012-06-02", "2012-06-03"))),
list(as_messydate("2012-06-01..2012-06-03")))
expect_equal(as_messydate(list(c(as_messydate("2001-01-01"),
as_messydate("2001-01-02..2001-01-04")))),
list(as_messydate("2001-01-01..2001-01-04")))
})
test_that("zero padding is correctly added conversion works properly", {
expect_equal(as_messydate(c("193-3", "193-3..193-5", "193-3, 193-4")),
as_messydate(c("0193-03-XX", "0193-03-XX..0193-05", "{0193-03-XX,0193-04-XX}")))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.