# Note about numeric precision # In the unit tests we use digits=10. Lowever values will result in problems for some datasets test_that("fromJSON Matrix", { objects <- list( matrix(1), matrix(1:2), matrix(1:2, nrow=1), matrix(round(pi,2)), matrix(c(1,NA,2,NA), 2), volcano, matrix(NA) ); lapply(objects, function(object){ newobject <- fromJSON(toJSON(object)); expect_true(inherits(newobject, "matrix")); expect_equal(object, newobject); }); expect_equal(fromJSON(toJSON(objects)), objects); }); test_that("fromJSON Matrix with simplifyMatrix=FALSE", { expect_equal(fromJSON(toJSON(matrix(1)), simplifyMatrix=FALSE), list(1)); expect_equal(fromJSON(toJSON(matrix(1)), simplifyVector=FALSE), list(list((1)))); expect_equal(fromJSON(toJSON(matrix(NA)), simplifyMatrix=FALSE), list(NA)); expect_equal(fromJSON(toJSON(matrix(NA)), simplifyVector=FALSE), list(list((NULL)))); }); test_that("fromJSON Matrix datasets", { objects <- Filter(is.matrix, lapply(ls("package:datasets"), get)); lapply(objects, function(object){ class(object) <- "matrix"; newobject <- fromJSON(toJSON(object, digits=4)) expect_true(inherits(newobject, "matrix")); expect_equal(dim(newobject), dim(object)); attributes(newobject) <- attributes(object); # R has changed rounding algo in 4.0 and no longer matches printf #expect_equal(newobject, round(object,4)); expect_equal(newobject, object, tolerance = 1e-4) }); });