tests/testthat/test-Rfunctions.R

library(mvtnorm)
library(testthat)
data<-rbind(rmvnorm(250,rep(-3,4),diag(4)),
          rmvnorm(250,rep(3,4),diag(4)))
dat<-simOuts(data=data,alpha=0.02,seed=123)
gross<-findGrossOuts(dat,10,elbow=9)

#full oclust without Kuiper test
testfull<-oclust(X=dat,maxO = 10,G=2,grossOuts = gross,modelNames="EEE",mc.cores=2,nmax=20,verb=TRUE,scale=TRUE)
print(testfull)
summary(testfull)
plot(testfull,what="KL")
plot(testfull,what="classification")

#oclust with Kuiper
testkuiper<-oclust(X=dat,maxO = 10,G=2,grossOuts = gross,modelNames="EEE",mc.cores=2,nmax=20,kuiper=TRUE,pval=0.05,B=100,verb=TRUE,scale=TRUE)
print(testkuiper)
summary(testkuiper)
plot(testkuiper,what="KL")
plot(testkuiper,what="pval")
plot(testkuiper,what="classification")

test_that("error for non-int elbow", {
  expect_error(findGrossOuts(dat,10,NULL,.5))
})

test_that("error for zero elbow", {
  expect_error(findGrossOuts(dat,10,NULL,0))
})

test_that("error for only one xlim", {
  expect_error(findGrossOuts(dat,10,xlim=2))
})

test_that("error non-int", {
  expect_error(findGrossOuts(dat,10.9))
})

test_that("error non-pos", {
  expect_error(findGrossOuts(dat,-1))
})

test_that("error non-int", {
  expect_error(findGrossOuts(dat,minPts=NULL))
})

test_that("error non-numeric", {
  expect_error(findGrossOuts(dat,minPts=2,elbow="string"))
})

test_that("error for non-int G", {
  expect_error(oclust(X=dat,maxO=10,G=3.5,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=20,verb=TRUE,scale=TRUE))
})
test_that("error for non-int maxO", {
  expect_error(oclust(X=dat,maxO=10.2,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=20,verb=TRUE,scale=TRUE))
})
test_that("error for invalid modelNames", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVX",mc.cores = 1, nmax=20,verb=TRUE,scale=TRUE))
})

test_that("error non-int nmax", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=22.2,verb=TRUE,scale=TRUE))
})

test_that("error neg nmax", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=-2,verb=TRUE,scale=TRUE))
})

test_that("error non-numeric", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax="string",verb=TRUE,scale=TRUE))
})

test_that("error nonbool verb", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=2,verb="string",scale=TRUE))
})

test_that("error nonbool scale", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=2,verb=TRUE,scale="string"))
})

test_that("error pval>1", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=2,kuiper=TRUE,pval=1.01,B=100,verb=TRUE,scale=TRUE))
})

test_that("error nonbool scale", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=2,verb=TRUE,scale="string"))
})

test_that("data is multivariate", {
  expect_error(oclust(X=rnorm(100,0,1),maxO=10,G=3,grossOuts = NULL,modelNames="VVV",mc.cores = 1, nmax=2,verb=TRUE,scale=TRUE))
})

test_that("error more gross outliers than maxO", {
  expect_error(oclust(X=dat,maxO=4,G=3,grossOuts = gross,modelNames="VVV",mc.cores = 1, nmax=2,verb=TRUE,scale=TRUE))
})

test_that("error grossOuts non-numeric", {
  expect_error(oclust(X=dat,maxO=10,G=3,grossOuts = c("one","two","seventeen"),modelNames="VVV",mc.cores = 1, nmax=2,verb=TRUE,scale=TRUE))
})

test_that("error mus not vector minMD", {
  expect_error(minMD(X=dat,sigs=list(diag(13),diag(13)),mus=list(diag(13),diag(13))))
})

test_that("error lists not same length minMD", {
  expect_error(minMD(X=dat,sigs=list(diag(13),diag(13)),mus=list(rep(1,13),rep(2,13),rep(1,13))))
})

test_that("error sigs not matrices minMD", {
  expect_error(minMD(X=dat,sigs=list(rep(1,13),rep(1,13)),mus=list(rep(1,13),rep(2,13))))
})

test_that("error sigs not pxp minMD", {
  expect_error(minMD(X=dat,sigs=list(matrix(1,13,12),matrix(1,13,12)),mus=list(rep(1,13),rep(2,13))))
})

test_that("error not list minMD", {
  expect_error(minMD(X=dat,sigs=array(1,dim=c(13,13,2)),mus=list(rep(1,13),rep(2,13))))
})

test_that("error not int MixBetaDens", {
  expect_error(MixBetaDens(n=101.5,p=2,x=seq(0,15,0.01),a=1,b=2,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("error not int MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2.1,x=seq(0,15,0.01),a=1,b=2,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("error not numeric MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2,x=NULL,a=1,b=2,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("error not numeric MixBetaDens", {
  expect_error(MixBetaDens(n=NULL,p=2,x=seq(0,15,0.01),a=1,b=2,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("error not numeric MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=TRUE,x=seq(0,15,0.01),a=1,b=2,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("error not numeric MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2,x=seq(0,15,0.01),a=NULL,b=2,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("error not numeric MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2,x=seq(0,15,0.01),a=1,b=NULL,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("error not numeric MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2,x=seq(0,15,0.01),a=1,b=2,n_g=TRUE,var=list(diag(2),diag(2))))
})

test_that("error not numeric MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2,x=seq(0,15,0.01),a=1,b=2,n_g=c(0.1,0.9),var=list(NULL,diag(2))))
})

test_that("a>b MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2,x=seq(0,15,0.01),a=1,b=0,n_g=c(0.1,0.9),var=list(diag(2),diag(2))))
})

test_that("n_g and var same length MixBetaDens", {
  expect_error(MixBetaDens(n=100,p=2,x=seq(0,15,0.01),a=1,b=2,n_g=c(1),var=list(diag(2),diag(2))))
})

test_that("alpha non-neg simOuts", {
  expect_error(simOuts(wine[,-1],-0.1,123))
})

test_that("alpha non-numeric simOuts", {
  expect_error(simOuts(wine[,-1],NULL,123))
})

test_that("seed non-numeric simOuts", {
  expect_error(simOuts(wine[,-1],0.1,"string"))
})


test_that("error for pval plot when no pval", {
  expect_error(plot(testfull,what="pval"))
})

Try the oclust package in your browser

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

oclust documentation built on Aug. 8, 2025, 6:27 p.m.