context("checkDataTable") test_that("checkDataTable", { skip_if_not_physically_installed("data.table") expect_false(testDataTable(iris)) expect_true("data.table" %in% loadedNamespaces()) dt = data.table::as.data.table(iris) expect_succ_all("DataFrame", dt) expect_succ_all("DataTable", dt) expect_fail_all("DataTable", iris) expect_true(testDataTable(dt, min.rows = 1, ncols = 5)) expect_false(testDataTable(dt, min.rows = 1000, ncols = 5)) expect_true(testDataTable(dt, key = character(0))) expect_true(testDataTable(dt, index = character(0))) data.table::setkeyv(dt, "Species") expect_true(testDataTable(dt, key = "Species")) expect_false(testDataTable(dt, index = "Species")) dt = data.table::as.data.table(iris) data.table::setkeyv(dt, "Species", physical = FALSE) expect_false(testDataTable(dt, key = "Species")) expect_true(testDataTable(dt, index = "Species")) dt = data.table::as.data.table(iris) data.table::setkeyv(dt, c("Petal.Width", "Petal.Length"), physical = TRUE) data.table::setkeyv(dt, c("Sepal.Length", "Sepal.Width"), physical = FALSE) expect_true(testDataTable(dt, key = c("Petal.Width", "Petal.Length"), index = c("Sepal.Width", "Sepal.Length"))) expect_error(testDataTable(dt, key = 1), "string") expect_error(testDataTable(dt, index = 1), "string") expect_error(assertDataTable(dt, key = "Species"), "primary keys") expect_error(assertDataTable(dt, index = "Species"), "secondary keys") x = data.table::as.data.table(iris) expect_true(testDataTable(x, max.rows = 200, max.cols = 5)) expect_false(testDataTable(x, max.rows = 100)) expect_false(testDataTable(x, max.cols = 3)) }) test_that("list columns", { skip_if_not_physically_installed("data.table") x = data.table::data.table(a = 1:2, b = list(3, 4)) expect_true(testDataTable(x, any.missing = FALSE)) x$b = list(3, NULL) expect_true(testDataTable(x, any.missing = FALSE)) expect_true(testDataTable(x, all.missing = FALSE)) x$b = list(NULL, NULL) expect_true(testDataTable(x, any.missing = FALSE)) expect_true(testDataTable(x, all.missing = FALSE)) }) test_that("nrow for null data tables", { skip_if_not_physically_installed("data.table") # c.f. https://github.com/Rdatatable/data.table/issues/3149 M = matrix(1:3, nrow = 3) M = M[, integer(0)] DT = data.table::as.data.table(M) # null data table expect_true(testDataTable(DT, nrows = 0)) })