--- a +++ b/tests/testthat/test-fromDataSim.R @@ -0,0 +1,197 @@ +context("fromDataSim") + +test_that("validateArgs",{ + data(event.data) + my.data <- EventData(data=event.data, + subject="subject", + rand.date="randDate", + has.event="hasEvent", + withdrawn="withdrawn", + time="time", + site="site") + + my.fit <- fit(my.data) + + expect_error(simulate(my.fit,Nsim=-6)) + expect_error(simulate(my.fit,Nsim=0)) + expect_error(simulate(my.fit,Nsim="sd")) + expect_error(expect_warning(simulate(my.fit,Nsim=10,seed="we"))) + expect_error(simulate(my.fit,Nsim=10,limit=0.51)) + expect_error(simulate(my.fit,Nsim=10,limit=-0.1)) + expect_error(simulate(my.fit,Nsim=10,limit=c(0.1,0.4))) + + expect_error(simulate(my.fit,Nsim=10,data=my.data@subject.data)) + expect_error(simulate(my.fit,Nsim=10,fix.rate=0.5)) + expect_error(simulate(my.fit,Nsim=10,fix.shape=1.0)) + expect_error(simulate(my.fit,Nsim=10,fix.rate=0.5,fix.shape=-1)) + expect_error(simulate(my.fit,Nsim=10,fix.rate=-0.5,fix.shape=1)) + expect_error(simulate(my.fit,Nsim=10,fix.rate=c(0.5,1.5),fix.shape=1)) + expect_error(simulate(my.fit,Nsim=10,fix.rate=0.5,fix.shape="gt")) + expect_error(simulate(my.fit,Nsim=10,fix.rate=0.5,fix.shape=c(1,1.01))) + expect_error(simulate(my.fit,Nsim=10,Naccrual=3)) + + ag <- Generate.PoissonAccrual(start.date="2014-10-10",rate=1) + expect_warning(simulate(my.fit,Nsim=10,accrualGenerator=ag)) + expect_warning(simulate(my.fit,Nsim=10,accrualGenerator=ag,Naccrual=0)) + expect_error(simulate(my.fit,Nsim=10,accrualGenerator="e",Naccrual=10)) + expect_error(simulate(my.fit,Nsim=10,accrualGenerator=ag,Naccrual=-4)) + expect_error(simulate(my.fit,Nsim=10,accrualGenerator=ag,Naccrual=c(1,4,5))) + + expect_error(simulate(my.fit,Nsim=10,longlagsettings="err")) + expect_error(simulate(my.fit,Nsim=10,longlagsettings=ag)) + + expect_error(simulate(my.fit,Nsim=10,HR=4,r=1)) + d <- my.data + d@subject.data$time <- 0 + d@subject.data$withdrawn <- 0 + d@subject.data$has.event <- 0 + + expect_error(simulate(my.fit,Nsim=10,data,d,r=1)) + expect_error(simulate(my.fit,Nsim=10,data,d,HR=1)) + expect_error(simulate(my.fit,Nsim=10,data,d,r=1,HR=c(1,2,3))) + expect_error(simulate(my.fit,Nsim=10,data,d,r=1,HR="er")) + expect_error(simulate(my.fit,Nsim=10,data,d,r=1,HR=0)) + expect_error(simulate(my.fit,Nsim=10,data,d,r=1,HR=-1)) + expect_error(simulate(my.fit,Nsim=10,data,d,r=0,HR=1)) + expect_error(simulate(my.fit,Nsim=10,data,d,r=-1,HR=1.2)) + expect_error(simulate(my.fit,Nsim=10,data,d,r=c("df",TRUE),HR=1)) + + +}) + + +test_that("CalculateAccrualTimes",{ + + myf <- function(N){ + return(rep(as.Date(c("2016-01-01","2016-02-02")) ,N/2)) + } + + ac <- new("AccrualGenerator",f=myf,text="t",model="t") + + + rand.dates <- as.Date(c(1:10,25:50,51:100,11:24),origin="2015-01-01") + + ans <- CalculateAccrualTimes(0,10,rand.dates,NULL) + + expect_equal("matrix",class(ans)) + expect_equal(10,nrow(ans)) + expect_equal(100,ncol(ans)) + + expect_equal(ans[1,],ans[2,]) + expect_equal(ans[3,],ans[2,]) + expect_equal(16436+c(1:10,25:50,51:100,11:24),ans[2,]) + + ans <- CalculateAccrualTimes(2,10,rand.dates,ac) + expect_equal("matrix",class(ans)) + expect_equal(102,ncol(ans)) + expect_equal(10,nrow(ans)) + + expect_equal(rep(16801,10),ans[,101]) + expect_equal(rep(16833,10),ans[,102]) + + expect_equal(16436+c(1:10,25:50,51:100,11:24,365,397),ans[2,]) +}) + +test_that("deterministic_bits",{ + + set.seed(10) + + data(event.data) + e <- event.data[event.data$hasEvent==1,] + e <- rbind(e,event.data[700,]) + + e$randDate[700] <- "2016-01-01" + + + my.data <- EventData(data=e, + subject="subject", + rand.date="randDate", + has.event="hasEvent", + withdrawn="withdrawn", + time="time", + site="site") + + my.fit <- fit(my.data) + + results <- simulate(my.fit,Nsim=50,limit=0.25) + expect_equal(700,length(results@eventQuantiles@median)) + expect_equal(700,length(results@eventQuantiles@upper)) + expect_equal(700,length(results@eventQuantiles@lower)) + expect_equal(700,length(results@recQuantiles@median)) + expect_equal(700,length(results@recQuantiles@upper)) + expect_equal(700,length(results@recQuantiles@lower)) + expect_equal(my.data,results@event.data) + + expect_equal(0.25,results@limit) + expect_equal(0,results@Naccrual) + + expect_equal(sort(my.data@subject.data$rand.date),results@recQuantiles@median) + expect_equal(sort(my.data@subject.data$rand.date),results@recQuantiles@upper) + expect_equal(sort(my.data@subject.data$rand.date),results@recQuantiles@lower) + expect_equal(sort(as.Date(e$eventDate[1:699])),results@eventQuantiles@median[1:699]) + expect_equal(sort(as.Date(e$eventDate[1:699])),results@eventQuantiles@lower[1:699]) + expect_equal(sort(as.Date(e$eventDate[1:699])),results@eventQuantiles@upper[1:699]) + + expect_true(e$time[700] < results@eventQuantiles@median[700]) + + my.accrual <- Generate.PoissonAccrual(start.date="2015-11-29",rate=1) + + expect_warning(results <- simulate(my.fit,Nsim=50,limit=0.25, + accrualGenerator=my.accrual,Naccrual=99)) + + expect_equal(799, length(results@eventQuantiles@median)) + expect_equal(799, length(results@eventQuantiles@lower)) + expect_equal(799, length(results@eventQuantiles@upper)) + + expect_equal(799,length(results@recQuantiles@median)) + + expect_equal(results@eventQuantiles@median,sort(results@eventQuantiles@median)) + expect_equal(results@recQuantiles@median,sort(results@recQuantiles@median)) + expect_true(all(results@eventQuantiles@median <= results@eventQuantiles@upper)) + expect_true(all(results@eventQuantiles@median >= results@eventQuantiles@lower)) +}) + + + +test_that("GetHRs",{ + + x <- GetHRs(HR=1,r=1,N=100) + expect_equal(x,rep(1,100)) + + set.seed(10) + x <- GetHRs(HR=0.5,r=3,N=200) + expect_equal(sort(x),c(rep(0.5,150),rep(1,50))) + + set.seed(11) + y <- GetHRs(HR=0.5,r=3,N=200) + + expect_equal(sort(x),sort(y)) + expect_false(all(x==y)) + + x <- GetHRs(HR=0.5,r=1/3,N=200) + expect_equal(sort(x),c(rep(0.5,50),rep(1,150))) +}) + + +test_that("followup",{ + data(event.data) + my.data <- EventData(data=event.data, + subject="subject", rand.date="randDate", + has.event="hasEvent", withdrawn="withdrawn", + time="time", site="site") + + expect_true(is.infinite(my.data@followup)) + + data.with.follow.up <- EventData(data=event.data, + subject="subject", rand.date="randDate", + has.event="hasEvent", withdrawn="withdrawn", + time="time", site="site",followup=1500) + + expect_equal(1500,data.with.follow.up@followup) + + my.fit <- fit(my.data) + expect_warning(simulate(my.fit,Nsim=20,data=data.with.follow.up)) + + +}) +