tests/testthat/test-nse.R

tmp <- tempfile()

setup(dir.create(tmp))
teardown(unlink(tmp, recursive = TRUE))

prt_cars <- create_prt(demo_data_frame("mtcars"), dir = tmp, n_chunks = 2L)
dt_cars <- demo_data_table("mtcars")
tbl_cars <- demo_tibble("mtcars")

test_that("nse subsetting", {

  expect_identical(
    subset(prt_cars, c(rep(TRUE, 5), rep(FALSE, nrow(mtcars) - 5))),
    subset(dt_cars, c(rep(TRUE, 5), rep(FALSE, nrow(mtcars) - 5)))
  )

  expect_warning(subset(prt_cars, c(T, T, F)), class = "warn_ind_rep")
  expect_error(subset(tbl_cars, c(T, T, F)),
               class = "vctrs_error_subscript_size")

  expect_error(subset(prt_cars, 1:5), class = "err_lgl_subset")

  expect_identical(subset(prt_cars, select = 1:5), dt_cars[, 1:5])

  inds <- 1:5
  expect_error(subset(prt_cars, inds), class = "err_lgl_subset")
  expect_identical(subset(prt_cars, select = inds),
                          dt_cars[, inds, with = FALSE])

  get_ind <- function(x = 5L) seq_len(x)
  expect_error(subset(prt_cars, get_ind()), class = "err_lgl_subset")
  expect_identical(subset(prt_cars, select = get_ind()),
                          dt_cars[, get_ind(), with = FALSE])

  expect_identical(subset(prt_cars, mpg < 20), subset(dt_cars, mpg < 20))
  expect_identical(subset(prt_cars, (mpg < 20) & (hp > 100)),
                   subset(dt_cars, (mpg < 20) & (hp > 100)))

  mpg_thresh <- 20
  expect_identical(subset(prt_cars, mpg < 20),
                   subset(dt_cars, mpg < mpg_thresh))
  expect_identical(subset(prt_cars, mpg < mpg_thresh, part_safe = TRUE),
                   subset(dt_cars, mpg < mpg_thresh))

  expect_identical(subset(prt_cars, mpg < 20), subset(dt_cars, mpg < 20))
  expect_identical(subset(prt_cars, mpg < 20, c("cyl", "disp")),
                   subset(dt_cars, mpg < 20, c("cyl", "disp")))
  expect_identical(subset(prt_cars, mpg < 20, c(cyl, disp)),
                   subset(dt_cars, mpg < 20, c(cyl, disp)))
  expect_identical(subset(prt_cars, mpg < 20, -c(cyl, disp)),
                   subset(dt_cars, mpg < 20, -c(cyl, disp)))

  inds <- sample(c(TRUE, FALSE), nrow(mtcars), replace = TRUE)
  expect_warning(subset(prt_cars, inds & mpg < 20, part_safe = TRUE),
                 class = "warn_ind_rep")
  expect_identical(subset(prt_cars, inds & mpg < 20, part_safe = FALSE),
                   subset(dt_cars, inds & mpg < 20))

  expect_identical(subset(prt_cars), subset(dt_cars))
  expect_identical(subset(prt_cars), dt_cars)

  expect_warning(subset(prt_cars, foo = "bar"), class = "warn_ignore_...")
  expect_warning(subset(prt_cars, drop = TRUE), class = "warn_ignore_drop")
})

Try the prt package in your browser

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

prt documentation built on April 9, 2023, 5:07 p.m.