tests/testthat/test_copy.R

context("copy data")

test_that("line widths are as expected", {
  encoded <- copy_rde_var(iris, line.width = -1, no.clipboard = TRUE)
  expect_false(grepl("\\n", encoded))

  encoded <- copy_rde_var(iris, line.width = 80, no.clipboard = TRUE)
  encoded_lines <- strsplit(encoded, "\n")[[1]]
  sapply(encoded_lines[-length(encoded_lines)], function(l) {
    # the last line may be shorter
    expect_equal(nchar(l), 80)
  })
  expect_lte(nchar(encoded_lines[length(encoded_lines)]), 80)

  encoded <- copy_rde_var(iris, line.width = 120, no.clipboard = TRUE)
  encoded_lines <- strsplit(encoded, "\n")[[1]]
  sapply(encoded_lines[-length(encoded_lines)], function(l) {
    # the last line may be shorter
    expect_equal(nchar(l), 120)
  })
  expect_lte(nchar(encoded_lines[length(encoded_lines)]), 120)

  encoded <- copy_rde_var(iris, line.width = 1, no.clipboard = TRUE)
  encoded_lines <- strsplit(encoded, "\n")[[1]]
  sapply(encoded_lines, function(l) {
    expect_equal(nchar(l), 1)
  })
})

test_that("copied data.frame (no line breaks) can be encoded and decoded", {
  encoded <- copy_rde_var(iris, line.width = -1, no.clipboard = TRUE)
  expect_type(encoded, "character")
  expect_false(grepl("\\n", encoded))

  decoded <- load_rde_var(use.cache = TRUE, load.fcn = {}, encoded)  # nolint
  expect_identical(iris, decoded)
})

test_that("copied data.frame (line breaks) can be encoded and decoded", {
  encoded <- copy_rde_var(iris, line.width = 80, no.clipboard = TRUE)
  expect_type(encoded, "character")
  expect_true(grepl("\\n", encoded))
  decoded <- load_rde_var(use.cache = TRUE, load.fcn = {}, encoded)  # nolint
  expect_identical(iris, decoded)
})

test_vector <- function(vec, add.linebreaks) {
  encoded <- copy_rde_var(vec, line.width = if (add.linebreaks) 80L else -1L,
                           no.clipboard = TRUE)
  expect_type(encoded, "character")  # nolint
  expect_equal(grepl("\\n", encoded), add.linebreaks)  # nolint
  decoded <- load_rde_var(use.cache = TRUE, load.fcn = {}, encoded)  # nolint
  expect_identical(vec, decoded)  # nolint
}

test_that("copied atomic vector (character) encoded and decoded correctly", {
  test_vector("test vector", FALSE)
})

test_that("copied atomic vector (integer) encoded and decoded correctly", {
  test_vector(44L, FALSE)
})

test_that("copied atomic vector (float) encoded and decoded correctly", {
  test_vector(1.1, FALSE)
})

test_that("copied atomic vector (boolean) encoded and decoded correctly", {
  test_vector(TRUE, FALSE)
})

test_that("copied matrix (of floats) encoded and decoded correctly", {
  test_vector(matrix(2.1 * (1:100), nrow = 20), FALSE)
  test_vector(matrix(2.1 * (1:100), nrow = 20), TRUE)
})

test_that("copied list is encoded and decoded correctly", {
  test_list <- list(
    a = 1L:10L,
    b = seq(1.1, 5.5, 2),
    c = "some string",
    d = c(FALSE, TRUE, TRUE),
    e = list(
      a = 1:10,
      b = FALSE,
      c = matrix(1:100, nrow = 2)
    )
  )
  test_vector(test_list, FALSE)
  test_vector(test_list, TRUE)
})
kloppen/rde documentation built on June 30, 2020, 3:10 p.m.