tests/testthat/test-utils.R

context("utils")


# Input data --------------------------------------------------------------
df <- mtcars


# dots_remove_elements ----------------------------------------------------
test_that("dots_remove_elements works", {
  input <- list(a = 1, b = "b", c = TRUE, x = quo(x), 1.3)
  output_1 <- dots_remove_elements(!!! input)
  output_ref_1 <- quos(!!! input)

  expect_identical(output_1, output_ref_1)

  output_2 <- dots_remove_elements(!!! input, .elements = c("a", "x"))
  output_ref_2 <- quos(!!! input)[c(2, 3, 5)]

  expect_identical(output_2, output_ref_2)
})


# add_class ---------------------------------------------------------------
test_that("add_class works", {
  expect_equal(class(add_class(df, "some")), c("some", "data.frame"))
})


# add_class_cond ----------------------------------------------------------
test_that("add_class_cond works", {
  expect_equal(class(add_class_cond(df, "data.frame")), "data.frame")
  expect_equal(class(add_class_cond(df, "some")), c("some", "data.frame"))
})


# remove_class ------------------------------------------------------------
test_that("remove_class works", {
  class(df) <- c("some", "data.frame")

  expect_equal(class(remove_class(df)), "data.frame")
})


# remove_class_cond -------------------------------------------------------
test_that("remove_class_cond works", {
  class(df) <- c("some", "data.frame")

  expect_equal(class(remove_class_cond(df, "some")), "data.frame")
  expect_equal(class(remove_class_cond(df, "another")),
               c("some", "data.frame"))
})


# diff_tbl ----------------------------------------------------------------
test_that("diff_tbl works", {
  df_1 <- data.frame(x = 1:10, y = 2:11)
  df_2 <- data.frame(y = 3:12, z = 4:13)

  expect_identical(diff_tbl(df_1, df_2), data.frame(x = df_1$x))
  expect_silent(output_2 <- diff_tbl(df_1, df_1))
  expect_equal(dim(output_2), c(nrow(df_1), 0))
})

test_that("diff_tbl preserves class of .tbl1", {
  df_1 <- data.frame(x = 1:10, y = 2:11)
  df_2 <- tibble(y = 3:12, z = 4:13)

  expect_identical(diff_tbl(df_1, df_2), data.frame(x = df_1$x))

  df_3 <- tibble(x = 1:10, y = 2:11)
  df_4 <- data.frame(y = 3:12, z = 4:13)

  expect_identical(diff_tbl(df_3, df_4), tibble(x = df_1$x))
})


# assign_tbl --------------------------------------------------------------
test_that("assign_tbl works", {
  df_1 <- data.frame(y = 2:11, x = 1:10)
  df_2 <- data.frame(y = 3:12, z = letters[1:10], stringsAsFactors = FALSE)
  output <- assign_tbl(df_1, df_2)
  output_ref <- data.frame(y = df_2$y, x = df_1$x, z = df_2$z,
                           stringsAsFactors = FALSE)

  expect_identical(output, output_ref)
})

test_that("assign_tbl preserves class of .tbl1", {
  df_1 <- tibble(y = 2:11, x = 1:10)
  df_2 <- data.frame(y = 3:12, z = letters[1:10], stringsAsFactors = FALSE)
  output_1 <- assign_tbl(df_1, df_2)
  output_ref_1 <- tibble(y = df_2$y, x = df_1$x, z = df_2$z)

  expect_identical(output_1, output_ref_1)

  df_3 <- data.frame(y = 2:11, x = 1:10)
  df_4 <- tibble(y = 3:12, z = letters[1:10])
  output_2 <- assign_tbl(df_3, df_4)
  output_ref_2 <- data.frame(y = df_4$y, x = df_3$x, z = df_4$z,
                             stringsAsFactors = FALSE)

  expect_identical(output_2, output_ref_2)
})

Try the keyholder package in your browser

Any scripts or data that you put into this service are public.

keyholder documentation built on March 31, 2023, 5:37 p.m.