tests/testthat/test_validateparams.R

context("Parameter validation")
library(clusterability)

test_that("validate_data", {
  expect_error(validate_data(NULL), NULL, info = "Null data")
  expect_error(validate_data(rep(0, 0)), NULL, info = "0 rows")
  expect_error(validate_data(t(rep(0, 0))), NULL, info = "0 cols")
})

test_that("validate_test", {
  expect_match(validate_test("dip"), "DIP")
  expect_match(validate_test("silverman"), "SILVERMAN")

  expect_error(validate_test(dip), "dip", info = "Forgot quotes")
  expect_error(validate_test(NULL), "dip", info = "NULL test")
  expect_error(validate_test("blah"), "dip", info = "Invalid test")
})

test_that("validate_metric", {
  # Setup
  testdata <- cbind(rnorm(100), rnorm(100, 5, 1))
  test1d <- rnorm(100)

  # Tests
  expect_match(validate_metric("EUCLIDEAN", testdata), "euclidean", fixed = TRUE)
  expect_match(validate_metric("Maximum", testdata), "maximum", fixed = TRUE)
  expect_match(validate_metric("mAnhATTaN", testdata), "manhattan", fixed = TRUE)
  expect_match(validate_metric("canberra", testdata), "canberra", fixed = TRUE)
  expect_match(validate_metric("binary", testdata), "binary", fixed = TRUE)
  expect_match(validate_metric("mINKOWSKI(4.2)", testdata), "minkowski(4.2)", fixed = TRUE)
  expect_match(validate_metric("minkowski(.21112)", testdata), "minkowski(.21112)", fixed = TRUE)
  expect_match(validate_metric("mINKOWSKI(9963)", testdata), "minkowski(9963)", fixed = TRUE)
  expect_match(validate_metric("COV", testdata), "cov", fixed = TRUE)
  expect_match(validate_metric("sQeUC", testdata), "sqeuc", fixed = TRUE)
  expect_match(validate_metric("cORr", testdata), "corr", fixed = TRUE)
  expect_match(validate_metric("sQCOrr", testdata), "sqcorr", fixed = TRUE)

  expect_warning(validate_metric(NULL, testdata), "euclidean")
  expect_warning(validate_metric(blah, testdata), "euclidean")
  expect_warning(validate_metric(55, testdata), "euclidean")
  expect_warning(validate_metric("minkowski", testdata), "euclidean")
  expect_warning(validate_metric("minkowski(0)", testdata), "positive")

  expect_error(validate_metric("coV", test1d), "dimensional")
  expect_error(validate_metric("coRR", test1d), "dimensional")
})

test_that("validate_reduction", {
  expect_match(validate_reduction("pca"), "PCA", fixed = TRUE)
  expect_match(validate_reduction("distance"), "DISTANCE", fixed = TRUE)
  expect_match(validate_reduction("nOnE"), "NONE", fixed = TRUE)

  expect_warning(validate_reduction("jalks"), "PCA")
  expect_warning(validate_reduction(NULL), "PCA")
  expect_warning(validate_reduction(blah), "PCA")

})

test_that("validate_isdistmatrix", {
  data1 <- dist(rnorm(10))
  data2 <- cbind(c(1, 2, 3), c(3, 8, 7), c(6, 1, 9))
  data3 <- cbind(c(0, 2, 3), c(2, 0, 4), c(3, 4, 0))
  expect_false(validate_isdistmatrix(FALSE, "PCA", data1))
  expect_false(validate_isdistmatrix(FALSE, "NONE", data1))
  expect_false(validate_isdistmatrix(FALSE, "DISTANCE", data1))

  expect_true(validate_isdistmatrix(TRUE, "NONE", data1))
  expect_true(validate_isdistmatrix(TRUE, "NONE", data3))

  expect_error(validate_isdistmatrix(TRUE, "PCA", data1))
  expect_error(validate_isdistmatrix(TRUE, "DiStAnCE", data1))
  expect_error(validate_isdistmatrix(TRUE, "NONE", data2))

})

test_that("validate_standardize", {
  expect_match(validate_standardize("nOnE"), "NONE", fixed = TRUE)
  expect_match(validate_standardize("STd"), "STD", fixed = TRUE)
  expect_match(validate_standardize("MEan"), "MEAN", fixed = TRUE)
  expect_match(validate_standardize("meDIaN"), "MEDIAN", fixed = TRUE)

  expect_warning(validate_standardize("blah"), "standardization")
  expect_warning(validate_standardize(NULL), "standardization")
  expect_warning(validate_standardize(blah), "standardization")
})

test_that("validate_pca_center", {
  expect_true(validate_pca_center(T))
  expect_true(validate_pca_center(TRUE))
  expect_false(validate_pca_center(F))
  expect_false(validate_pca_center(FALSE))

  expect_true(suppressWarnings(validate_pca_center(blah)))  # Default value is TRUE

  expect_warning(validate_pca_center(true))
  expect_warning(validate_pca_center("TRUE"))
  expect_warning(validate_pca_center(false))
  expect_warning(validate_pca_center("FALSE"))
})

test_that("validate_pca_scale", {
  expect_true(validate_pca_scale(T))
  expect_true(validate_pca_scale(TRUE))
  expect_false(validate_pca_scale(F))
  expect_false(validate_pca_scale(FALSE))

  # Default value is TRUE
  expect_true(suppressWarnings(validate_pca_scale(blah)))

  expect_warning(validate_pca_scale(true))
  expect_warning(validate_pca_scale("TRUE"))
  expect_warning(validate_pca_scale(false))
  expect_warning(validate_pca_scale("FALSE"))
})

