Nothing
# rm(list=ls())
# library(testthat)
# test_file("tests/testthat/test-oxy_crit.R")
# covr::file_coverage("R/oxy_crit.ft.R", "tests/testthat/test-oxy_crit.ft.R")
# cvr <- covr::package_coverage()
# covr::report(cvr)
capture.output({ ## stops printing of outputs on assigning
if (!identical(Sys.getenv("NOT_CRAN"), "true")) return()
skip_on_cran()
# small testing dataset - data.table
squid <- squid.rd[seq.int(1, nrow(squid.rd), 100), ]
# pure data.frame
squid_df <- as.data.frame(squid.rd[seq.int(1, nrow(squid.rd), 100), ])
# rate dataset
squid_rate <- generate_mrdf(squid, 30)
# inspect object
squid_insp <- inspect(squid)
# inspect object - multiple columns
urch_insp <- suppressWarnings(inspect(urchins.rd, 1, 2:6))
test_that("oxy_crit - works with default values", {
expect_error(suppressMessages(oxy_crit(squid, plot = F)),
regexp = NA)
})
test_that("oxy_crit - accepts inspect objects", {
sq_i <- inspect(squid, plot = F)
expect_error(oxy_crit(sq_i, plot = F),
regexp = NA)
})
test_that("oxy_crit - accepts data frame objects", {
expect_error(oxy_crit(as.data.frame(squid), plot = F),
regexp = NA)
expect_error(oxy_crit(squid_df, plot = F),
regexp = NA)
})
test_that("oxy_crit - accepts data table objects", {
expect_error(oxy_crit(squid, plot = F),
regexp = NA)
})
test_that("oxy_crit - stops if not a dataframe", {
expect_error(oxy_crit(as.matrix(squid), plot=F),
regexp = "oxy_crit: Input must be an 'inspect' or data.frame object.")
})
test_that("oxy_crit - stops if you try to do oxygen~rate analysis with inspect object", {
expect_error(oxy_crit(squid_insp, oxygen = 1, rate = 2, plot=F),
regexp = "oxy_crit: 'inspect' input detected. Rate~Oxygen analyses cannot be conducted with 'inspect' objects!")
})
test_that("oxy_crit - issues warning with inspect object and column inputs", {
expect_warning(oxy_crit(squid_insp, time = 1, oxygen = 2, rate = NULL, plot=F),
regexp = "oxy_crit: 'inspect' input detected. Column inputs ignored. These will have been specified in 'inspect'.")
expect_warning(oxy_crit(squid_insp, time = 1, oxygen = NULL, rate = NULL, plot=F),
regexp = "oxy_crit: 'inspect' input detected. Column inputs ignored. These will have been specified in 'inspect'.")
expect_warning(oxy_crit(squid_insp, time = NULL, oxygen = NULL, rate = 1, plot=F),
regexp = "oxy_crit: 'inspect' input detected. Column inputs ignored. These will have been specified in 'inspect'.")
expect_warning(oxy_crit(squid_insp, time = 2, oxygen = NULL, rate = 1, plot=F),
regexp = "oxy_crit: 'inspect' input detected. Column inputs ignored. These will have been specified in 'inspect'.")
})
test_that("oxy_crit - issues warning with inspect object containing multiple columns", {
expect_warning(oxy_crit(urch_insp, plot=F),
regexp = "oxy_crit: Multiple columns of oxygen data found in 'inspect' input.")
})
test_that("oxy_crit - stops if method not recognised", {
expect_error(oxy_crit(squid, method = "text", plot=F),
regexp = "oxy_crit: 'method' input not recognised.")
})
test_that("oxy_crit - stops if width out of range", {
expect_error(oxy_crit(squid, width = 1000, plot=F),
regexp = "oxy_crit: 'width' input should be between 0.001 to 0.999, representing a proportion of the total data length.")
})
test_that("oxy_crit - stops if time and rate columns entered", {
expect_error(oxy_crit(squid, time = 1, rate = 2, plot=F),
regexp = "oxy_crit: Inputs should be 'time' and 'oxygen' columns, or 'oxygen' and 'rate' columns.")
})
test_that("oxy_crit - stops if oxygen/rate/time columns conflict or are out of range", {
expect_error(oxy_crit(squid, time = 1, oxygen = 3, plot=F),
regexp = "one or more column inputs are out of range of allowed data columns.")
expect_error(oxy_crit(squid, time = 3, oxygen = 2, plot=F),
regexp = "one or more column inputs are out of range of allowed data columns.")
expect_error(oxy_crit(squid, rate = 3, oxygen = 2, plot=F),
regexp = "one or more column inputs are out of range of allowed data columns.")
expect_error(oxy_crit(squid, time = 1, oxygen = 1, plot=F),
regexp = "one or more column inputs conflicts with other inputs.")
expect_error(oxy_crit(squid, rate = 2, oxygen = 2, plot=F),
regexp = "one or more column inputs conflicts with other inputs.")
expect_error(oxy_crit(urchins.rd, time = 1:2, oxygen = 3, plot=F),
regexp = "cannot enter more than 1 column\\(s) with this input or this dataset.")
expect_error(oxy_crit(urchins.rd, time = 3, oxygen = 1:2, plot=F),
regexp = "cannot enter more than 1 column\\(s) with this input or this dataset.")
expect_error(oxy_crit(urchins.rd, rate = 3:4, oxygen = 2, plot=F),
regexp = "cannot enter more than 1 column\\(s) with this input or this dataset.")
})
test_that("oxy_crit - applies defaults of time=1, oxygen=2", {
expect_is(oxy_crit(squid, plot=F),
"oxy_crit")
expect_equal(oxy_crit(squid, plot=F)$result.intercept,
oxy_crit(squid, time = 1, oxygen = 2, plot=F)$result.intercept)
})
test_that("oxy_crit - correctly identifies column name strings", {
# single time and oxygen columns work without error
expect_error(oxy_crit(squid, time = "Time", oxygen = "Oxygen", plot=F),
NA)
# same as using numbers
# Everything except the $call and $inputs should be the same
expect_equal(oxy_crit(squid, time = "Time", oxygen = "Oxygen", plot=F)[3:10],
oxy_crit(squid, time = 1, oxygen = 2, plot=F)[3:10])
# rate
expect_error(oxy_crit(squid_rate, oxygen = "x", rate = "y", plot = F),
NA)
expect_equal(oxy_crit(squid_rate, oxygen = "x", rate = "y", plot = F)[3:10],
oxy_crit(squid_rate, oxygen = 1, rate = 2, plot = F)[3:10])
})
test_that("oxy_crit - thin input correctly applied in Broken-Stick", {
thin <- 5000
res <- oxy_crit(squid.rd, method = "bsr", thin = thin, plot=F)
expect_equal(nrow(res$results),
thin - 4) # always minus 4 for some reason....
thin <- 2000
res <- oxy_crit(squid.rd, method = "bsr", thin = thin, plot=F)
expect_equal(nrow(res$results),
thin - 4)
})
test_that("oxy_crit - works with segmented method", {
expect_error(oxy_crit(squid, method = "segmented", plot=F),
NA)
})
test_that("oxy_crit - test exact value outputs", {
# results as of July 2021, in case we do something that changes them
expect_equal(round(oxy_crit(squid, plot=F)$crit$crit.intercept, 4),
2.6003)
expect_equal(round(oxy_crit(squid, plot=F)$crit$crit.midpoint, 4),
2.5944)
expect_equal(round(oxy_crit(squid, method = "segmented", plot=F)$crit, 2),
2.60)
})
test_that("oxy_crit - works with oxygen~rate data", {
expect_error(oxy_crit(squid_rate, oxygen = 1, rate = 2, plot = F),
regexp = NA)
expect_equal(oxy_crit(squid_rate, oxygen = 1, rate = 2, plot = F)$crit$crit.intercept,
2.598025, tolerance = 6)
})
test_that("oxy_crit - works with multi column data frames", {
expect_error(oxy_crit(urchins.rd, time = 1, oxygen = 12, plot = F), regexp = NA)
expect_error(oxy_crit(urchins.rd, time = 11, oxygen = 16, plot = F), regexp = NA)
})
test_that("oxy_crit - plot default works", {
expect_error(oxy_crit(squid, plot = T),
NA)
})
test_that("oxy_crit - oxy_crit S3 generics work with both oxygen/time and rate/oxygen inputs,
and both methods, export, and panel options", {
# oxygen
pcr <- oxy_crit(squid, plot = F)
expect_output(print(pcr))
expect_output(summary(pcr))
expect_is(summary(pcr, export = TRUE),
"data.frame")
expect_error(plot(pcr), regexp = NA)
expect_error(plot(pcr, panel = 1), regexp = NA)
expect_error(plot(pcr, panel = 2), regexp = NA)
expect_error(plot(pcr, panel = 3),
"plot.oxy_crit: 'panel' input should be 1 to 2 or 'NULL' for both.")
# rate
pcr <- oxy_crit(squid_rate, oxygen = 1, rate = 2, plot = F)
expect_output(print(pcr))
expect_output(summary(pcr))
expect_is(summary(pcr, export = TRUE),
"data.frame")
expect_error(plot(pcr), regexp = NA)
expect_error(plot(pcr, panel = 1), regexp = NA)
expect_error(plot(pcr, panel = 2), regexp = NA)
expect_error(plot(pcr, panel = 3),
"plot.oxy_crit: 'panel' input should be 1 to 2 or 'NULL' for both.")
# segmented method
# oxygen
pcr <- oxy_crit(squid, method = "segmented", plot = F)
expect_output(print(pcr))
expect_output(summary(pcr))
expect_is(summary(pcr, export = TRUE),
"data.frame")
expect_error(plot(pcr), regexp = NA)
expect_error(plot(pcr, panel = 1), regexp = NA)
expect_error(plot(pcr, panel = 2), regexp = NA)
expect_error(plot(pcr, panel = 3),
"plot.oxy_crit: 'panel' input should be 1 to 2 or 'NULL' for both.")
# rate
pcr <- oxy_crit(squid_rate, method = "segmented", oxygen = 1, rate = 2, plot = F)
expect_output(print(pcr))
expect_output(summary(pcr))
expect_is(summary(pcr, export = TRUE),
"data.frame")
expect_error(plot(pcr), regexp = NA)
expect_error(plot(pcr, panel = 1), regexp = NA)
expect_error(plot(pcr, panel = 2), regexp = NA)
expect_error(plot(pcr, panel = 3),
"plot.oxy_crit: 'panel' input should be 1 to 2 or 'NULL' for both.")
})
test_that("oxy_crit - mean S3 returns message", {
expect_message(mean(oxy_crit(squid, plot = F)),
"oxy_crit: mean\\() is not available for 'oxy_crit' objects.")
})
# This fails on R CMD CHK...
# Pretty sure not allowed on CRAN
# May also fail on Github
# https://stackoverflow.com/questions/50571325/r-cran-check-fail-when-using-parallel-functions
# test_that("oxy_crit - parallel code works", {
# skip_on_cran()
# expect_error(oxy_crit(squid, parallel = T, plot=F),
# regexp = NA)
# })
test_that("oxy_crit - plot defaults are correctly restored", {
# reset plotting first
dev.off()
# save par before
parb4 <- par(no.readonly = TRUE)
# now use a fn with plot
suppressWarnings(oxy_crit(squid, plot = F))
# save after
paraft <- par(no.readonly = TRUE)
# mai is something changed from the default,
# so if par settings not restored properly this should fail
expect_identical(parb4$mai,
paraft$mai)
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.