objects <- list( as.POSIXlt("2013-06-17 22:33:44"), as.POSIXct("2013-06-17 22:33:44"), as.POSIXlt("2013-06-17 22:33:44", tz="Australia/Darwin"), as.POSIXct("2013-06-17 22:33:44", tz="Australia/Darwin") ) test_that("Encoding POSIXt Objects", { #string based formats do not depends on the current local timezone invisible(lapply(objects, function(object){ expect_equal(toJSON(object), "[\"2013-06-17 22:33:44\"]"); expect_equal(toJSON(object, POSIXt="string"), "[\"2013-06-17 22:33:44\"]"); expect_equal(toJSON(object, POSIXt="ISO8601"), "[\"2013-06-17T22:33:44\"]"); expect_error(toJSON(object, POSIXt="sdfsdsdf"), "one of"); })); #object 1 and 2 will result in a location specific epoch invisible(lapply(objects[3:4], function(object){ expect_equal(toJSON(object, POSIXt="epoch"), "[1371474224000]"); expect_equal(toJSON(object, POSIXt="mongo"), "[{\"$date\":1371474224000}]"); })); }); test_that("Encoding POSIXt object in a list", { #string based formats do not depends on the current local timezone invisible(lapply(objects, function(object){ expect_equal(toJSON(list(foo=object)), "{\"foo\":[\"2013-06-17 22:33:44\"]}"); expect_equal(toJSON(list(foo=object), POSIXt="string"), "{\"foo\":[\"2013-06-17 22:33:44\"]}"); expect_equal(toJSON(list(foo=object), POSIXt="ISO8601"), "{\"foo\":[\"2013-06-17T22:33:44\"]}"); expect_error(toJSON(list(foo=object), POSIXt="sdfsdsdf"), "one of"); })); #list(foo=object) 1 and 2 will result in a location specific epoch invisible(lapply(objects[3:4], function(object){ expect_equal(toJSON(list(foo=object), POSIXt="epoch"), "{\"foo\":[1371474224000]}"); expect_equal(toJSON(list(foo=object), POSIXt="mongo"), "{\"foo\":[{\"$date\":1371474224000}]}"); })); }); test_that("Encoding POSIXt object in a list", { #string based formats do not depends on the current local timezone invisible(lapply(objects, function(object){ expect_equal(toJSON(data.frame(foo=object)), "[{\"foo\":\"2013-06-17 22:33:44\"}]"); expect_equal(toJSON(data.frame(foo=object), POSIXt="string"), "[{\"foo\":\"2013-06-17 22:33:44\"}]"); expect_equal(toJSON(data.frame(foo=object), POSIXt="ISO8601"), "[{\"foo\":\"2013-06-17T22:33:44\"}]"); expect_error(toJSON(data.frame(foo=object), POSIXt="sdfsdsdf"), "one of"); })); #list(foo=object) 1 and 2 will result in a location specific epoch invisible(lapply(objects[3:4], function(object){ expect_equal(toJSON(data.frame(foo=object), POSIXt="epoch"), "[{\"foo\":1371474224000}]"); expect_equal(toJSON(data.frame(foo=object), POSIXt="mongo"), "[{\"foo\":{\"$date\":1371474224000}}]"); })); }); test_that("POSIXt NA values", { newobj <- list( c(objects[[1]], NA), c(objects[[2]], NA) ); lapply(newobj, function(object){ expect_equal(toJSON(object), "[\"2013-06-17 22:33:44\",null]"); expect_equal(toJSON(object, na="string"), "[\"2013-06-17 22:33:44\",\"NA\"]"); expect_equal(toJSON(data.frame(foo=object)), "[{\"foo\":\"2013-06-17 22:33:44\"},{}]"); expect_equal(toJSON(data.frame(foo=object), na="null"), "[{\"foo\":\"2013-06-17 22:33:44\"},{\"foo\":null}]"); expect_equal(toJSON(data.frame(foo=object), na="string"), "[{\"foo\":\"2013-06-17 22:33:44\"},{\"foo\":\"NA\"}]"); }); tzobj <- list( c(objects[[3]], NA), c(objects[[4]], NA) ); lapply(tzobj, function(object) { expect_equal(toJSON(object, POSIXt = "mongo"), "[{\"$date\":1371474224000},null]"); expect_equal(toJSON(object, POSIXt = "mongo", na="string"), "[{\"$date\":1371474224000},\"NA\"]"); expect_equal(toJSON(data.frame(foo=object), POSIXt = "mongo"), "[{\"foo\":{\"$date\":1371474224000}},{}]"); expect_equal(toJSON(data.frame(foo=object), POSIXt = "mongo", na="null"), "[{\"foo\":{\"$date\":1371474224000}},{\"foo\":null}]"); expect_equal(toJSON(data.frame(foo=object), POSIXt = "mongo", na="string"), "[{\"foo\":{\"$date\":1371474224000}},{\"foo\":\"NA\"}]"); }) }); test_that("Negative dates", { x <- objects[[2]] y <- x - c(1e9, 2e9, 3e9) expect_equal(fromJSON(toJSON(y, POSIXt = "mongo")), y); })