---
title: "PKNCA Validation"
author: "Bill Denney"
output:
  rmarkdown::html_vignette:
    toc: yes
    toc_depth: 6
vignette: >
  %\VignetteIndexEntry{PKNCA Validation}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo=TRUE,
                      fig.width=6,
                      fig.height=4)
library(PKNCA)
library(knitr)
library(testthat)
library(dplyr)

run_tests <- dir.exists(system.file(package="PKNCA", "tests/"))
testing_results <- "Tests were not run because tests are not installed."
```

# Introduction

To run the tests, the package must be installed with its tests:

* To install from CRAN:
    * `install.packages(pkgs="PKNCA", INSTALL_opts="--install-tests", type="source")`
* To install from GitHub:
    * `library(devtools)`
    * `install_github("billdenney/pknca", INSTALL_opts="--install-tests")`

Testing and validation that results match in a local environment compared to the original environment is an important part of confirmation that a package works as expected.

Re-running this vignette in your local environment will confirm that local results match those in the original package development.  Test success is confirmed by the existence of no failed tests; warnings are expected during testing (and not shown in this vignette for that reason); and some tests may be skipped, but those are expected as well.

# Summary of Testing

```{r validation, include=FALSE, eval=run_tests}
testresult <- test_package(package="PKNCA")
test_log <- as.data.frame(testresult)
failed_tests <- sum(test_log$failed)
testing_results <-
  if (failed_tests == 0) {
    "All tests passed."
  } else {
    "Some tests failed (see below)."
  }
```

The following sentence is dynamically generated to summarize the testing results:  `r testing_results`

```{r testing_log, results="asis", echo=FALSE, eval=run_tests}
cat("# Testing Log\n\n")

all_contexts <- unique(test_log$context)
test_log_printing <-
  test_log %>%
  select(context, file, test, nb, failed) %>%
  rename(`Testing Filename`=file,
         `Test Description`=test,
         `Number of Tests`=nb,
         `Number of Failed Tests`=failed)

for (current_context in all_contexts) {
  current_log <-
    test_log_printing[
      test_log_printing$context %in% current_context,
      setdiff(names(test_log_printing), "context"), # context is in the header
      drop=FALSE]
  cat("## ", current_context, "\n\n")
  print(kable(x=current_log,
              row.names=FALSE))
  cat("\n\n")
}
```

# Session Information

```{r session_info}
Sys.Date()
sessionInfo()
```