context("toJSON keep_vec_names") test_that("keep_vec_names with named vectors", { # Basic types should give messages # Length-1 vectors expect_message(expect_equal(toJSON2(c(a=1)), '{"a":1}')) expect_message(expect_equal(toJSON2(c(a="x")), '{"a":"x"}')) expect_message(expect_equal(toJSON2(c(a=TRUE)), '{"a":true}')) # Longer vectors expect_message(expect_equal(toJSON2(c(a=1,b=2)), '{"a":1,"b":2}')) expect_message(expect_equal(toJSON2(c(a="x",b="y")), '{"a":"x","b":"y"}')) expect_message(expect_equal(toJSON2(c(a=FALSE,b=TRUE)), '{"a":false,"b":true}')) # Some other types expect_message(expect_equal(toJSON2(factor(c(a="x"))), '{"a":"x"}')) expect_message(expect_equal(toJSON2(c(a=as.Date("2015-01-01"))), '{"a":"2015-01-01"}')) expect_message(expect_equal(toJSON2(c(a=as.POSIXct("2015-01-01 3:00:00"))), '{"a":"2015-01-01 03:00:00"}')) expect_message(expect_equal(toJSON2(c(a=as.POSIXlt("2015-01-01 3:00:00"))), '{"a":"2015-01-01 03:00:00"}')) # keep_vec_names shouldn't affect unnamed vectors expect_equal(toJSON2(1), '1') expect_equal(toJSON2(c(1:3)), '[1,2,3]') }) # Data frames generally don't allow named columns, except in very unusual cases test_that("keep_vec_names with data frames", { expect_equal(toJSON3(data.frame(x=c(a=1), y=2)), '{"x":[1],"y":[2]}') expect_equal(toJSON3(data.frame(x=c(a=1,b=2), y=c(c=3,d=4))), '{"x":[1,2],"y":[3,4]}') })