Nothing
# rm(list=ls())
# library(testthat)
# test_file("tests/testthat/test-auto_rate.int.R")
# covr::file_coverage("R/auto_rate.int.R", "tests/testthat/test-auto_rate.int.R")
# cvr <- covr::package_coverage()
# covr::report(cvr)
# covr::report(covr::package_coverage())
capture.output({ ## stops printing outputs on assigning
if (!identical(Sys.getenv("NOT_CRAN"), "true")) return()
skip_on_cran()
# create testing objects
suppressWarnings({
# in secs
dt.sec <- intermittent.rd %>%
subset_data(from = 1) # removes first value at 0 time because of annoying messages during adjustments
dt.sec.insp <- inspect(dt.sec, plot = F)
# in mins - 2 dec places
dt.min.2 <- intermittent.rd %>%
subset_data(from = 1)
dt.min.2[[1]] <- round(dt.min.2[[1]]/60, 2)
dt.min.2.insp <- inspect(dt.min.2, plot = F)
# in mins - 1 dec places
dt.min.1 <- intermittent.rd %>%
subset_data(from = 1)
dt.min.1[[1]] <- round(dt.min.1[[1]]/60, 1)
dt.min.1.insp <- inspect(dt.min.1, plot = F)
# in hrs - 2 dec places
dt.hr <- intermittent.rd %>%
subset_data(from = 1)
dt.hr[[1]] <- round(dt.hr[[1]]/60/60, 3)
dt.hr.insp <- inspect(dt.hr, plot = F)
sts <- c(1,2100,3899) # different from help file because first row removed above
sts.min <- c(0.02,35,65) # starts in minutes
sts.hr <- round(c(0.02,35,65)/60, 3) # starts in hr
ens.actual <- c(2099,3898,4830) #actual ends including flush
ens.measure <- c(1899,3549,4830) # ends excluding flush
# regular reps - 10 reps from this dataset
dt.reg.insp <- subset_data(zeb_intermittent.rd,
from = 5840,
to = 5840 + 6599,
by = "row") %>%
inspect(legend = F, plot = F)
})
# x input tests --------------------------------------------------
# stops if x not df or inspect obj
test_that("auto_rate.int - stops with wrong 'x' inputs", {
expect_error(auto_rate.int(dt.sec[[1]],
starts = sts,
width = 100,
plot = F),
"auto_rate.int: Input must be a 'data.frame' or 'inspect' object.")
expect_error(auto_rate.int(inspect.ft(dt.sec, plot = F),
starts = sts,
width = 100,
plot = F),
"auto_rate.int: Input must be a 'data.frame' or 'inspect' object.")
expect_error(auto_rate.int(12,
starts = sts,
width = 100,
plot = F),
"auto_rate.int: Input must be a 'data.frame' or 'inspect' object.")
})
# accepts df and inspect objs
test_that("auto_rate.int - accepts 'data.frame' 'x' inputs", {
expect_error(auto_rate.int(dt.sec,
starts = sts,
width = 100,
plot = F),
NA)
})
test_that("auto_rate.int - accepts 'inspect' 'x' inputs", {
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
width = 100,
plot = F),
NA)
})
test_that("auto_rate.int - correctly extracts dataframe from 'inspect' objects", {
ar.int <- auto_rate.int(dt.sec.insp,
starts = sts,
width = 100,
plot = F)
expect_identical(ar.int$dataframe,
dt.sec.insp$dataframe)
expect_is(ar.int$dataframe,
"data.table")
})
test_that("auto_rate.int - message with multicolumn 'x' inputs", {
expect_message(auto_rate.int(sardine.rd,
starts = sts,
width = 100,
plot = F),
"auto_rate.int: Multi-column dataset detected in input. Selecting first two columns by default.")
})
# starts input tests -----------------------------------------------------
# required, numeric, integer, within df row range
test_that("auto_rate.int - stops with wrong 'starts' inputs", {
# NULL
expect_error(auto_rate.int(dt.sec.insp,
starts = NULL,
width = 100,
plot = F),
"auto_rate.int: 'starts' - input is required.")
# Non-integer(s)
expect_error(auto_rate.int(dt.sec.insp,
starts = c(1, 100.1, 500),
width = 100,
plot = F),
"auto_rate.int: 'starts' - one or more inputs are not integers.")
})
# Accepts multiple and single inputs
test_that("auto_rate.int - accepts correct 'starts' inputs", {
skip_on_cran()
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
width = 100,
by = "row",
plot = F),
NA)
expect_error(auto_rate.int(dt.sec.insp,
starts = 1000,
width = 100,
by = "row",
plot = F),
NA)
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
width = 100,
by = "time",
plot = F),
NA)
expect_error(auto_rate.int(dt.sec.insp,
starts = 1000,
width = 100,
by = "time",
plot = F),
NA)
})
# wait input tests -----------------------------------------------------
# required, numeric, integer, within df row range
test_that("auto_rate.int - stops with wrong 'wait' inputs", {
# NULL - is ok
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = NULL,
width = 100,
by = "row",
plot = F),
NA)
# string
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = "text",
width = 100,
by = "row",
plot = F),
"auto_rate.int: 'wait' - input is not numeric.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = "text",
width = 100,
by = "time",
plot = F),
"auto_rate.int: 'wait' - input is not numeric.")
# Non-integer(s) for row
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 100.1,
width = 100,
by = "row",
plot = F),
"auto_rate.int: 'wait' - one or more inputs are not integers.")
# Non-integer(s) for time is ok
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 100.1,
width = 100,
by = "time",
plot = F),
NA)
# Outside range
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = c(300,400, 5000),
width = 100,
by = "row",
plot = F),
"auto_rate.int: 'wait' - one or more inputs are outside the range of allowed values.")
# by = "time" - there is no range test
# Wrong length
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 100:103,
width = 100,
by = "row",
plot = F),
"auto_rate.int: For a vector input 'wait' should be the same length as 'starts'.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 100:103,
width = 100,
by = "time",
plot = F),
"auto_rate.int: For a vector input 'wait' should be the same length as 'starts'.")
})
# Accepts multiple and single inputs
test_that("auto_rate.int - accepts correct length 'wait' inputs", {
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
width = 100,
by = "row",
plot = F),
NA)
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50:52,
width = 100,
by = "row",
plot = F),
NA)
})
# if wait = NULL all start rows should be equal to subset start rows
test_that("auto_rate.int - properly parses 'wait = NULL'", {
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = NULL,
measure = 1000,
width = 500,
by = "row",
method = "rolling",
n = 1,
plot = F)
#summary(ar.int.obj.3reps)
# locs
expect_equal(sapply(ar.int.obj.3reps$subsets, function(z) z[[1,1]]),
ar.int.obj.3reps$summary$row)
# ends should be this plus width
expect_equal(sapply(ar.int.obj.3reps$subsets, function(z) z[[1,1]])+500-1,
ar.int.obj.3reps$summary$endrow)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "row")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses single 'wait' values", {
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = 100,
measure = 1000,
width = 500,
by = "row",
method = "rolling",
n = 1,
plot = F)
#summary(ar.int.obj.3reps)
# locs
expect_equal(sapply(ar.int.obj.3reps$subsets, function(z) z[[1,1]]),
ar.int.obj.3reps$summary$row - 100)
# ends should be this plus width
expect_equal(sapply(ar.int.obj.3reps$subsets, function(z) z[[1,1]])+500-1,
ar.int.obj.3reps$summary$endrow - 100)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "row")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses multiple 'wait' values", {
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = c(100, 120, 140),
measure = 1000,
width = 500,
by = "row",
method = "rolling",
n = 1,
plot = F)
#summary(ar.int.obj.3reps)
# locs
expect_equal(sapply(ar.int.obj.3reps$subsets, function(z) z[[1,1]]),
ar.int.obj.3reps$summary$row - c(100, 120, 140))
# ends should be this plus width
expect_equal(sapply(ar.int.obj.3reps$subsets, function(z) z[[1,1]])+500-1,
ar.int.obj.3reps$summary$endrow - c(100, 120, 140))
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "row")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
# measure input tests -----------------------------------------------------
test_that("auto_rate.int - message with NULL 'measure' input", {
expect_message(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = NULL,
width = 100,
plot = F),
"auto_rate.int: The `measure` input is NULL. Calculating rate to the end of the replicate.")
})
# required, numeric, integer, within df row range
test_that("auto_rate.int - stops with wrong 'measure' inputs", {
# string
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = "text",
width = 100,
by = "row",
plot = F),
"auto_rate.int: 'measure' - input is not numeric.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = "text",
width = 100,
by = "time",
plot = F),
"auto_rate.int: 'measure' - input is not numeric.")
# Non-integer(s) for row
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 200.1,
width = 100,
by = "row",
plot = F),
"auto_rate.int: 'measure' - one or more inputs are not integers.")
# Non-integer(s) for time is ok
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 200.1,
width = 100,
by = "time",
plot = F),
NA)
# Outside range
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = c(300,400, 5000),
width = 100,
by = "row",
plot = F),
"auto_rate.int: 'measure' - one or more inputs are outside the range of allowed values.")
# by = "time" - there is no range test
# Wrong length
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 100:103,
width = 100,
by = "row",
plot = F),
"auto_rate.int: For a vector input 'measure' should be the same length as 'starts'.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 100:103,
width = 100,
by = "time",
plot = F),
"auto_rate.int: For a vector input 'measure' should be the same length as 'starts'.")
})
# Accepts multiple and single inputs
test_that("auto_rate.int - accepts correct length 'measure' inputs", {
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "row",
plot = F),
NA)
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500:502,
width = 100,
by = "row",
plot = F),
NA)
})
test_that("auto_rate.int - properly parses 'measure = NULL'", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = NULL,
measure = NULL,
width = 500,
by = "row",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates of this width last endrow should be last row of data
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[2]-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[3]-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
expect_equal(nrow(ar.int.obj.3reps$summary),
3333)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "row")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses single 'measure' values", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = 100,
measure = 1000,
width = 500,
by = "row",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates with this measure last endrows should be starts + wait + measure
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[1]+100+1000-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[2]+100+1000-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
expect_equal(nrow(ar.int.obj.3reps$summary),
1335)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "row")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses multiple 'measure' values", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = 100,
measure = c(800, 900, 1000),
width = 500,
by = "row",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates with this measure last endrows should be starts + wait + measure
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[1]+100+800-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[2]+100+900-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
expect_equal(nrow(ar.int.obj.3reps$summary),
1035)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "row")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses multiple 'measure' values with multiple wait values", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = c(100, 150, 200),
measure = c(800, 900, 1000),
width = 500,
by = "row",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates with this measure last endrows should be starts + wait + measure
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[1]+100+800-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[2]+150+900-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
expect_equal(nrow(ar.int.obj.3reps$summary),
935)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "row")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses 'measure = NULL' and by = 'time'", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = NULL,
measure = NULL,
width = 500,
by = "time",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates of this width last endrow should be last row of data
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[2]-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[3]-1)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
# This is 1 less per rep than by = "row" prob for minor reasons
expect_equal(nrow(ar.int.obj.3reps$summary),
3330)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses single 'measure' values and by = 'time'", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = 100,
measure = 1000,
width = 500,
by = "time",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates with this measure last endrows should be starts + wait + measure
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[1]+100+1000)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[2]+100+1000)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
expect_equal(nrow(ar.int.obj.3reps$summary),
1334)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses multiple 'measure' values and by = 'time'", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = 100,
measure = c(800, 900, 1000),
width = 500,
by = "time",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates with this measure last endrows should be starts + wait + measure
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[1]+100+800)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[2]+100+900)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
expect_equal(nrow(ar.int.obj.3reps$summary),
1034)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
test_that("auto_rate.int - properly parses multiple 'measure' values with multiple wait values and by = 'time'", {
skip_on_cran()
# by row
ar.int.obj.3reps <- auto_rate.int(x = dt.sec.insp,
starts = sts,
wait = c(100, 150, 200),
measure = c(800, 900, 1000),
width = 500,
by = "time",
method = "rolling",
n = 10000,
plot = F)
#summary(ar.int.obj.3reps)
# locs
# If we calc all possible rates with this measure last endrows should be starts + wait + measure
expect_equal(nrow(dt.sec.insp$dataframe),
ar.int.obj.3reps$summary$endrow[nrow(ar.int.obj.3reps$summary)])
# last endrow of each rep should be last row of each rep
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 1], 1),
sts[1]+100+800)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 2], 1),
sts[2]+150+900)
expect_equal(tail(ar.int.obj.3reps$summary$endrow[ar.int.obj.3reps$summary$rep == 3], 1),
nrow(dt.sec.insp$dataframe))
# sould be this many result rows - just leaving this here in case this changes for some reason in future
expect_equal(nrow(ar.int.obj.3reps$summary),
934)
# check raw data matches for these rows
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$row,],
ar.int.obj.3reps$summary[,c(9,11)])
expect_equivalent(dt.sec.insp$dataframe[ar.int.obj.3reps$summary$endrow,],
ar.int.obj.3reps$summary[,c(10,12)])
# check rate calcs for these rows
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
expect_equal(calc_rate(dt.sec.insp,
from = ar.int.obj.3reps$summary$row,
to = ar.int.obj.3reps$summary$endrow,
by = "time")$rate,
ar.int.obj.3reps$summary$rate)
})
# 'by' input tests -------------------------------------------------------
test_that("auto_rate.int - accepts correct 'by' inputs", {
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "row",
plot = F),
NA)
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "time",
plot = F),
NA)
})
test_that("auto_rate.int - stops with incorrect 'by' inputs", {
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = NULL,
plot = F),
"auto_rate.int: 'by' input is required.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "oxygen",
plot = F),
"auto_rate.int: 'by' input not valid or not recognised.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "sometext",
plot = F),
"auto_rate.int: 'by' input not valid or not recognised.")
})
# 'width' input tests -----------------------------------------------------
test_that("auto_rate.int - stops with NULL 'width' inputs", {
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = NULL,
by = "row",
plot = F),
"auto_rate.int: Please enter a 'width'. This should be in the 'by' input of number of rows.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = NULL,
by = "time",
plot = F),
"auto_rate.int: Please enter a 'width'. This should be in the 'by' input of a time duration in the correct units.")
})
test_that("auto_rate.int - stops with incorrect 'width' inputs", {
# numeric
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = "text",
by = "row",
plot = F),
"auto_rate.int: 'width' - input is not numeric.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = "text",
by = "time",
plot = F),
"auto_rate.int: 'width' - input is not numeric.")
# integer of 1 if by = row
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 1,
by = "row",
plot = F),
"auto_rate.int: 'width' - one or more inputs are outside the range of allowed values.")
# 0 to 1 non-integers ok with by = "row"
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 0.5,
by = "row",
plot = F),
NA)
# non-integers ok with by = "time"
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100.1,
by = "time",
plot = F),
NA)
# out of range
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 5000,
by = "row",
plot = F),
"auto_rate.int: 'width' - one or more inputs are outside the range of allowed values.")
# no range test for by = "time"
})
test_that("auto_rate.int - message if 'width' input between 0 and 1 and by = 'time'", {
expect_message(auto_rate.int(dt.hr,
starts = sts.hr,
wait = 0.01,
measure = 0.4,
width = 0.05,
by = "time",
plot = F),
"auto_rate.int: 'width' input is between 0 and 1. Check this value is what you intend.")
})
# 'n' input tests ---------------------------------------------------------
test_that("auto_rate.int - stops with incorrect 'n' inputs", {
# required
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "row",
n = NULL,
plot = F),
"auto_rate.int: 'n' - input is required.")
# numeric
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "row",
n = "text",
plot = F),
"auto_rate.int: 'n' - input is not numeric.")
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "time",
n = "text",
plot = F),
"auto_rate.int: 'n' - input is not numeric.")
# integer
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 100,
by = "row",
n = 1.1,
plot = F),
"auto_rate.int: 'n' - one or more inputs are not integers.")
# single value
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
wait = 50,
measure = 500,
width = 5000,
by = "time",
n = 1:2,
plot = F),
"auto_rate.int: 'n' - only 1 inputs allowed.")
})
# 'starts' correctly parsed -----------------------------------------------
test_that("single 'starts' inputs are correctly parsed to correct number and locations of reps",{
# by row
# should be 5 reps
ar.int.obj.5reps <- auto_rate.int(dt.sec.insp,
starts = 1000,
wait = 50,
measure = 500,
width = 100,
by = "row",
n = 1,
plot = F)
# n reps
expect_equal(nrow(ar.int.obj.5reps$summary),
5)
# locs
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[[1,1]]),
c(1,1001,2001,3001,4001))
# by time
# should be 5 reps
ar.int.obj.5reps <- auto_rate.int(dt.sec.insp,
starts = 1000,
wait = 50,
measure = 500,
width = 100,
by = "time",
n = 1,
plot = F)
# n reps
expect_equal(nrow(ar.int.obj.5reps$summary),
5)
# locs
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[[1,1]]),
c(1,1001,2001,3001,4001))
# by time - different units
# should be 5 reps
ar.int.obj.5reps <- auto_rate.int(dt.min.2.insp,
starts = 1000/60,
wait = 1,
measure = 6,
width = 1,
by = "time",
n = 1,
plot = F)
# n reps
expect_equal(nrow(ar.int.obj.5reps$summary),
5)
# locs
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[[1,1]]),
round(c(1,1001,2001,3001,4001)/60),2)
# by time - different units and n greater than 1
# should be 5 reps
ar.int.obj.15reps <- auto_rate.int(dt.min.2.insp,
starts = 1000/60,
wait = 1,
measure = 6,
width = 1,
by = "time",
n = 3,
plot = F)
# n reps
expect_equal(nrow(ar.int.obj.15reps$summary),
15)
# locs - this should not change with different n
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[[1,1]]),
round(c(1,1001,2001,3001,4001)/60),2)
# Regular reps
# should be 10 reps
ar.int.obj.10reps <- auto_rate.int(dt.reg.insp,
starts = 660,
wait = 50,
measure = 300,
width = 100,
by = "row",
n = 1,
plot = F)
# n reps
expect_equal(nrow(ar.int.obj.10reps$summary),
10)
# locs
expect_equal(sapply(ar.int.obj.10reps$subsets, function(z) z[[1,1]]),
seq(5840, 5840 + 6599, 660))
# Regular reps
# should be 10 reps
ar.int.obj.10reps <- auto_rate.int(dt.reg.insp,
starts = 660,
wait = 50,
measure = 300,
width = 100,
by = "time",
n = 1,
plot = F)
# n reps
expect_equal(nrow(ar.int.obj.10reps$summary),
10)
# locs
expect_equal(sapply(ar.int.obj.10reps$subsets, function(z) z[[1,1]]),
seq(5840, 5840 + 6599, 660))
})
# rep ends correctly parsed -----------------------------------------------
test_that("single 'starts' inputs are correctly parsed to correct number and locations of reps",{
# by row
# should be 5 reps
ar.int.obj.5reps <- auto_rate.int(dt.sec.insp,
starts = 1000,
wait = 50,
measure = 500,
width = 100,
by = "row",
n = 1,
plot = F)
# locs
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[1,nrow(z)]),
c(1000,1000,1000,1000,830))
# by time
# should be 5 reps
ar.int.obj.5reps <- auto_rate.int(dt.sec.insp,
starts = 1000,
wait = 50,
measure = 500,
width = 100,
by = "time",
n = 1,
plot = F)
# locs
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[1,nrow(z)]),
c(1000,1000,1000,1000,830))
# by time - different units
# should be 5 reps
ar.int.obj.5reps <- auto_rate.int(dt.min.2.insp,
starts = 1000/60,
wait = 1,
measure = 6,
width = 1,
by = "time",
n = 1,
plot = F)
# locs
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[1,nrow(z)]),
c(1000,1000,1000,1000,830))
# by time - different units and n greater than 1
# should be 5 reps
ar.int.obj.15reps <- auto_rate.int(dt.min.2.insp,
starts = 1000/60,
wait = 1,
measure = 6,
width = 1,
by = "time",
n = 3,
plot = F)
# locs
expect_equal(sapply(ar.int.obj.5reps$subsets, function(z) z[1,nrow(z)]),
c(1000,1000,1000,1000,830))
# Regular reps
# should be 10 reps
ar.int.obj.10reps <- auto_rate.int(dt.reg.insp,
starts = 660,
wait = 50,
measure = 300,
width = 100,
by = "row",
n = 1,
plot = F)
# locs
expect_equal(sapply(ar.int.obj.10reps$subsets, function(z) z[1,nrow(z)]),
rep(660, 10))
# Regular reps
# should be 10 reps
ar.int.obj.10reps <- auto_rate.int(dt.reg.insp,
starts = 660,
wait = 50,
measure = 300,
width = 100,
by = "time",
n = 1,
plot = F)
# locs
expect_equal(sapply(ar.int.obj.10reps$subsets, function(z) z[1,nrow(z)]),
rep(660, 10))
})
# Expected results ---------------------------------------
#
# Since it's running auto_rate we use it to get results to test against
# by = "time" tests -------------------------------------------------------
test_that("auto_rate.int - expected results with method = 'linear'", {
skip_on_cran()
# Whole replicate
#auto_rate object
ar.obj.rep1 <- auto_rate(dt.sec[sts[1]:ens.actual[1],],
width = 400,
by = "row",
plot = F)
ar.obj.rep2 <- auto_rate(dt.sec[sts[2]:ens.actual[2],],
width = 400,
by = "row",
plot = F)
ar.obj.rep3 <- auto_rate(dt.sec[sts[3]:ens.actual[3],],
width = 400,
by = "row",
plot = F)
#auto_rate.int object
ar.int.obj <- auto_rate.int(dt.sec.insp,
starts = sts,
width = 400,
by = "row",
plot = F)
# test
# first rows of summary should match
# except these columns: rep, rank, row, endrow
# so just use final few columns
expect_equal(ar.obj.rep1$summary[1,9:ncol(ar.obj.rep1$summary)],
ar.int.obj$summary[1,9:ncol(ar.int.obj$summary)])
expect_equal(ar.obj.rep2$summary[1,9:ncol(ar.obj.rep2$summary)],
ar.int.obj$summary[2,9:ncol(ar.int.obj$summary)])
expect_equal(ar.obj.rep3$summary[1,9:ncol(ar.obj.rep3$summary)],
ar.int.obj$summary[3,9:ncol(ar.int.obj$summary)])
})
test_that("auto_rate.int - expected results with method = 'lowest' and excluded flushes", {
skip_on_cran()
# Whole replicate
#auto_rate object
ar.obj.rep1 <- auto_rate(dt.sec[sts[1]:ens.measure[1],],
method = "lowest",
width = 300,
by = "time",
plot = F)
ar.obj.rep2 <- auto_rate(dt.sec[sts[2]:ens.measure[2],],
method = "lowest",
width = 300,
by = "time",
plot = F)
ar.obj.rep3 <- auto_rate(dt.sec[sts[3]:ens.measure[3],],
method = "lowest",
width = 300,
by = "time",
plot = F)
#auto_rate.int object
ar.int.obj <- auto_rate.int(dt.sec.insp,
starts = sts,
measure = ens.measure - sts +1,
method = "lowest",
width = 300,
by = "time",
plot = F)
# test
# first rows of summary should match
# except these columns: rep, rank, row, endrow
# so just use final few columns
expect_equal(ar.obj.rep1$summary[1,9:ncol(ar.obj.rep1$summary)],
ar.int.obj$summary[1,9:ncol(ar.int.obj$summary)])
expect_equal(ar.obj.rep2$summary[1,9:ncol(ar.obj.rep2$summary)],
ar.int.obj$summary[2,9:ncol(ar.int.obj$summary)])
expect_equal(ar.obj.rep3$summary[1,9:ncol(ar.obj.rep3$summary)],
ar.int.obj$summary[3,9:ncol(ar.int.obj$summary)])
})
test_that("auto_rate.int - correctly populates $rep and $rank columns", {
# We know this produces specific results, with different numbers of rresults in each rep
# so we just test these 2 columns
ar.int.obj <- auto_rate.int(dt.sec.insp,
starts = c(1, 2101, 3751),
measure = ens.measure - sts +1,
method = "linear",
width = 800,
by = "row",
n = 6,
plot = F)
# test
expect_equal(ar.int.obj$summary$rep,
c(rep(1, 6), rep (2, 5), rep(3, 3)))
expect_equal(ar.int.obj$summary$rank,
c(1:6, 1:5, 1:3))
})
test_that("auto_rate.int - with replicates of regularly spaced reps", {
# Regular replicates - Whole replicate
#auto_rate object
ar.int.obj <- auto_rate.int(dt.reg.insp,
starts = 660,
width = 400,
by = "row",
plot = F)
#auto_rate.int object
expect_error(auto_rate.int(dt.reg.insp,
starts = 660,
width = 400,
by = "row",
plot = F),
NA)
# test
# should be 10 rows
expect_equal(nrow(ar.int.obj$summary),
10)
# should be 20 rows when n = 2
expect_equal(nrow(auto_rate.int(dt.reg.insp,
starts = 660,
width = 400,
by = "row",
n = 2,
plot = F)$summary),
20)
})
# General tests -----------------------------------------------------------
test_that("auto_rate.int - outputs object of class auto_rate.int", {
skip_on_cran()
ar.int <- auto_rate.int(dt.sec.insp,
starts = sts,
width = 400,
by = "row",
plot = F)
expect_is(ar.int,
"auto_rate.int")
})
test_that("auto_rate.int - S3 generics work", {
skip_on_cran()
# plots from within function
expect_output(auto_rate.int(dt.sec.insp,
starts = sts,
width = 400,
by = "row",
plot = TRUE))
expect_error(auto_rate.int(dt.sec.insp,
starts = sts,
width = 400,
by = "row",
plot = TRUE),
NA)
ar.int <- auto_rate.int(dt.sec.insp,
starts = sts,
width = 400,
by = "row",
plot = F)
expect_output(print(ar.int))
expect_output(summary(ar.int))
expect_output(plot(ar.int))
expect_output(mean(ar.int))
# multiple rates and 'pos'
expect_output(print(ar.int, pos = 2))
expect_error(print(ar.int, pos = 2:3),
"print.auto_rate.int: 'pos' must be a single value. To examine multiple results use summary().")
expect_error(print(ar.int, pos = 30),
"print.auto_rate.int: Invalid 'pos' input: only 3 rates found.")
expect_output(summary(ar.int, pos = 2:3))
expect_error(summary(ar.int, pos = 40),
"summary.auto_rate.int: Invalid 'pos' input: only 3 rates found.")
expect_is(summary(ar.int, pos = 2:3, export = TRUE),
"data.frame")
expect_output(mean(ar.int, pos = 1))
expect_message(mean(ar.int, pos = 1),
"Only 1 rate found. Returning mean rate anyway...")
expect_output(mean(ar.int, pos = 2:3))
expect_error(mean(ar.int, pos = 40),
"mean.auto_rate.int: Invalid 'pos' input: only 3 rates found.")
expect_is(mean(ar.int, pos = 2:3, export = TRUE),
"numeric")
expect_equal(mean(ar.int, pos = 2:3, export = TRUE),
mean(ar.int$rate[2:3]))
# pos default applied
expect_output(plot(ar.int, pos = NULL))
expect_output(plot(ar.int, pos = 1))
expect_output(plot(ar.int, pos = 3))
expect_error(plot(ar.int, pos = 50),
"plot.auto_rate.int: Invalid 'pos' input: only 3 rates found.")
# plot types produce output
expect_output(plot(ar.int, type = "rep"))
expect_output(plot(ar.int, type = "rep", pos = 2:3))
expect_output(plot(ar.int, type = "full"))
expect_output(plot(ar.int, type = "full", pos = 2:3))
expect_output(plot(ar.int, type = "ar"))
expect_output(plot(ar.int, type = "ar", pos = 2:3))
expect_error(plot(ar.int, type = "test"),
"plot.auto_rate.int: 'type' input not recognised.")
})
test_that("auto_rate.int - row numbers are output correctly", {
#auto_rate.int object
ar.int.obj <- auto_rate.int(x = dt.sec.insp,
starts = sts,
by = "time",
method = "linear",
width = 10,
wait = c(100,200,300),
n = 2,
measure = c(500,500,400),
plot = F,
type = "rep") %>%
summary()
ar.int.obj$dataframe[ar.int.obj$summary$row,]
# test - if we use row numbers in calc_rate results should match
#calc_rate object
cr.obj <- calc_rate(dt.sec.insp,
from = ar.int.obj$summary$row,
to = ar.int.obj$summary$endrow,
by = "row",
plot = F) %>%
summary()
expect_equal(ar.int.obj$rate,
cr.obj$rate)
})
test_that("auto_rate.int - 'pos' inputs work", {
ar.int <- auto_rate.int(x = dt.sec.insp,
starts = sts,
by = "time",
method = "linear",
width = 10,
wait = c(100,200,300),
n = 2,
measure = c(500,500,400),
plot = F,
type = "rep")
# multiple rates and 'pos'
expect_output(print(ar.int, pos = 2))
expect_error(print(ar.int, pos = 2:3),
"print.auto_rate.int: 'pos' must be a single value. To examine multiple results use summary().")
expect_error(print(ar.int, pos = 30),
"print.auto_rate.int: Invalid 'pos' input: only 5 rates found.")
expect_output(summary(ar.int, pos = 2:3))
expect_error(summary(ar.int, pos = 40),
"summary.auto_rate.int: Invalid 'pos' input: only 5 rates found.")
expect_is(summary(ar.int, pos = 2:3, export = TRUE),
"data.frame")
expect_output(mean(ar.int, pos = 2:3))
expect_error(mean(ar.int, pos = 40),
"mean.auto_rate.int: Invalid 'pos' input: only 5 rates found.")
expect_is(mean(ar.int, pos = 2:3, export = TRUE),
"numeric")
expect_equal(mean(ar.int, pos = 2:3, export = TRUE),
mean(ar.int$rate[2:3]))
# works if legend used
expect_output(plot(ar.int, pos = 1, legend = TRUE))
# pos default applied
expect_output(plot(ar.int, pos = NULL))
expect_output(plot(ar.int, pos = 1))
expect_output(plot(ar.int, pos = 3))
expect_error(plot(ar.int, pos = 50),
"plot.auto_rate.int: Invalid 'pos' input: only 5 rates found.")
# works with multiple pos up to and past 20
dt.reg.insp.30 <- subset_data(zeb_intermittent.rd,
from = 5840,
to = 5840 + 19797,
by = "row") %>%
inspect(legend = F, plot = F)
# should be 30 reps
ar.int.obj.30reps <- auto_rate.int(dt.reg.insp.30,
starts = 660,
wait = 50,
measure = 300,
width = 100,
by = "row",
n = 1,
plot = F)
expect_output(plot(ar.int.obj.30reps, pos = 1))
expect_output(plot(ar.int.obj.30reps, pos = 1:2))
expect_output(plot(ar.int.obj.30reps, pos = 1:4))
expect_output(plot(ar.int.obj.30reps, pos = 1:6))
expect_output(plot(ar.int.obj.30reps, pos = 1:9))
expect_output(plot(ar.int.obj.30reps, pos = 1:12))
expect_output(plot(ar.int.obj.30reps, pos = 1:16))
expect_output(plot(ar.int.obj.30reps, pos = 1:20))
expect_output(plot(ar.int.obj.30reps, pos = 1:25))
expect_message(plot(ar.int.obj.30reps, pos = 1:25),
"plot.auto_rate.int: Plotting first 20 selected rates only. To plot others modify 'pos' input.")
# plot types produce output
expect_output(plot(ar.int, type = "rep"))
expect_output(plot(ar.int, type = "rep", pos = 2:3))
expect_output(plot(ar.int, type = "full"))
expect_output(plot(ar.int, type = "full", pos = 2:3))
expect_output(plot(ar.int, type = "ar"))
expect_output(plot(ar.int, type = "ar", pos = 2:3))
expect_error(plot(ar.int, type = "test"),
"plot.auto_rate.int: 'type' input not recognised.")
})
# Expected results with adjust_rate ---------------------------------------
test_that("auto_rate.int - works as expected with adjust_rate method = 'value'", {
skip_on_cran()
ar.int <- auto_rate.int(dt.sec,
starts = sts,
width = 100,
plot = F)
# "value" method
by <- -0.0001
ar.int.adj <- adjust_rate(ar.int, by = by, method = "value")
expect_equal(ar.int$rate - by,
ar.int.adj$rate.adjusted)
})
test_that("auto_rate.int - works as expected with adjust_rate method = 'mean'", {
skip_on_cran()
ar.int <- auto_rate.int(dt.sec,
starts = sts,
width = 100,
plot = F)
# "mean" method
by <- c(-0.0001, -0.00008, -0.00005)
ar.int.adj <- adjust_rate(ar.int, by = by, method = "mean")
expect_equal(ar.int$rate - mean(by),
ar.int.adj$rate.adjusted)
})
test_that("auto_rate.int - works as expected with adjust_rate method = 'paired'", {
skip_on_cran()
ar.int <- auto_rate.int(dt.sec,
starts = sts,
width = 100,
plot = F)
# "paired" method
by <- c(-0.0001, -0.00008, -0.00005)
ar.int.adj <- adjust_rate(ar.int, by = by, method = "paired")
# ar.int.adj$summary
expect_equal(ar.int$rate - by,
ar.int.adj$rate.adjusted)
})
test_that("auto_rate.int - works as expected with adjust_rate method = 'concurrent'", {
skip_on_cran()
ar.int <- auto_rate.int(dt.sec,
starts = sts,
width = 100,
plot = F)
# "concurrent" method
# subset these data to the same length
by <- background_con.rd %>%
subset_data(1, 4830, "time", quiet = TRUE) %>%
calc_rate.bg(plot = F)
ar.int.adj <- adjust_rate(ar.int, by = by, method = "concurrent")
# ar.int.adj$summary
rt <- calc_rate(by$dataframe, from = ar.int$summary$row, to = ar.int$summary$endrow, by = "row")$rate
expect_equal(ar.int$rate - rt,
ar.int.adj$rate.adjusted)
})
test_that("auto_rate.int - works as expected with adjust_rate method = 'linear'", {
skip_on_cran()
ar.int <- auto_rate.int(dt.sec,
starts = sts,
width = 100,
plot = F)
#summary(ar.int)
# "linear" method
# subset these data to the same length
by1 <- background_con.rd %>%
subset_data(1, 800, "time") %>%
calc_rate.bg()
by2 <- background_exp.rd %>%
subset_data(5000, 15000, "time") %>%
calc_rate.bg()
ar.int.adj <- adjust_rate(ar.int, by = by1, by2 = by2, method = "linear")
# runs without error
expect_error(adjust_rate(ar.int, by = by1, by2 = by2, method = "linear"),
NA)
# ar.int.adj$summary
# ar.int.adj$summary$adjustment
# For now just test the known values in case they change in future
expect_equal(c(-0.00006102753, -0.00009158973, -0.00013826320),
ar.int.adj$summary$adjustment)
})
test_that("auto_rate.int - works as expected with adjust_rate method = 'exponential'", {
skip_on_cran()
ar.int <- auto_rate.int(dt.sec,
starts = sts,
width = 100,
plot = F)
# "exponential" method
# subset these data to the same length
by1 <- background_con.rd %>%
subset_data(1, 800, "time") %>%
calc_rate.bg()
by2 <- background_exp.rd %>%
subset_data(5000, 15000, "time") %>%
calc_rate.bg()
ar.int.adj <- adjust_rate(ar.int, by = by1, by2 = by2, method = "exponential")
# runs without error
expect_error(adjust_rate(ar.int, by = by1, by2 = by2, method = "exponential"),
NA)
# ar.int.adj$summary
# ar.int.adj$summary$adjustment
# For now just test the known values in case they change in future
expect_equal(c(-0.00005483333, -0.00007021938, -0.00010244557),
ar.int.adj$summary$adjustment)
})
}) ## end capture output
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.