test_that("fromJSON date objects", {
  x <- Sys.time() + c(1, 2, NA, 3)
  mydf <- data.frame(x = x)
  expect_s3_class(fromJSON(toJSON(x, POSIXt = "mongo")), "POSIXct")
  expect_equal(fromJSON(toJSON(x, POSIXt = "mongo")), x)
  #expect_s3_class(fromJSON(toJSON(x, POSIXt="mongo", na="string")), "POSIXct");
  expect_s3_class(fromJSON(toJSON(x, POSIXt = "mongo", na = "null")), "POSIXct")

  expect_s3_class(fromJSON(toJSON(mydf, POSIXt = "mongo")), "data.frame")
  expect_s3_class(fromJSON(toJSON(mydf, POSIXt = "mongo"))$x, "POSIXct")
  #expect_s3_class(fromJSON(toJSON(mydf, POSIXt="mongo", na="string"))$x, "POSIXct");
  expect_s3_class(fromJSON(toJSON(mydf, POSIXt = "mongo", na = "null"))$x, "POSIXct")
  expect_equal(fromJSON(toJSON(mydf, POSIXt = "mongo"))$x, x)

  xct <- as.POSIXct(x)
  xlt <- as.POSIXlt(x)

  expect_equal(xct, xlt)
  expect_true(unbox(xct[1]) == unbox(xlt[1]))
  xct3un <- unbox(xct[3])
  expect_true(is.na(xct3un) && inherits(xct3un, "scalar") && inherits(xct3un, "POSIXt"))
  xlt3un <- unbox(xlt[3])
  expect_true(is.na(xlt3un) && inherits(xlt3un, "scalar") && inherits(xlt3un, "POSIXt"))

  expect_equal(toJSON(xct, POSIXt = "mongo"), toJSON(xlt, POSIXt = "mongo"))
  expect_equal(toJSON(unbox(xct[1]), POSIXt = "mongo"), toJSON(unbox(xlt[1]), POSIXt = "mongo"))
})