test_that("validate_completecase", {
  # Valid inputs
  expect_true(validate_completecase(T))
  expect_true(validate_completecase(TRUE))
  expect_false(validate_completecase(F))
  expect_false(validate_completecase(FALSE))

  # Invalid input - does it return default?
  expect_false(suppressWarnings(validate_completecase(blah)))

  # Invalid input - does it warn the user?
  expect_warning(validate_completecase(true))
  expect_warning(validate_completecase("TRUE"))
  expect_warning(validate_completecase(false))
  expect_warning(validate_completecase("FALSE"))
})

test_that("validate_dsimulatepvalue", {
  # Valid inputs
  expect_true(validate_dsimulatepvalue(T))
  expect_true(validate_dsimulatepvalue(TRUE))
  expect_false(validate_dsimulatepvalue(F))
  expect_false(validate_dsimulatepvalue(FALSE))

  # Invalid input - does it return default?
  expect_false(suppressWarnings(validate_dsimulatepvalue(blah)))

  # Invalid input - does it warn the user?
  expect_warning(validate_dsimulatepvalue(true))
  expect_warning(validate_dsimulatepvalue("TRUE"))
  expect_warning(validate_dsimulatepvalue(false))
  expect_warning(validate_dsimulatepvalue("FALSE"))
})

test_that("validate_sadjust", {
  # Valid inputs
  expect_true(validate_sadjust(T))
  expect_true(validate_sadjust(TRUE))
  expect_false(validate_sadjust(F))
  expect_false(validate_sadjust(FALSE))

  # Invalid input - does it return default?
  expect_true(suppressWarnings(validate_sadjust(blah)))

  # Invalid input - does it warn the user?
  expect_warning(validate_sadjust(true))
  expect_warning(validate_sadjust("TRUE"))
  expect_warning(validate_sadjust(false))
  expect_warning(validate_sadjust("FALSE"))
})

test_that("validate_soutseed", {
  # Valid inputs
  expect_true(validate_soutseed(T))
  expect_true(validate_soutseed(TRUE))
  expect_false(validate_soutseed(F))
  expect_false(validate_soutseed(FALSE))

  # Invalid input - does it return default?
  expect_false(suppressWarnings(validate_soutseed(blah)))

  # Invalid input - does it warn the user?
  expect_warning(validate_soutseed(true))
  expect_warning(validate_soutseed("TRUE"))
  expect_warning(validate_soutseed(false))
  expect_warning(validate_soutseed("FALSE"))
})

test_that("validate_dreps", {
  # Valid inputs
  expect_equal(validate_dreps(700), 700)
  expect_equal(validate_dreps(1), 1)

  # Invalid input - does it return default?
  expect_equal(suppressWarnings(validate_dreps(0)), 2000)

  # Invalid inputs
  expect_warning(validate_dreps(0), "d_reps", info = "d_reps - 0 is invalid")
  expect_warning(validate_dreps(4.5), "d_reps", info = "d_reps - non-integer is invalid")
  expect_warning(validate_dreps(NULL), "d_reps", info = "d_reps - NULL is invalid")
  expect_warning(validate_dreps("55"), "d_reps", info = "d_reps - non-numeric is invalid")
  expect_warning(validate_dreps(blah), "d_reps", info = "d_reps - invalid object is invalid")
})

test_that("validate_sk", {
  # Valid inputs
  expect_equal(validate_sk(1), 1)
  expect_equal(validate_sk(2), 2)

  # Invalid input - does it return the default?
  expect_equal(suppressWarnings(validate_sk(0)), 1)

  # Invalid inputs
  expect_warning(validate_sk(1.5), "s_k")
  expect_warning(validate_sk(0), "s_k")
  expect_warning(validate_sk(blah), "s_k")
  expect_warning(validate_sk(NULL), "s_k")
  expect_warning(validate_sk("1"), "s_k")
})

test_that("validate_sm", {
  # Valid inputs
  expect_equal(validate_sm(1000), 1000)
  expect_equal(validate_sm(1), 1)

  # Invalid input - does it return the default?
  expect_equal(suppressWarnings(validate_sm(0)), 999)

  # Invalid inputs
  expect_warning(validate_sm(1.5), "s_m")
  expect_warning(validate_sm(0), "s_m")
  expect_warning(validate_sm(blah), "s_m")
  expect_warning(validate_sm(NULL), "s_m")
  expect_warning(validate_sm("1"), "s_m")
})

test_that("validate_sdigits", {
  # Valid inputs
  expect_equal(validate_sdigits(9), 9)
  expect_equal(validate_sdigits(1), 1)

  # Invalid input - does it return the default?
  expect_equal(suppressWarnings(validate_sdigits(0)), 6)

  # Invalid inputs
  expect_warning(validate_sdigits(1.5), "s_digits")
  expect_warning(validate_sdigits(0), "s_digits")
  expect_warning(validate_sdigits(blah), "s_digits")
  expect_warning(validate_sdigits(NULL), "s_digits")
  expect_warning(validate_sdigits("1"), "s_digits")
})

test_that("validate_ssetseed", {
  # Valid inputs
  expect_equal(validate_ssetseed(9), 9)
  expect_equal(validate_ssetseed(123), 123)
  expect_equal(validate_ssetseed(-1), -1)
  expect_null(validate_ssetseed(NULL))

  # Invalid input - does it return the default?
  expect_null(suppressWarnings(validate_ssetseed(9932.12)))

  # Invalid inputs
  expect_warning(validate_ssetseed(1.5), "s_setseed")
  expect_warning(validate_ssetseed(blah), "s_setseed")
  expect_warning(validate_ssetseed("1"), "s_setseed")
})

Try the clusterability package in your browser

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

clusterability documentation built on March 13, 2020, 3:07 a.m.