library(testthat) library(AutoEDA) library(ggplot2) #========================================================== # pca_analysis() #========================================================== test_that("pca_analysis returns PCAResult", { pca <- pca_analysis(iris) expect_s3_class( pca, "PCAResult" ) }) test_that("pca_analysis works with scale = FALSE", { expect_no_error( pca_analysis( iris, scale = FALSE ) ) }) test_that("pca_analysis works with numeric-only data", { pca <- pca_analysis( iris[, 1:4] ) expect_s3_class( pca, "PCAResult" ) }) test_that("pca_analysis works with missing values removed", { dat <- iris dat$Sepal.Length[1:10] <- NA expect_no_error( pca_analysis( na.omit(dat) ) ) }) #========================================================== # PCA plots #========================================================== test_that("PCA biplot returns ggplot", { pca <- pca_analysis(iris) p <- pca_biplot(pca) expect_s3_class( p, "ggplot" ) }) test_that("PCA variable plot returns ggplot", { pca <- pca_analysis(iris) p <- pca_variable_plot(pca) expect_s3_class( p, "ggplot" ) }) test_that("PCA individual plot returns ggplot", { pca <- pca_analysis(iris) p <- pca_individual_plot(pca) expect_s3_class( p, "ggplot" ) }) #========================================================== # Invalid pca_analysis() #========================================================== test_that("pca_analysis rejects non-data.frame", { expect_error( pca_analysis(1:10) ) }) test_that("pca_analysis rejects invalid scale", { expect_error( pca_analysis( iris, scale = "TRUE" ) ) }) test_that("pca_analysis rejects one numeric variable", { expect_error( pca_analysis( data.frame(x = 1:10) ) ) }) #========================================================== # Invalid PCA plots #========================================================== test_that("PCA biplot rejects invalid object", { expect_error( pca_biplot(iris) ) }) test_that("PCA variable plot rejects invalid object", { expect_error( pca_variable_plot(iris) ) }) test_that("PCA individual plot rejects invalid object", { expect_error( pca_individual_plot(iris) ) })