library(testthat) library(data.table) library(DTwrappers2) # Ensure the iris dataset is in the data.table format data("iris") setDT(iris) # Manipulate the iris dataset as described in your Rmd file RNGversion(vstr = "3.6") set.seed(47) iris$noise <- rnorm(n = nrow(iris)) iris$noise[c(1, 51)] <- c("0.13ABC", "N/A") describe("DTwrappers2 functionality tests", { describe("Tests for character coercion culprit identification", { it("identifies character coercion culprits accurately", { result <- character.coercion.culprits(x = iris$noise, threshold.for.numeric = 0.8) expect_type(result, "character") expect_length(result, 2) expect_true("0.13ABC" %in% result) expect_true("N/A" %in% result) }) it("confirms no culprits in numeric variables", { result <- character.coercion.culprits(x = iris$Sepal.Length, threshold.for.numeric = 0.8) expect_type(result, "double") expect_length(result, 0) }) }) describe("Tests for removing erroneous characters", { it("removes erroneous characters and converts to numeric where possible", { modified_values <- remove.erroneous.characters(x = iris$noise[1:5], threshold.for.numeric = 0.8, variable.should.be = "numeric") expect_type(modified_values, "double") expect_true(is.na(modified_values[1])) expect_equal(modified_values[2], as.numeric(iris$noise[2])) }) }) describe("Multivariable Summarization Function Tests", { it("summarizes data accurately with dt.summarize", { summary_result <- dt.summarize(dt.name = "iris", the.variables = c("Sepal.Length", "Sepal.Width")) expect_true(is.data.table(summary_result)) # Specific assertions for summarization accuracy }) it("handles custom functions and grouping in summarizations", { custom_summary_result <- dt.summarize(dt.name = "iris", the.variables = c("Sepal.Length", "Sepal.Width"), the.functions = c("mean", "sd", "var"), grouping.variables = "Species") expect_true(is.data.table(custom_summary_result)) # Assertions to verify custom summarization and grouping functionality }) }) })