diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | DESCRIPTION | 5 | ||||
| -rw-r--r-- | GNUmakefile | 4 | ||||
| -rw-r--r-- | inst/unitTests/Makefile | 15 | ||||
| -rw-r--r-- | tests/doRUnit.R | 42 | ||||
| -rw-r--r-- | tests/testthat.R | 4 | ||||
| -rw-r--r-- | tests/testthat/runit.mkinerrmin.R (renamed from inst/unitTests/runit.mkinerrmin.R) | 0 | ||||
| -rw-r--r-- | tests/testthat/runit.mkinfit.R (renamed from inst/unitTests/runit.mkinfit.R) | 0 | ||||
| -rw-r--r-- | tests/testthat/runit.mkinpredict.R (renamed from inst/unitTests/runit.mkinpredict.R) | 0 | ||||
| -rw-r--r-- | tests/testthat/test_parent_only.R | 48 | 
10 files changed, 58 insertions, 61 deletions
| @@ -9,4 +9,5 @@ vignettes/*.toc  vignettes/.build.timestamp  vignettes/mkin.tex  vignettes/FOCUS_Z.tex +vignettes/compiled_models_cache  mkin.Rcheck diff --git a/DESCRIPTION b/DESCRIPTION index 03976d1e..0477a200 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -3,7 +3,7 @@ Type: Package  Title: Routines for Fitting Kinetic Models with One or More State    Variables to Chemical Degradation Data  Version: 0.9-35 -Date: 2015-02-20 +Date: 2015-05-13  Authors@R: c(person("Johannes", "Ranke", role = c("aut", "cre", "cph"),                       email = "jranke@uni-bremen.de"),               person("Katrin", "Lindenberger", role = "ctb"), @@ -17,7 +17,8 @@ Description: Calculation routines based on the FOCUS Kinetics Report (2006).    for a particular purpose.  Depends: minpack.lm, rootSolve  Imports: FME, deSolve -Suggests: knitr, RUnit +Suggests: knitr, +    testthat  License: GPL  LazyLoad: yes  LazyData: yes diff --git a/GNUmakefile b/GNUmakefile index 126dede1..b731166b 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -18,13 +18,13 @@ SDDIR ?= $(RFSVN)/www/mkin_static  pkgfiles = NEWS \  	   data/* \  	   DESCRIPTION \ -	   inst/unitTests* \  	   inst/staticdocs/README \  	   man/* \  	   NAMESPACE \  	   R/* \  	   README.md \  	   tests/* \ +	   tests/testthat* \  	   TODO \  	   vignettes/* @@ -69,7 +69,7 @@ clean:  test: install-no-vignettes  	cd tests;\ -		"$(RBIN)/Rscript" doRUnit.R +		"$(RBIN)/Rscript" testthat.R  vignettes/mkin.pdf: vignettes/mkin.Rnw  	"$(RBIN)/Rscript" -e "tools::buildVignette(file = 'vignettes/mkin.Rnw', dir = 'vignettes')" diff --git a/inst/unitTests/Makefile b/inst/unitTests/Makefile deleted file mode 100644 index 8d132253..00000000 --- a/inst/unitTests/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -TOP=../.. -PKG=${shell cd ${TOP};pwd} -SUITE=doRUnit.R -R=R - -all: inst test - -inst: # Install package -	cd ${TOP}/..;\ -	${R} CMD INSTALL ${PKG} - -test: # Run unit tests -	export RCMDCHECK=FALSE;\ -	cd ${TOP}/tests;\ -	${R} --vanilla --slave < ${SUITE} diff --git a/tests/doRUnit.R b/tests/doRUnit.R deleted file mode 100644 index 9faee940..00000000 --- a/tests/doRUnit.R +++ /dev/null @@ -1,42 +0,0 @@ -# Adapted from a version around 2.9 of the rcdk package by Rajarshi Guha -if(require("RUnit", quietly=TRUE)) { -  -  pkg <- "mkin" -  path <- system.file(package=pkg, "unitTests") - -  cat("\nRunning unit tests\n") -  print(list(pkg=pkg, getwd=getwd(), pathToUnitTests=path)) -  -  library(package=pkg, character.only=TRUE) -  -  ## Define tests -  testSuite <- defineTestSuite(name=paste(pkg, " Unit Tests"), -                                          dirs=path) -  ## Run -  tests <- runTestSuite(testSuite) -  -  ## Default report name -  pathReport <- file.path(path, "report") -  -  ## Report to stdout and text files -  cat("------------------- UNIT TEST SUMMARY ---------------------\n\n") -  printTextProtocol(tests, showDetails=FALSE) -  printTextProtocol(tests, showDetails=FALSE, -                    fileName=paste(pathReport, "Summary.txt", sep="")) -  printTextProtocol(tests, showDetails=TRUE, -                    fileName=paste(pathReport, ".txt", sep="")) -  -  ## Report to HTML file -  printHTMLProtocol(tests, fileName=paste(pathReport, ".html", sep="")) -  -  ## Return stop() to cause R CMD check stop in case of -  ##  - failures i.e. FALSE to unit tests or -  ##  - errors i.e. R errors -  tmp <- getErrors(tests) -  if(tmp$nFail > 0 | tmp$nErr > 0) { -    stop(paste("\n\nunit testing failed (#test failures: ", tmp$nFail, -               ", #R errors: ",  tmp$nErr, ")\n\n", sep="")) -  } -} else { -  warning("cannot run unit tests -- package RUnit is not available") -} diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 00000000..01c9b7cd --- /dev/null +++ b/tests/testthat.R @@ -0,0 +1,4 @@ +library(testthat) +library(mkin) + +test_check("mkin") diff --git a/inst/unitTests/runit.mkinerrmin.R b/tests/testthat/runit.mkinerrmin.R index 56a33ff9..56a33ff9 100644 --- a/inst/unitTests/runit.mkinerrmin.R +++ b/tests/testthat/runit.mkinerrmin.R diff --git a/inst/unitTests/runit.mkinfit.R b/tests/testthat/runit.mkinfit.R index 8eefb995..8eefb995 100644 --- a/inst/unitTests/runit.mkinfit.R +++ b/tests/testthat/runit.mkinfit.R diff --git a/inst/unitTests/runit.mkinpredict.R b/tests/testthat/runit.mkinpredict.R index 997857ce..997857ce 100644 --- a/inst/unitTests/runit.mkinpredict.R +++ b/tests/testthat/runit.mkinpredict.R diff --git a/tests/testthat/test_parent_only.R b/tests/testthat/test_parent_only.R new file mode 100644 index 00000000..16fc5131 --- /dev/null +++ b/tests/testthat/test_parent_only.R @@ -0,0 +1,48 @@ +context("Fitting of parent only models") + +calc_dev.percent <- function(fitlist, reference) { +  for (i in 1:length(fitlist)) { +    fit <- fitlist[[i]] +    results <- c(fit$bparms.optim,  +                 endpoints(fit)$distimes$DT50, +                 endpoints(fit)$distimes$DT90) +    dev.percent[[i]] <- abs(100 * ((reference - results)/reference)) +  } +  return(dev.percent) +} + +SFO <- mkinmod(parent = list(type = "SFO")) +FOMC <- mkinmod(parent = list(type = "FOMC")) + +test_that("SFO fit for FOCUS A deviates less than 0.1% from median of values from FOCUS report", { +  fits.A.SFO <- list() +  fits.A.SFO[[1]] <- mkinfit("SFO", FOCUS_2006_A, quiet=TRUE) +  fits.A.SFO[[2]] <- mkinfit(SFO, FOCUS_2006_A, quiet=TRUE) +  fits.A.SFO[[3]] <- mkinfit(SFO, FOCUS_2006_A, quiet=TRUE, solution_type = "eigen") +  fits.A.SFO[[4]] <- mkinfit(SFO, FOCUS_2006_A, quiet=TRUE, solution_type = "deSolve") + +  median.A.SFO <- as.numeric(lapply(subset(FOCUS_2006_SFO_ref_A_to_F,  +                                        dataset == "A",  +                                        c(M0, k, DT50, DT90)), "median")) + +  dev.percent <- calc_dev.percent(fits.A.SFO, median.A.SFO) +  expect_equivalent(dev.percent[[1]] < 0.1, rep(TRUE, 4)) +  expect_equivalent(dev.percent[[2]] < 0.1, rep(TRUE, 4)) +  expect_equivalent(dev.percent[[3]] < 0.1, rep(TRUE, 4)) +  expect_equivalent(dev.percent[[4]] < 0.1, rep(TRUE, 4)) +}) + +test_that("SFO fit for FOCUS C deviates less than 0.1% from median of values from FOCUS report", { +  fits.C.SFO <- list() +  fits.C.SFO[[1]] <- mkinfit("SFO", FOCUS_2006_C, quiet=TRUE) +  fits.C.SFO[[2]] <- mkinfit(SFO, FOCUS_2006_C, quiet=TRUE) +  fits.C.SFO[[3]] <- mkinfit(SFO, FOCUS_2006_C, quiet=TRUE, solution_type = "deSolve") + +  median.C.SFO <- as.numeric(lapply(subset(FOCUS_2006_SFO_ref_A_to_F,  +                                          dataset == "C",  +                                          c(M0, k, DT50, DT90)), "median")) +  dev.percent <- calc_dev.percent(fits.C.SFO, median.C.SFO) +  expect_equivalent(dev.percent[[1]] < 0.1, rep(TRUE, 4)) +  expect_equivalent(dev.percent[[2]] < 0.1, rep(TRUE, 4)) +  expect_equivalent(dev.percent[[3]] < 0.1, rep(TRUE, 4)) +}) | 
