Nothing
# rm(list=ls())
# library(testthat)
# test_file("tests/testthat/test-calc_rate.ft.R")
# covr::file_coverage("R/calc_rate.ft.R", "tests/testthat/test-calc_rate.ft.R")
# cvr <- covr::package_coverage()
# covr::report(cvr)
capture.output({ ## stops printing console outputs on assigning
if (!identical(Sys.getenv("NOT_CRAN"), "true")) return()
skip_on_cran()
# Create testing objects --------------------------------------------------
#
{
df <- data.frame(time = flowthrough.rd[[2]], delta = flowthrough.rd[[3]])
## inspect.ft objects
insp.ft.obj.outO2.1col.inO2.1col<- suppressWarnings(suppressMessages(inspect.ft(flowthrough_mult.rd, time = 1,
out.oxy = 2, in.oxy = 6, plot = F)))
insp.ft.obj.outO2.1col.inO2.value <- suppressWarnings(suppressMessages(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2,
in.oxy.value = 9.05, delta.oxy = NULL, plot = F)))
insp.ft.obj.delta.1col <- suppressWarnings(suppressMessages(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = NULL,
in.oxy = NULL, delta.oxy = 10, plot = F)))
insp.ft.obj.outO2.multcols.inO2.multcols <-
suppressWarnings(suppressMessages(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:4, in.oxy = 6:8, plot = F)))
insp.ft.obj.outO2.multcols.inO2.value <-
suppressWarnings(suppressMessages(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:4, in.oxy.value = 9.05, plot = F)))
insp.ft.obj.delta.multcols <-
suppressWarnings(suppressMessages(inspect.ft(flowthrough_mult.rd, time = 1, delta.oxy = 10:12, plot = F)))
## calc_rate.ft objects for testing plotting, printing etc.
crft.obj.value <- calc_rate.ft(-0.8,
flowrate = 2, plot = F)
crft.obj.vector <- calc_rate.ft(flowthrough.rd$oxy.delta,
flowrate = 2, plot = F)
crft.obj.df <- calc_rate.ft(data.frame(time = flowthrough.rd$oxy.out,
delta = flowthrough.rd$oxy.in),
flowrate = 2, plot = F)
crft.obj.1rate <- calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = 5, to = 900, by = "row",
flowrate = 2, plot = F)
crft.obj.multrates <- calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = c(5, 1005, 2005), to = c(900, 1900, 2900),by = "row",
flowrate = 2, plot = F)
crft.obj.multrates.many <- calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = c(100:201), to = c(1000:1101),by = "row",
flowrate = 2, plot = F)
crft.obj.1rate.delta.only <- calc_rate.ft(insp.ft.obj.delta.1col,
from = 5, to = 900,by = "row",
flowrate = 2, plot = F)
crft.obj.multrate.delta.only <- calc_rate.ft(insp.ft.obj.delta.1col,
from = c(5, 1005, 2005), to = c(900, 1900, 2900),by = "row",
flowrate = 2, plot = F)
}
# 'flowrate' input --------------------------------------------------------
test_that("calc_rate.ft - stops if 'flowrate' input malformed", {
# non-numeric
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
flowrate = "string", plot = F),
regexp = "calc_rate.ft: 'flowrate' input is not numeric.")
# null
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
flowrate = NULL, plot = F),
regexp = "calc_rate.ft: 'flowrate' input is required.")
# too long
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
flowrate = c(1,2), plot = F),
regexp = "calc_rate.ft: 'flowrate' only 1 inputs allowed.")
})
test_that("calc_rate.ft - accepts numeric 'flowrate'", {
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1, plot = F),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.0111, plot = F),
regexp = NA)
})
# 'x' input checks --------------------------------------------------------
# single numeric 'x' input ------------------------------------------------
test_that("calc_rate.ft - accepts single numeric 'x' input", {
expect_error(calc_rate.ft(-0.8, flowrate = 1.5, plot = F),
regexp = NA)
expect_error(calc_rate.ft(0.8, flowrate = 1.5, plot = F),
regexp = NA)
expect_message(calc_rate.ft(0.8, flowrate = 1.5, plot = F),
regexp = "calc_rate.ft: Calculating rate from delta oxygen.")
})
test_that("calc_rate.ft - expected output with single numeric 'x' input", {
expect_equal(calc_rate.ft(-0.8, flowrate = 1.5, plot = F)$rate,
-0.8 * 1.5)
expect_equal(calc_rate.ft(0.8, flowrate = 1.5, plot = F)$rate,
0.8 * 1.5)
})
test_that("calc_rate.ft - delta output is correct with single numeric 'x' input", {
expect_equal(calc_rate.ft(-0.8, flowrate = 1.5, plot = F)$delta,
-0.8)
expect_equal(calc_rate.ft(0.8, flowrate = 1.5, plot = F)$delta,
0.8)
})
test_that("calc_rate.ft - single numeric 'x' input, message that other inputs ignored.", {
expect_message(calc_rate.ft(-0.8, flowrate = 1.5, from = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(-0.8, flowrate = 1.5, to = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(-0.8, flowrate = 1.5, by = "row",
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(-0.8, flowrate = 1.5, width = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(-0.8, flowrate = 1.5, width = 10, by = "row", from = 2,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
})
test_that("calc_rate.ft - single numeric 'x' input, message that 'plot = TRUE' input ignored and does not produce output.", {
expect_message(calc_rate.ft(-0.8, flowrate = 1.5, from = 10,
plot = TRUE),
regexp = "calc_rate.ft: Plot only available for 'inspect.ft' inputs.")
expect_output(calc_rate.ft(-0.8, flowrate = 1.5, from = 10,
plot = TRUE),
NA)
})
# vector 'x' input --------------------------------------------------------
test_that("calc_rate.ft - accepts numeric vector 'x' input", {
expect_error(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, plot = F),
regexp = NA)
expect_error(calc_rate.ft(c(90,100), flowrate = 1.5, plot = F),
regexp = NA)
expect_error(calc_rate.ft(c(flowthrough.rd$oxy.delta), flowrate = 1.5,
plot = F),
regexp = NA)
})
test_that("calc_rate.ft - expected output with dual numeric 'x' input", {
expect_equal(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, plot = F)$rate,
(c(7.5, 8.0)*1.5))
expect_equal(calc_rate.ft(c(90, 100), flowrate = 1.5, plot = F)$rate,
(c(90, 100)*1.5))
expect_equal(calc_rate.ft(c(flowthrough.rd$oxy.delta), flowrate = 1.5,
plot = F)$rate,
(flowthrough.rd$oxy.delta*1.5))
})
test_that("calc_rate.ft - dual numeric 'x' input, message that other inputs ignored.", {
expect_message(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, from = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, to = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, by = "row",
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, width = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, width = 10, by = "row", from = 2,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
})
test_that("calc_rate.ft - dual numeric 'x' input, message that 'plot = TRUE' input ignored and does not produce output.", {
expect_message(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, from = 10,
plot = TRUE),
regexp = "calc_rate.ft: Plot only available for 'inspect.ft' inputs.")
expect_output(calc_rate.ft(c(7.5, 8.0), flowrate = 1.5, from = 10,
plot = TRUE),
NA)
})
# data.frame 'x' input --------------------------------------------------------
test_that("calc_rate.ft - accepts data.frame 'x' input", {
expect_error(calc_rate.ft(df, flowrate = 1.5, plot = F),
regexp = NA)
})
test_that("calc_rate.ft - expected output with data.frame 'x' input", {
expect_equal(calc_rate.ft(df, flowrate = 1.5, plot = F)$rate,
((flowthrough.rd[[2]]-flowthrough.rd[[3]])*1.5))
})
test_that("calc_rate.ft - data.frame 'x' input, message that other inputs ignored.", {
expect_message(calc_rate.ft(df, flowrate = 1.5, from = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(df, flowrate = 1.5, to = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(df, flowrate = 1.5, by = "row",
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(df, flowrate = 1.5, width = 10,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
expect_message(calc_rate.ft(df, flowrate = 1.5, width = 10, by = "row", from = 2,
plot = F),
regexp = "calc_rate.ft: Requires only 'x' and 'flowrate'. Additional inputs ignored.")
})
test_that("calc_rate.ft - data.frame 'x' input, message that 'plot = TRUE' input ignored and does not produce output.", {
expect_message(calc_rate.ft(df, flowrate = 1.5, from = 10,
plot = TRUE),
regexp = "calc_rate.ft: Plot only available for 'inspect.ft' inputs.")
expect_output(calc_rate.ft(df, flowrate = 1.5, from = 10,
plot = TRUE),
NA)
})
# disallowed inputs -------------------------------------------------------
# stop if inspect obj
test_that("calc_rate.ft - stops with `inspect` 'x' input", {
expect_error(calc_rate.ft(
suppressWarnings(suppressMessages(inspect(flowthrough.rd, plot = F))), flowrate = 1.5, plot = F),
"calc_rate.ft: Function does not accept 'inspect' objects. Please process the data via 'inspect.ft' instead.")
})
test_that("calc_rate.ft - stops with any other disallowed 'x' input", {
# df of 2 or more columns
expect_error(calc_rate.ft(flowthrough.rd, flowrate = 1.5, plot = F),
"calc_rate.ft: 'x' must be an `inspect.ft` object, a numeric value or vector, or 2-column data.frame. See Help.")
# string
expect_error(calc_rate.ft("string", flowrate = 1.5, plot = T),
"calc_rate.ft: 'x' must be an `inspect.ft` object, a numeric value or vector, or 2-column data.frame. See Help.")
# string
expect_error(calc_rate.ft(list(x = 1:10, y = 11:20), flowrate = 1.5, plot = T),
"calc_rate.ft: 'x' must be an `inspect.ft` object, a numeric value or vector, or 2-column data.frame. See Help.")
})
# 'by' input --------------------------------------------------------------
test_that("calc_rate.ft - stops if 'by' input not 'time' or 'row'.", {
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 10,
by = "string", plot = F),
regexp = "calc_rate.ft: 'by' input not valid or not recognised.")
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 10,
by = 123, plot = F),
regexp = "calc_rate.ft: 'by' input not valid or not recognised.")
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 10,
by = "oxygen", plot = F),
regexp = "calc_rate.ft: 'by' input not valid or not recognised.")
})
test_that("calc_rate.ft - accepts correct 'by' inputs", {
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 10,
by = "time", plot = F),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 10,
by = "Time", plot = F),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 10,
by = "row", plot = F),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 10,
by = "Row", plot = F),
regexp = NA)
})
test_that("calc_rate.ft - applies default 'by = 'time' correctly", {
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 0.05, to = 62.28,
by = NULL, plot = F)$rate,
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[3:3737]*1.5))
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
by = NULL, plot = F)$inputs$by,
"time")
})
# from/to input -----------------------------------------------------------
test_that("calc_rate.ft - stops if 'from' and 'to' are unequal lengths", {
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2:3, to = 10,
by = "time", plot = F),
regexp = "calc_rate.ft: 'from' and 'to' have unequal lengths.")
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 1:9, to = 10:40,
by = "time", plot = F),
regexp = "calc_rate.ft: 'from' and 'to' have unequal lengths.")
})
test_that("calc_rate.ft - stops if 'from' or 'to' values out of data ranges", {
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 1000, to = 10,
by = "time", plot = F),
regexp = "calc_rate.ft: Some 'from' time values are higher than the values present in 'x'.")
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 0,
by = "time", plot = F),
regexp = "calc_rate.ft: Some 'to' time values are lower than the values present in 'x'.")
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 4000, to = 5000,
by = "row", plot = F),
regexp = "calc_rate.ft: Some 'from' row numbers are beyond the number of rows present in 'x'.")
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 200:210, to = 100:110,
by = "row", plot = F),
regexp = "calc_rate.ft: Some 'from' values are greater than the paired values in 'to'.")
})
test_that("calc_rate.ft - if 'from' or 'to' values below or above data bounds, use lowest/highest vsalues instead", {
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 0.01, to = 10,
by = "time", plot = F),
regexp = "calc_rate.ft: Some 'from' time values are lower than the values present in 'x'. The lowest time value will be used instead.")
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 0.01, to = 10,
by = "time", plot = F)$summary$time,
0.02)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 0, to = 10,
by = "row", plot = F),
regexp = "calc_rate.ft: Some 'from' rows are lower than the values present in 'x'. The first row will be used instead.")
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 0, to = 10,
by = "row", plot = F)$summary$row,
1)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 0.02, to = 70,
by = "time", plot = F),
regexp = "calc_rate.ft: Some 'to' time values are higher than the values present in 'x'. The highest time value will be used instead.")
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 0.02, to = 70,
by = "time", plot = F)$summary$endtime,
62.33)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 4000,
by = "row", plot = F),
regexp = "calc_rate.ft: Some 'to' rows are higher than the values present in 'x'. The last row will be used instead.")
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, from = 2, to = 4000,
by = "row", plot = F)$summary$endrow,
3740)
})
# width input -------------------------------------------------------------
test_that("calc_rate.ft - with 'width' input, correct message.", {
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = 2,
by = "time",
plot = F),
regexp = "calc_rate.ft: 'width' can only be used with 'by = \"row\"'.")
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = 2,
by = "row",
plot = F),
regexp = "calc_rate.ft: Rates determined using a rolling 'width' of 2 row values.")
})
test_that("calc_rate.ft - with 'width' input and from/to inputs, correct message that they are ignored.", {
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = 2,
from = 2, to = 10,
by = "time",
plot = F),
regexp = "calc_rate.ft: 'width' can only be used with 'by = \"row\"'.")
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = 2,
from = 2:5, to = 10:13,
by = "row",
plot = F),
regexp = "calc_rate.ft: A rolling 'width' has been specified, therefore 'from' and 'to' inputs will be ignored.")
})
test_that("calc_rate.ft - 'width' input correctly verified.", {
# numeric
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = "string",
by = "row",
plot = F),
regexp = "calc_rate.ft: 'width' - input is not numeric.")
# single value
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = 1:2,
by = "row",
plot = F),
regexp = "calc_rate.ft: 'width' - only 1 inputs allowed.")
})
test_that("calc_rate.ft - 'width' outputs correct results.", {
## correct number of results in summary
wd <- 100
expect_equal(nrow(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = wd,
by = "row",
plot = F)$summary),
nrow(insp.ft.obj.outO2.1col.inO2.1col$dataframe)-wd+1)
## correct number of results in rate
expect_equal(length(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = wd,
by = "row",
plot = F)$rate),
nrow(insp.ft.obj.outO2.1col.inO2.1col$dataframe)-wd+1)
## first result should equal this
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5,
width = wd,
by = "row",
plot = F)$rate[1],
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[1:(wd)])*1.5)
})
# inspect.ft 'x' input --------------------------------------------------------
test_that("calc_rate.ft - accepts 'inspect.ft' input, gives correct messages and warnings.", {
# single columns in inspect.ft object
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F),
NA)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F),
"calc_rate.ft: Calculating rate from 'inspect.ft' object.")
# multiple columns in inspect.ft object
expect_error(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F)),
NA)
expect_message(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F)),
"calc_rate.ft: Calculating rate from 'inspect.ft' object.")
expect_warning(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F),
"calc_rate.ft: Multiple columns of delta oxygen data found in input.")
})
test_that("calc_rate.ft - if 'from' and 'to' are NULL, defaults to using all data - by = 'time'.", {
# from
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = 900, by = "time")$inputs$from,
0.02)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = 900, by = "time")$summary$from,
"calc_rate.ft: 'from' input NULL. Applying default 'from' of first time value.")
# to
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = 1, to = NULL, by = "time")$inputs$to,
62.33)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = 1, to = NULL, by = "time")$summary$to,
"calc_rate.ft: 'to' input NULL. Applying default 'to' of last time value.")
# both
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = NULL, by = "time")$inputs$from,
0.02)
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = NULL, by = "time")$inputs$to,
62.33)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = NULL, by = "time")$summary$to,
"calc_rate.ft: 'from' and 'to' inputs NULL. Applying default of calculating rate from entire dataset.")
})
test_that("calc_rate.ft - if 'from' and 'to' are NULL, defaults to using all data - by = 'row'.", {
# from
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = 900, by = "row")$inputs$from,
1)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = 900, by = "row")$inputs$from,
"calc_rate.ft: 'from' input NULL. Applying default 'from' of first row.")
# to
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = 1, to = NULL, by = "row")$inputs$to,
3740)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = 1, to = NULL, by = "row")$inputs$to,
"calc_rate.ft: 'to' input NULL. Applying default 'to' of last row.")
# both
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = NULL, by = "row")$inputs$from,
1)
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = NULL, by = "row")$inputs$to,
3740)
expect_message(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = NULL, to = NULL, by = "row")$inputs$to,
"calc_rate.ft: 'from' and 'to' inputs NULL. Applying default of calculating rate from entire dataset.")
})
# insp.ft.obj.outO2.1col.inO2.1col
test_that("calc_rate.ft - accepts and gives correct results for inspect.ft obj with single columns of in.oxy and out.oxy.", {
from = 100
to = 400
# single columns in inspect.ft object
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"),
NA)
## check result should equal this
## all rates
## by time (+1 to from and to for time offset from row)
## by row
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate[1],
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
# mean rate
## by time (+1 to from and to for time offset from row)
## by row
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
## multiple from and to
from = c(100,200,300)
to = c(400,500,600)
# single columns in inspect.ft object
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"),
NA)
## check result should equal this
## all rates
## by time (+1 to from and to for time offset from row)
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate[1],
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5)
## all
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
c(
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5)
)
## mean of all
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
(c(
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.1col$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5)
))
})
# insp.ft.obj.outO2.1col.inO2.value
test_that("calc_rate.ft - accepts and gives correct results for inspect.ft obj with single column of out.oxy and in.oxy.value.", {
from = 100
to = 400
# single columns in inspect.ft object
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"),
NA)
## check result should equal this
## all rates
## by row
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate[1],
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
# mean rate
## by row
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
## multiple from and to
from = c(100,200,300)
to = c(400,500,600)
# single columns in inspect.ft object
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"),
NA)
## check result should equal this
## all rates
## by time ( to from and to for time offset from row)
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate[1],
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5)
## all
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
c(
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5)
)
## mean of all
expect_equal(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
(c(
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.1col.inO2.value$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5)
))
})
# insp.ft.obj.delta.1col
test_that("calc_rate.ft - accepts and gives correct results for inspect.ft obj with single column of delta oxygen data", {
from = 100
to = 400
# single columns in inspect.ft object
expect_error(calc_rate.ft(insp.ft.obj.delta.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"),
NA)
## check result should equal this
## all rates
## by row
expect_equal(calc_rate.ft(insp.ft.obj.delta.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate[1],
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from):(to)])*1.5)
# mean rate
## by row
expect_equal(calc_rate.ft(insp.ft.obj.delta.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from):(to)])*1.5)
## multiple from and to
from = c(100,200,300)
to = c(400,500,600)
# single columns in inspect.ft object
expect_error(calc_rate.ft(insp.ft.obj.delta.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"),
NA)
## check result should equal this
## all rates
## by time ( to from and to for time offset from row)
expect_equal(calc_rate.ft(insp.ft.obj.delta.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate[1],
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from[1]):(to[1])])*1.5)
## all
expect_equal(calc_rate.ft(insp.ft.obj.delta.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
c(
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from[3]):(to[3])])*1.5)
)
## mean of all
expect_equal(calc_rate.ft(insp.ft.obj.delta.1col, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")$rate,
(c(
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.delta.1col$data$delta.oxy[[1]][(from[3]):(to[3])])*1.5)
))
})
# insp.ft.obj.outO2.multcols.inO2.multcols
test_that("calc_rate.ft - accepts and gives correct results for inspect.ft obj with multiple columns of both in.oxy and out.oxy data", {
from = 100
to = 400
# single columns in inspect.ft object
expect_error(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")),
NA)
## check result should equal this
## all rates
## by row
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate[1],
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
# mean rate
## by row
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
## multiple from and to
from = c(100,200,300)
to = c(400,500,600)
# single columns in inspect.ft object
expect_error(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")),
NA)
## check result should equal this
## all rates
## by time ( to from and to for time offset from row)
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate[1],
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5)
## all
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
c(
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5))
## mean of all
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
(c(
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.multcols$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5)))
})
# insp.ft.obj.outO2.multcols.inO2.value
test_that("calc_rate.ft - accepts and gives correct results for inspect.ft obj with multiple columns of out.oxy data and in.oxy.value", {
from = 100
to = 400
# single columns in inspect.ft object
expect_error(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")),
NA)
## check result should equal this
## all rates
## by row
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate[1],
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
# mean rate
## by row
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from):(to)])*1.5)
## multiple from and to
from = c(100,200,300)
to = c(400,500,600)
# single columns in inspect.ft object
expect_error(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")),
NA)
## check result should equal this
## all rates
## by time ( to from and to for time offset from row)
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate[1],
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5)
## all
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
c(
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5))
## mean of all
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.outO2.multcols.inO2.value, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
(c(
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.outO2.multcols.inO2.value$dataframe$delta.oxy.calc.1[(from[3]):(to[3])])*1.5)))
})
# insp.ft.obj.delta.multcols
test_that("calc_rate.ft - accepts and gives correct results for inspect.ft obj with multiple columns of delta.oxy data", {
from = 100
to = 400
# single columns in inspect.ft object
expect_error(suppressWarnings(calc_rate.ft(insp.ft.obj.delta.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")),
NA)
## check result should equal this
## all rates
## by row
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.delta.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate[1],
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from):(to)])*1.5)
# mean rate
## by row
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.delta.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from):(to)])*1.5)
## multiple from and to
from = c(100,200,300)
to = c(400,500,600)
# single columns in inspect.ft object
expect_error(suppressWarnings(calc_rate.ft(insp.ft.obj.delta.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row")),
NA)
## check result should equal this
## all rates
## by time ( to from and to for time offset from row)
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.delta.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate[1],
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from[1]):(to[1])])*1.5)
## all
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.delta.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
c(
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from[3]):(to[3])])*1.5))
## mean of all
expect_equal(suppressWarnings(calc_rate.ft(insp.ft.obj.delta.multcols, flowrate = 1.5, plot = F,
from = from, to = to, by = "row"))$rate,
(c(
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from[1]):(to[1])])*1.5,
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from[2]):(to[2])])*1.5,
mean(insp.ft.obj.delta.multcols$data$delta.oxy[[1]][(from[3]):(to[3])])*1.5)))
})
# S3 checks -----------------------------------------------------------
test_that("calc_rate.ft outputs plot", {
## plots when functions runs
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
flowrate = 2, plot = TRUE),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.delta.1col,
flowrate = 2, plot = TRUE),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.value,
flowrate = 2, plot = TRUE),
regexp = NA)
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(plot(crft.obj.1rate),
regexp = NA)
expect_output(plot(crft.obj.1rate),
regexp = "calc_rate.ft: Plotting rate from position 1 of 1")
expect_error(plot(crft.obj.multrates),
regexp = NA)
expect_output(plot(crft.obj.multrates),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3")
expect_error(plot(crft.obj.multrates.many),
regexp = NA)
expect_output(plot(crft.obj.multrates.many),
regexp = "calc_rate.ft: Plotting rate from position 1 of")
expect_output(plot(crft.obj.multrates),
regexp = "calc_rate.ft: Plotting rate from position 1 of")
expect_error(plot(crft.obj.1rate.delta.only),
regexp = NA)
expect_output(plot(crft.obj.1rate.delta.only),
regexp = "calc_rate.ft: Plotting rate from position 1 of")
expect_error(plot(crft.obj.multrate.delta.only),
regexp = NA)
expect_output(plot(crft.obj.multrate.delta.only),
regexp = "calc_rate.ft: Plotting rate from position 1 of")
expect_output(plot(crft.obj.multrate.delta.only),
regexp = "calc_rate.ft: Plotting rate from position 1 of")
})
test_that("calc_rate.ft output plot stops if input is not an inspect.ft object", {
# crft.obj.value
# crft.obj.vector
# crft.obj.df
expect_error(plot(crft.obj.value),
regexp = "calc_rate.ft: Plot only available for 'inspect.ft' inputs.")
expect_error(plot(crft.obj.vector),
regexp = "calc_rate.ft: Plot only available for 'inspect.ft' inputs.")
expect_error(plot(crft.obj.df),
regexp = "calc_rate.ft: Plot only available for 'inspect.ft' inputs.")
})
test_that("calc_rate.ft output plots when 'pos' is used", {
## plots when functions runs
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, pos = 2),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.delta.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, pos = 2),
regexp = NA)
## objects
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(plot(crft.obj.multrates, pos = 2),
regexp = NA)
expect_output(plot(crft.obj.multrates),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ...")
expect_output(plot(crft.obj.multrates, pos = 2),
regexp = "calc_rate.ft: Plotting rate from position 2 of 3 ...")
expect_error(plot(crft.obj.multrate.delta.only, pos = 2),
regexp = NA)
expect_output(plot(crft.obj.multrate.delta.only),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ...")
expect_output(plot(crft.obj.multrate.delta.only, pos = 2),
regexp = "calc_rate.ft: Plotting rate from position 2 of 3 ...")
})
test_that("calc_rate.ft output plot stops when 'pos' is out of range", {
## plots when functions runs
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, pos = 9),
regexp = "calc_rate.ft: Invalid 'pos' input: only 4 rates found.")
expect_error(calc_rate.ft(insp.ft.obj.delta.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, pos = 9),
regexp = "calc_rate.ft: Invalid 'pos' input: only 4 rates found.")
expect_error(calc_rate.ft(insp.ft.obj.delta.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, pos = 0),
regexp = "calc_rate.ft: Invalid 'pos' input: only 4 rates found.")
## objects
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(plot(crft.obj.multrates, pos = 4),
regexp = "calc_rate.ft: Invalid 'pos' input: only 3 rates found.")
expect_error(plot(crft.obj.multrate.delta.only, pos = 4),
regexp = "calc_rate.ft: Invalid 'pos' input: only 3 rates found.")
expect_error(plot(crft.obj.multrate.delta.only, pos = 4),
regexp = "calc_rate.ft: Invalid 'pos' input: only 3 rates found.")
expect_error(plot(crft.obj.multrate.delta.only, pos = 4),
regexp = "calc_rate.ft: Invalid 'pos' input: only 3 rates found.")
expect_error(plot(crft.obj.multrate.delta.only, pos = 0),
regexp = "calc_rate.ft: Invalid 'pos' input: only 3 rates found.")
})
test_that("calc_rate.ft output plot stops when 'pos' more than 1 value", {
## plots when functions runs
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, pos = 9:10),
regexp = "calc_rate: 'pos' should be a single value.")
})
test_that("calc_rate.ft output plots when 'rate.rev' is used", {
## plots when functions runs
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, rate.rev = FALSE),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.delta.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, rate.rev = FALSE),
regexp = NA)
## objects
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(plot(crft.obj.multrates, rate.rev = FALSE),
regexp = NA)
expect_output(plot(crft.obj.multrates, rate.rev = FALSE),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ...")
expect_output(plot(crft.obj.multrates, rate.rev = FALSE),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ...")
expect_error(plot(crft.obj.multrate.delta.only, rate.rev = FALSE),
regexp = NA)
expect_output(plot(crft.obj.multrate.delta.only, rate.rev = FALSE),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ...")
expect_output(plot(crft.obj.multrate.delta.only, rate.rev = FALSE),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ... \nTo plot others use 'pos'.")
})
test_that("calc_rate.ft output plots when 'legend' is used", {
## plots when functions runs
expect_error(calc_rate.ft(insp.ft.obj.outO2.1col.inO2.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, legend = FALSE),
regexp = NA)
expect_error(calc_rate.ft(insp.ft.obj.delta.1col,
from = 2:5, to = 1002:1005,
flowrate = 2, plot = TRUE, legend = FALSE),
regexp = NA)
## objects
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(plot(crft.obj.multrates, legend = FALSE),
regexp = NA)
expect_output(plot(crft.obj.multrates, legend = FALSE),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ... \nTo plot others use 'pos'.")
expect_error(plot(crft.obj.multrate.delta.only, legend = FALSE),
regexp = NA)
expect_output(plot(crft.obj.multrate.delta.only, legend = FALSE),
regexp = "calc_rate.ft: Plotting rate from position 1 of 3 ... \nTo plot others use 'pos'.")
})
test_that("calc_rate.ft objects can be printed.", {
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(print(crft.obj.value),
regexp = NA)
expect_output(print(crft.obj.value),
regexp = "Rate:")
expect_error(print(crft.obj.vector),
regexp = NA)
expect_output(print(crft.obj.vector),
regexp = "Rate:")
expect_error(print(crft.obj.df),
regexp = NA)
expect_output(print(crft.obj.df),
regexp = "Rate:")
expect_error(print(crft.obj.1rate),
regexp = NA)
expect_output(print(crft.obj.1rate),
regexp = "Rate:")
expect_error(print(crft.obj.multrates),
regexp = NA)
expect_output(print(crft.obj.multrates),
regexp = "Rank 1 of 3 rate")
expect_error(print(crft.obj.multrates.many),
regexp = NA)
expect_output(print(crft.obj.multrates.many),
regexp = "Rank 1 of 102 rate")
expect_error(print(crft.obj.1rate.delta.only),
regexp = NA)
expect_output(print(crft.obj.1rate.delta.only),
regexp = "Rate:")
expect_error(print(crft.obj.multrate.delta.only),
regexp = NA)
expect_output(print(crft.obj.multrate.delta.only),
regexp = "Rank 1 of 3 rate")
})
test_that("calc_rate.ft objects can be printed with 'pos' input.", {
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(print(crft.obj.vector, pos = 10),
regexp = NA)
expect_output(print(crft.obj.vector, pos = 10),
regexp = "Rank 10 of 935 rates:")
expect_error(print(crft.obj.multrates, pos = 3),
regexp = NA)
expect_output(print(crft.obj.multrates, pos = 3),
regexp = "Rank 3 of 3 rates:")
})
test_that("calc_rate.ft print() stops with invalid 'pos' input.", {
expect_error(print(crft.obj.value, pos = 2),
regexp = "print.calc_rate.ft: Invalid 'pos' rank: only 1 rates found.")
expect_error(print(crft.obj.df, pos = 1000),
regexp = "print.calc_rate.ft: Invalid 'pos' rank: only 935 rates found.")
expect_error(print(crft.obj.df, pos = 10:20),
regexp = "print.calc_rate.ft: 'pos' must be a single value. To examine multiple results use summary")
})
test_that("calc_rate.ft objects work with summary()", {
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(summary(crft.obj.value),
regexp = NA)
expect_error(summary(crft.obj.vector),
regexp = NA)
expect_error(summary(crft.obj.df),
regexp = NA)
expect_error(summary(crft.obj.1rate),
regexp = NA)
expect_output(summary(crft.obj.1rate),
regexp = " rep")
expect_error(summary(crft.obj.multrates),
regexp = NA)
expect_output(summary(crft.obj.multrates),
regexp = " rep")
expect_error(summary(crft.obj.multrates.many),
regexp = NA)
expect_output(summary(crft.obj.multrates.many),
regexp = " rep")
expect_error(summary(crft.obj.1rate.delta.only),
regexp = NA)
expect_output(summary(crft.obj.1rate.delta.only),
regexp = " rep")
expect_error(summary(crft.obj.multrate.delta.only),
regexp = NA)
expect_output(summary(crft.obj.multrate.delta.only),
regexp = " rep")
})
test_that("calc_rate.ft objects work with summary() and 'pos' input", {
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(summary(crft.obj.multrates.many, pos = c(60,70,80,90)),
regexp = NA)
expect_error(summary(crft.obj.multrates.many, pos = 60:90),
regexp = NA)
expect_error(summary(crft.obj.vector, pos = 6:9),
regexp = NA)
})
test_that("calc_rate.ft summary() stops with invalid 'pos' input", {
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(summary(crft.obj.vector, pos = 1000),
regexp = "summary.calc_rate.ft: Invalid 'pos' rank: only 935 rates found.")
})
test_that("calc_rate.ft objects work with summary() and 'export' input", {
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(summary(crft.obj.vector, export = TRUE),
regexp = NA)
expect_equal(nrow(summary(crft.obj.vector, export = TRUE)),
nrow(crft.obj.vector$summary))
})
test_that("calc_rate.ft objects work with mean()", {
## objects
# crft.obj.value
# crft.obj.vector
# crft.obj.df
# crft.obj.1rate
# crft.obj.multrates
# crft.obj.1rate.delta.only
# crft.obj.multrate.delta.only
expect_error(mean(crft.obj.value),
regexp = NA)
expect_output(mean(crft.obj.value),
regexp = "Mean of 1 output rates:")
expect_equal(mean(crft.obj.value, export = TRUE),
mean(crft.obj.value$rate))
expect_message(mean(crft.obj.value),
regexp = "Only 1 rate found. Returning mean rate anyway")
expect_error(mean(crft.obj.vector),
regexp = NA)
expect_output(mean(crft.obj.vector),
regexp = "Mean of 935 output rates:")
expect_equal(mean(crft.obj.vector, export = TRUE),
mean(crft.obj.vector$rate))
expect_error(mean(crft.obj.df),
regexp = NA)
expect_output(mean(crft.obj.df),
regexp = "Mean of 935 output rates:")
expect_equal(mean(crft.obj.df, export = TRUE),
mean(crft.obj.df$rate))
expect_error(mean(crft.obj.1rate),
regexp = NA)
expect_output(mean(crft.obj.1rate),
regexp = "Mean of 1 output rates:")
expect_equal(mean(crft.obj.1rate, export = TRUE),
mean(crft.obj.1rate$rate))
expect_error(mean(crft.obj.multrates),
regexp = NA)
expect_output(mean(crft.obj.multrates),
regexp = "Mean of 3 output rates:")
expect_equal(mean(crft.obj.multrates, export = TRUE),
mean(crft.obj.multrates$rate))
expect_error(mean(crft.obj.1rate.delta.only),
regexp = NA)
expect_output(mean(crft.obj.1rate.delta.only),
regexp = "Mean of 1 output rates:")
expect_equal(mean(crft.obj.1rate.delta.only, export = TRUE),
mean(crft.obj.1rate.delta.only$rate))
expect_error(mean(crft.obj.multrate.delta.only),
regexp = NA)
expect_output(mean(crft.obj.multrate.delta.only),
regexp = "Mean of 3 output rates:")
expect_equal(mean(crft.obj.multrate.delta.only, export = TRUE),
mean(crft.obj.multrate.delta.only$rate))
})
test_that("calc_rate.ft objects work with mean() and 'pos' input", {
expect_error(mean(crft.obj.vector, pos = 1:10),
regexp = NA)
expect_output(mean(crft.obj.vector, pos = 1:10),
regexp = "Mean of rate results from entered 'pos' ranks:")
expect_equal(mean(crft.obj.vector, pos = 1:10, export = TRUE),
mean(crft.obj.vector$rate[1:10]))
})
test_that("calc_rate.ft - stops with mean() and invalid 'pos' input", {
expect_error(mean(crft.obj.vector, pos = 1000),
regexp = "mean.calc_rate.ft: Invalid 'pos' rank: only 935 rates found.")
})
test_that("calc_rate.ft - plot defaults are correctly restored", {
# reset plotting first
dev.off()
# save par before
parb4 <- par(no.readonly = TRUE)
# now use a fn with plot
calc_rate.ft(inspect.ft(flowthrough.rd, 1, delta.oxy = 4), flowrate = 1.5)
# 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)
})
}) ## turns console summarying back on
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.