tests/testthat/test-json.R

context("json")

test_that("empty variables", {
    data <- ""
    expect_equal(to_json(data), "\"\"", info = "\"\"")

    data <- numeric()
    expect_equal(to_json(data), "[]", info = "numeric()")

    data <- character()
    expect_equal(to_json(data), "[]", info = "character()")

    data <- character(0)
    expect_equal(to_json(data), "[]", info = "character()")

    data <- logical()
    expect_equal(to_json(data), "[]", info = "logical()")

    data <- list()
    expect_equal(to_json(data), "[]", info = "list()")

    data <- matrix()
    expect_equal(to_json(data), "[]", info = "matrix()")

    data <- data.frame()
    expect_equal(to_json(data), "[]", info = "data.frame()")

    data <- array()
    expect_equal(to_json(data), "[]", info = "array()")

    data <- factor()
    expect_equal(to_json(data), "[]", info = "factor()")

    data <- NULL # same as c()
    expect_equal(to_json(data), "null", info = "NULL")

    data <- NA
    expect_equal(to_json(data), "NaN", info = "NA")

    data <- Inf
    expect_equal(to_json(data), "Infinity", info = "Inf")

    data <- -Inf
    expect_equal(to_json(data), "-Infinity", info = "-Inf")
})

test_that("vectors of length 1", {
    data <- 1
    expect_equal(to_json(data), "1", info = "single number")
    data <- "1"
    expect_equal(to_json(data), "\"1\"", info = "single character")

    data <- array(1)
    expect_equal(to_json(data), "[1]", info = "array single number")
    data <- array("1")
    expect_equal(to_json(data), "[\"1\"]", info = "array single character")

    data <- matrix(1)
    expect_equal(to_json(data), "[1]", info = "matrix single number")
    data <- matrix("1")
    expect_equal(to_json(data), "[\"1\"]", info = "matrix single character")

    data <- list(1)
    expect_equal(to_json(data), "[1]", info = "list single number")
    data <- list("1")
    expect_equal(to_json(data), "[\"1\"]", info = "list single character")

    data <- factor(1)
    expect_equal(to_json(data), "[\"1\"]", info = "factor single number")
    data <- factor("1")
    expect_equal(to_json(data), "[\"1\"]", info = "factor single character")
})

test_that("logical", {
    data <- TRUE
    expect_equal(to_json(data), "true")

    data <- FALSE
    expect_equal(to_json(data), "false")
})

test_that("data frame", {
    data <- data.frame(x = c(1, 2, 3), y = c("a", "b", "c"))
    expect_equal(to_json(data), "[{\"x\":1,\"y\":\"a\"},\n{\"x\":2,\"y\":\"b\"},\n{\"x\":3,\"y\":\"c\"}]")

    data <- data.frame(x = c(1, 2, 3), y = factor(c("a", "b", "c")))
    expect_equal(to_json(data), "[{\"x\":1,\"y\":\"a\"},\n{\"x\":2,\"y\":\"b\"},\n{\"x\":3,\"y\":\"c\"}]")
})

test_that("list", {
    data <- list(x = c(1, 2, 3), y = c("a", "b", "c"))
    expect_equal(to_json(data), "{\"x\":[1,2,3],\"y\":[\"a\",\"b\",\"c\"]}")

    data <- list(x = c(1, 2, 3), y = factor(c("a", "b", "c")))
    expect_equal(to_json(data), "{\"x\":[1,2,3],\"y\":[\"a\",\"b\",\"c\"]}")
})

test_that("vectors", {
    data <- c("a", "b", "c")
    expect_equal(to_json(data), "[\"a\",\"b\",\"c\"]")
})

test_that("factor", {
    data <- factor(c("a", "b", "c"))
    expect_equal(to_json(data), "[\"a\",\"b\",\"c\"]")
})

test_that("matrix", {
    data <- matrix(1:9, nrow = 3, byrow = TRUE)
    expect_equal(to_json(data), "[[1,2,3],[4,5,6],[7,8,9]]")
})
nachocab/clickme documentation built on Nov. 11, 2023, 3:14 p.m.