## library(testthat) ## rm(list=ls()) ## testthat::test_file("tests/testthat/test-adjust_rate.R") capture.output({ ## stops printing outputs on assigning test_that("adjust_rate stops with wrong method", { expect_error(adjust_rate(100, 10, method = "text"), regexp = "adjust_rate: 'method' input not recognised") }) # make objects for running tests ------------------------------------------ { suppressWarnings(suppressMessages(insp_obj_single <- inspect(urchins.rd, time = 1, oxygen = 2, plot = F))) suppressWarnings(suppressMessages(insp_obj_multiple <- inspect(urchins.rd, time = 1, oxygen = 2:5, plot = F))) cr_obj_single <- calc_rate(insp_obj_single, from = 3, to = 40, by = "time", plot = F) cr_obj_three <- calc_rate(insp_obj_single, from = c(3,13,23), to = c(12,22,32), by = "time", plot = F) cr_obj_eight <- calc_rate(insp_obj_single, from = c(3,6,9,12,15,18,21,24), to = c(6,9,12,15,18,21,24,27), by = "time", plot = F) ar_obj <- auto_rate(insp_obj_single, plot = F) ## auto_rate object with single rate ar_obj_single <- ar_obj ar_obj_single$summary <- ar_obj_single$summary[2,] ar_obj_single$rate <- ar_obj_single$rate[2] ## bg objects bg_single <- calc_rate.bg(urchins.rd, time = 1, oxygen = 18, plot = F) bg_three <- calc_rate.bg(urchins.rd, time = 1, oxygen = 12:14, plot = F) bg_four <- calc_rate.bg(urchins.rd, time = 1, oxygen = 12:15, plot = F) bg_eight <- calc_rate.bg(urchins.rd, time = 1, oxygen = 12:19, plot = F) ## calc_rate objects cr_single <- suppressWarnings(calc_rate(inspect(urchins.rd, time = 1, oxygen = 18, plot = F), plot = F)) cr_three <- suppressWarnings(calc_rate(inspect(urchins.rd, time = 1, oxygen = 12:14, plot = F), plot = F)) cr_four <- suppressWarnings(calc_rate(inspect(urchins.rd, time = 1, oxygen = 12:15, plot = F), plot = F)) cr_eight <- suppressWarnings(calc_rate(inspect(urchins.rd, time = 1, oxygen = 12:19, plot = F), plot = F)) # dfs with diff column numbers bg_df2col <- urchins.rd[,c(1,18)] bg_df3col <- urchins.rd[,c(1,18,19)] bg_df7col <- urchins.rd[,c(1,18,19,18,19,18,19,18)] # inspect of above insp_bg_df2col <- suppressWarnings(suppressMessages(inspect(bg_df2col, time = 1, oxygen = 2, plot = F))) insp_bg_df3col <- suppressWarnings(suppressMessages(inspect(bg_df3col, time = 1, oxygen = 2:3, plot = F))) insp_bg_df7col <- suppressWarnings(suppressMessages(inspect(bg_df7col, time = 1, oxygen = 2:8, plot = F))) # calc_rate.bg of above crbg_df2col <- calc_rate.bg(bg_df2col, plot = F) crbg_df3col <- calc_rate.bg(bg_df3col, plot = F) crbg_df7col <- calc_rate.bg(bg_df7col, plot = F) # objects for "linear" and "exponential" testing # "pre" experiment background rate # gives "low" bg rate of -0.0004567706 crbg_pre_2col <- urchins.rd[1:70, c(1,18)] %>% calc_rate.bg(plot = FALSE) crbg_pre_3col <- urchins.rd[1:70, c(1,18:19)] %>% calc_rate.bg(plot = FALSE) ## as df bgdf_pre_2col <- urchins.rd[1:70, c(1,18)] bgdf_pre_3col <- urchins.rd[1:70, c(1,18:19)] ## as inspect insp_pre_2col <- suppressWarnings(suppressMessages(inspect(urchins.rd[1:70, c(1,18)], plot = FALSE))) insp_pre_3col <- suppressWarnings(suppressMessages(inspect(urchins.rd[1:70, c(1,18:19)], time = 1, oxygen = 2:3, plot = F))) ## as calc_rate - this for testing warning of rate timestamp outside time range of by/by2 cr_pre <- calc_rate(urchins.rd[1:70, c(1,18)], plot = FALSE) # "post" experiment background rate # gives "high" bg rate of -0.001268691 crbg_post_2col <- urchins.rd[230:271, c(1,19)] %>% calc_rate.bg(plot = FALSE) crbg_post_3col <- urchins.rd[230:271, c(1,18:19)] %>% calc_rate.bg(plot = FALSE) ## as df bgdf_post_2col <- urchins.rd[230:271, c(1,19)] bgdf_post_3col <- urchins.rd[230:271, c(1,18:19)] ## as inspect insp_post_2col <- suppressWarnings(suppressMessages(inspect(urchins.rd[230:271, c(1,19)], plot = FALSE))) insp_post_3col <- suppressWarnings(suppressMessages(inspect(urchins.rd[230:271, c(1,18:19)], plot = FALSE))) ## versions of above with POSITIVE background rates rev_pre <- urchins.rd[1:70, c(1,18:19)] rev_pre[[2]] <- rev(rev_pre[[2]]) rev_pre[[3]] <- rev(rev_pre[[3]]) crbg_pre_2col_pos <- rev_pre[,1:2] %>% calc_rate.bg(plot = FALSE) crbg_pre_3col_pos <- rev_pre %>% calc_rate.bg(plot = FALSE) ## as df bgdf_pre_2col_pos <- rev_pre[,1:2] bgdf_pre_3col_pos <- rev_pre ## as inspect insp_pre_2col_pos <- suppressWarnings(suppressMessages(inspect(rev_pre[,1:2], plot = FALSE))) insp_pre_3col_pos <- suppressWarnings(suppressMessages(inspect(rev_pre, time = 1, oxygen = 2:3, plot = F))) ## versions of above with POSITIVE background rates rev_post <- urchins.rd[230:271, c(1,18:19)] rev_post[[2]] <- rev(rev_post[[2]]) rev_post[[3]] <- rev(rev_post[[3]]) crbg_post_2col_pos <- rev_post[,1:2] %>% calc_rate.bg(plot = FALSE) crbg_post_3col_pos <- rev_post %>% calc_rate.bg(plot = FALSE) ## as df bgdf_post_2col_pos <- rev_post[,1:2] bgdf_post_3col_pos <- rev_post ## as inspect insp_post_2col_pos <- suppressWarnings(suppressMessages(inspect(rev_post[,1:2], plot = FALSE))) insp_post_3col_pos <- suppressWarnings(suppressMessages(inspect(rev_post, time = 1, oxygen = 2:3, plot = F))) ## intermediately timed data of a specimen # gives specimen rate of -0.0280796 ## as df spec_df <- urchins.rd[71:199, c(1,2)] ## as inspect spec_insp <- suppressWarnings(suppressMessages(inspect(urchins.rd[71:199, c(1,2)], plot = FALSE))) ## as calc_rate object spec_cr <- urchins.rd[71:199, c(1,2)] %>% calc_rate(plot = FALSE) ## as auto_rate object - gives three rates spec_ar <- urchins.rd[71:199, c(1,2)] %>% auto_rate(plot = FALSE) ## as auto_rate object - with single rate spec_ar_single <- spec_ar spec_ar_single$summary <- spec_ar_single$summary[2,] spec_ar_single$rate <- spec_ar_single$rate[2] ## objs with rates of different sign cr_obj_mixed_sign <- calc_rate(intermittent.rd, from = c(30, 1000, 1900, 2000), to = c(130, 1100, 2000, 2100), by = "time", plot = FALSE) cr_obj_pos <- calc_rate(intermittent.rd, from = c(1900, 2000, 3550, 3600), to = c(2000, 2100, 3650, 3700), by = "time", plot = FALSE) ar_obj_pos <- auto_rate( data.frame(urchins.rd[[1]], rev(urchins.rd[[2]])), plot = FALSE) ar_obj_mixed_sign <- auto_rate(intermittent.rd, plot = FALSE) ## auto_rate objects of different methods with lots of rates ar_obj_highest <- auto_rate(urchins.rd[,1:2], method = "highest", plot = F) ar_obj_lowest <- auto_rate(urchins.rd[,1:2], method = "lowest", plot = F) ar_obj_interval <- auto_rate(urchins.rd[,1:2], method = "interval", width = 0.05, plot = F) } # end make objects # Tests ------------------------------------------------------------------- # method = "value" ------------------------------------------------------- test_that("adjust_rate: method = 'value' - correct message", { # if NULL expect_message(adjust_rate(x = -0.1, by = -0.005, method = "value"), "adjust_rate: Rate adjustments applied using \"value\" method.", fixed = TRUE) }) test_that("adjust_rate: method = 'value' - stops if 'x' is not numeric, calc_rate, or auto_rate", { expect_error(adjust_rate(NULL, by = -0.005, method = "value"), "adjust_rate: for method = 'value' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate("text", by = -0.005, method = "value"), "adjust_rate: for method = 'value' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(bg_single, by = -0.005, method = "value"), "adjust_rate: for method = 'value' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") }) test_that("adjust_rate: method = 'value' - stops if 'by' is not a single numeric or calc_rate.bg", { expect_error(adjust_rate(ar_obj, by = c(1,2), method = "value"), "adjust_rate: for method = 'value' the 'by' input must be a single numeric value, 'calc_rate.bg' object with one value in '\\$rate.bg', or `calc_rate` object with one value in '\\$rate'") expect_error(adjust_rate(ar_obj, by = "text", method = "value"), "adjust_rate: for method = 'value' the 'by' input must be a single numeric value, 'calc_rate.bg' object with one value in '\\$rate.bg', or `calc_rate` object with one value in '\\$rate'") expect_error(adjust_rate(ar_obj, by = ar_obj, method = "value"), "adjust_rate: for method = 'value' the 'by' input must be a single numeric value, 'calc_rate.bg' object with one value in '\\$rate.bg', or `calc_rate` object with one value in '\\$rate'") expect_error(adjust_rate(ar_obj, by = crbg_df3col, method = "value"), "adjust_rate: for method = 'value' the 'by' input must be a single numeric value, 'calc_rate.bg' object with one value in '\\$rate.bg', or `calc_rate` object with one value in '\\$rate'") # Causes obscure R CMD CHECK error #expect_error(adjust_rate(ar_obj, by = bg_df2col, method = "value"), # "adjust_rate: for method = 'value' the 'by' input must be a single numeric value, 'calc_rate.bg' object with one value in '\\$rate.bg', or `calc_rate` object with one value in '\\$rate'") }) test_that("adjust_rate: method = 'value' - stops if 'by2', 'time_x', 'time_by', or 'time_by2' have inputs.", { expect_error(adjust_rate(cr_obj_three, by = -0.005, by2 = 0.003, method = "value"), "adjust_rate: for method = 'value' the 'by2' input should be NULL.") expect_error(adjust_rate(cr_obj_three, by = -0.005, time_x = 0.003, method = "value"), "adjust_rate: for method = 'value' the 'time_x' input should be NULL.") expect_error(adjust_rate(cr_obj_three, by = -0.005, time_by = 0.003, method = "value"), "adjust_rate: for method = 'value' the 'time_by' input should be NULL.") expect_error(adjust_rate(cr_obj_three, by = -0.005, time_by2 = 0.003, method = "value"), "adjust_rate: for method = 'value' the 'time_by2' input should be NULL.") }) test_that("adjust_rate: method = 'value' - outputs correct results with numeric 'x', numeric 'by' inputs.", { ## single values for both rate = -0.01 by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate - by) ## multiple values for rate rate = c(-0.01, -0.02, -0.03) by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate - by) ## should always be equal to 'mean' method rate = c(-0.01, -0.02, -0.03) by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, adjust_rate(rate, by = by, method = "mean")$rate.adjusted) }) test_that("adjust_rate: method = 'value' - outputs correct results with calc_rate 'x', numeric 'by' inputs.", { ## calc_rate object with single rate, adjusted by single by rate = cr_obj_single by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by) ## calc_rate object with multiple rates, adjusted by single by rate = cr_obj_three by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by) }) test_that("adjust_rate: method = 'value' - outputs correct results with auto_rate 'x', numeric 'by' inputs.", { ## auto_rate object adjusted by single by rate = ar_obj by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by) rate = ar_obj_single by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by) rate = ar_obj_highest by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by) rate = ar_obj_interval by = -0.001 expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by) }) test_that("adjust_rate: method = 'value' - outputs correct results with numeric 'x', calc_rate.bg 'by' inputs.", { ## single x, calc_rate.bg with single bg rate rate = -0.01 by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate - by$rate.bg) ## multiple x, calc_rate.bg with single bg rate rate = c(-0.01, -0.02, -0.03) by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate - by$rate.bg) }) test_that("adjust_rate: method = 'value' - outputs correct results with calc_rate 'x', calc_rate.bg 'by' inputs.", { ## single calc_rate x, calc_rate.bg with single bg rate rate = cr_obj_single by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate.bg) ## multiple calc_rate x, calc_rate.bg with single bg rate rate = cr_obj_three by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate.bg) }) test_that("adjust_rate: method = 'value' - outputs correct results with auto_rate 'x', calc_rate.bg 'by' inputs.", { rate = ar_obj by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate.bg) rate = ar_obj_single by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate.bg) rate = ar_obj_highest by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate.bg) rate = ar_obj_interval by = bg_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate.bg) }) ## added ability to use calc_rate objects as `by` in March 2022 ## This is the only test that it works. Not gonna do it for every x input test_that("adjust_rate: method = 'value' - outputs correct results with auto_rate 'x', calc_rate 'by' inputs.", { rate = ar_obj by = cr_obj_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate) rate = ar_obj_single by = cr_obj_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate) rate = ar_obj_highest by = cr_obj_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate) rate = ar_obj_interval by = cr_obj_single expect_equal(adjust_rate(rate, by = by, method = "value")$rate.adjusted, rate$rate - by$rate) }) # method = "mean" --------------------------------------------------------- test_that("adjust_rate: method = 'mean' - correct message", { # if NULL expect_message(adjust_rate(cr_obj_three, by = -0.005), "adjust_rate: Rate adjustments applied using \"mean\" method.", fixed = TRUE) # if method = "mean" specified expect_message(adjust_rate(cr_obj_single, method = "mean", by = -0.005), "adjust_rate: Rate adjustments applied using \"mean\" method.", fixed = TRUE) }) test_that("adjust_rate: method = 'mean' - stops if 'x' is not numeric, calc_rate, or auto_rate", { expect_error(adjust_rate(NULL, by = -0.005), "adjust_rate: for method = 'mean' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate("text", by = -0.005), "adjust_rate: for method = 'mean' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(bg_single, by = -0.005), "adjust_rate: for method = 'mean' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") }) test_that("adjust_rate: method = 'mean' - stops if 'by' is not numeric or calc_rate.bg", { expect_error(adjust_rate(ar_obj, by = "text"), "adjust_rate: for method = 'mean' the 'by' input must be numeric, object of class 'calc_rate.bg', or object of class 'calc_rate'.") expect_error(adjust_rate(ar_obj, by = ar_obj), "adjust_rate: for method = 'mean' the 'by' input must be numeric, object of class 'calc_rate.bg', or object of class 'calc_rate'.") }) test_that("adjust_rate: method = 'mean' - stops if 'by2', 'time_x', 'time_by', or 'time_by2' have inputs.", { expect_error(adjust_rate(cr_obj_three, by = -0.005, by2 = 0.003), "adjust_rate: for method = 'mean' the 'by2' input should be NULL.") expect_error(adjust_rate(cr_obj_three, by = -0.005, time_x = 0.003), "adjust_rate: for method = 'mean' the 'time_x' input should be NULL.") expect_error(adjust_rate(cr_obj_three, by = -0.005, time_by = 0.003), "adjust_rate: for method = 'mean' the 'time_by' input should be NULL.") expect_error(adjust_rate(cr_obj_three, by = -0.005, time_by2 = 0.003), "adjust_rate: for method = 'mean' the 'time_by2' input should be NULL.") }) test_that("adjust_rate: method = 'mean' - outputs correct results with numeric 'x', numeric 'by' inputs.", { ## single values for both rate = -0.01 by = -0.001 expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by)) ## multiple values for rate rate = c(-0.01, -0.02, -0.03) by = -0.001 expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by)) ## multiple values for by rate = -0.01 by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by)) ## multiple values for both - equal lengths rate = c(-0.01, -0.02, -0.03) by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by)) ## multiple values for both - different lengths rate = c(-0.01, -0.02, -0.03, -0.04, -0.05) by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by)) rate = c(-0.01, -0.02, -0.03) by = c(-0.001, -0.002, -0.003, -0.004, -0.005) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by)) }) test_that("adjust_rate: method = 'mean' - outputs correct results with calc_rate 'x', numeric 'by' inputs.", { ## calc_rate object with single rate, adjusted by single by rate = cr_obj_single by = -0.001 expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) ## calc_rate object with multiple rates, adjusted by single by rate = cr_obj_three by = -0.001 expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) ## calc_rate object with single rate, adjusted by multiple by rate = cr_obj_single by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) ## calc_rate object with multiple rates, adjusted by multiple by - equal lengths rate = cr_obj_three by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) ## calc_rate object with multiple rates, adjusted by multiple by - different lengths rate = cr_obj_three by = c(-0.001, -0.002) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) rate = cr_obj_three by = c(-0.001, -0.002, -0.003, -0.004, -0.005) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) }) test_that("adjust_rate: method = 'mean' - outputs correct results with auto_rate 'x', numeric 'by' inputs.", { ## auto_rate object adjusted by single by rate = ar_obj by = -0.001 expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) ## auto_rate object adjusted by multiple by rate = ar_obj by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) rate = ar_obj by = c(-0.001, -0.002, -0.003, -0.004, -0.005) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) ## auto_rate object with multiple rates, adjusted by multiple by - equal lengths rate = ar_obj by = c(-0.001, -0.002, -0.003, -0.004) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) ## auto_rate object with multiple rates, adjusted by multiple by - equal lengths rate = ar_obj_highest by = c(-0.001, -0.002, -0.003, -0.004) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) rate = ar_obj_interval by = c(-0.001, -0.002, -0.003, -0.004) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) rate = ar_obj_single by = c(-0.001, -0.002, -0.003, -0.004) expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by)) }) test_that("adjust_rate: method = 'mean' - outputs correct results with numeric 'x', calc_rate.bg 'by' inputs.", { ## single x, calc_rate.bg with single bg rate rate = -0.01 by = bg_single expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by$rate.bg)) ## multiple x, calc_rate.bg with single bg rate rate = c(-0.01, -0.02, -0.03) by = bg_single expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by$rate.bg)) ## single x, calc_rate.bg with multiple bg rate rate = -0.01 by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by$rate.bg)) ## multiple x, calc_rate.bg with multiple bg rate rate = c(-0.01, -0.02, -0.03) by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate - mean(by$rate.bg)) }) test_that("adjust_rate: method = 'mean' - outputs correct results with calc_rate 'x', calc_rate.bg 'by' inputs.", { ## single calc_rate x, calc_rate.bg with single bg rate rate = cr_obj_single by = bg_single expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) ## multiple calc_rate x, calc_rate.bg with single bg rate rate = cr_obj_three by = bg_single expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) ## single calc_rate x, calc_rate.bg with multiple bg rate rate = cr_obj_single by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) ## multiple calc_rate x, calc_rate.bg with multiple bg rate rate = cr_obj_three by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) }) test_that("adjust_rate: method = 'mean' - outputs correct results with auto_rate 'x', calc_rate.bg 'by' inputs.", { ## single auto_rate x, calc_rate.bg with single bg rate rate = ar_obj by = bg_single expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) ## single auto_rate x, calc_rate.bg with multiple bg rate rate = ar_obj by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) rate = ar_obj_highest by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) rate = ar_obj_interval by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) rate = ar_obj_single by = bg_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate.bg)) }) test_that("adjust_rate: method = 'mean' - outputs correct results with auto_rate 'x', calc_rate 'by' inputs.", { ## single auto_rate x, calc_rate.bg with single bg rate rate = ar_obj by = cr_obj_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate)) ## single auto_rate x, calc_rate with multiple bg rate rate = ar_obj by = cr_obj_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate)) rate = ar_obj_highest by = cr_obj_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate)) rate = ar_obj_interval by = cr_obj_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate)) rate = ar_obj_single by = cr_obj_three expect_equal(adjust_rate(rate, by = by)$rate.adjusted, rate$rate - mean(by$rate)) }) # method = "paired" ------------------------------------------------------- test_that("adjust_rate: method = 'paired' - correct message", { # if method = "mean" specified expect_message(adjust_rate(cr_obj_single, method = "paired", by = -0.005), "adjust_rate: Rate adjustments applied using \"paired\" method.", fixed = TRUE) }) test_that("adjust_rate: method = 'paired' - stops if 'x' is not numeric, calc_rate, or auto_rate", { expect_error(adjust_rate("text", method = "paired", by = -0.005), "adjust_rate: for method = 'paired' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(bg_single, method = "paired", by = -0.005), "adjust_rate: for method = 'paired' the 'x' input must be numeric or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") }) test_that("adjust_rate: method = 'paired' - stops if 'by' is not numeric or calc_rate.bg", { expect_error(adjust_rate(ar_obj, method = "paired", by = "text"), "adjust_rate: for method = 'paired' the 'by' input must be numeric, object of class 'calc_rate.bg', or object of class 'calc_rate'.") expect_error(adjust_rate(ar_obj, method = "paired", by = ar_obj), "adjust_rate: for method = 'paired' the 'by' input must be numeric, object of class 'calc_rate.bg', or object of class 'calc_rate'.") }) test_that("adjust_rate: method = 'paired' - stops if 'by2', 'time_x', 'time_by', or 'time_by2' have inputs.", { expect_error(adjust_rate(cr_obj_three, method = "paired", by = -0.005, by2 = 0.003), "adjust_rate: for method = 'paired' the 'by2' input should be NULL.") expect_error(adjust_rate(cr_obj_three, method = "paired", by = -0.005, time_x = 0.003), "adjust_rate: for method = 'paired' the 'time_x' input should be NULL.") expect_error(adjust_rate(cr_obj_three, method = "paired", by = -0.005, time_by = 0.003), "adjust_rate: for method = 'paired' the 'time_by' input should be NULL.") expect_error(adjust_rate(cr_obj_three, method = "paired", by = -0.005, time_by2 = 0.003), "adjust_rate: for method = 'paired' the 'time_by2' input should be NULL.") }) test_that("adjust_rate: method = 'paired' - stops if 'x' and 'by' are not same length", { expect_error(adjust_rate(-0.05, method = "paired", by = c(-0.004, -0.005)), "adjust_rate: for method = 'paired' the 'x' and 'by' inputs should have the same number of rates.") expect_error(adjust_rate(cr_obj_single, method = "paired", by = c(-0.004, -0.005)), "adjust_rate: for method = 'paired' the 'x' and 'by' inputs should have the same number of rates.") expect_error(adjust_rate(cr_obj_three, method = "paired", by = -0.005), "adjust_rate: for method = 'paired' the 'x' and 'by' inputs should have the same number of rates.") expect_error(adjust_rate(ar_obj, method = "paired", by = -0.005), "adjust_rate: for method = 'paired' the 'x' and 'by' inputs should have the same number of rates.") expect_error(adjust_rate(ar_obj, method = "paired", by = bg_single), "adjust_rate: for method = 'paired' the 'x' and 'by' inputs should have the same number of rates.") expect_error(adjust_rate(ar_obj, method = "paired", by = bg_three), "adjust_rate: for method = 'paired' the 'x' and 'by' inputs should have the same number of rates.") }) test_that("adjust_rate: method = 'paired' - outputs correct results with numeric 'x', numeric 'by' inputs.", { ## single values rate = -0.01 by = -0.001 expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate - (by)) ## multiple values rate = c(-0.01, -0.02, -0.03) by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate - (by)) }) test_that("adjust_rate: method = 'paired' - outputs correct results with calc_rate 'x', numeric 'by' inputs.", { ## single values rate = cr_obj_single by = -0.001 expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by)) ## multiple values rate = cr_obj_three by = c(-0.001, -0.002, -0.003) expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by)) }) test_that("adjust_rate: method = 'paired' - outputs correct results with auto_rate 'x', numeric 'by' inputs.", { rate = ar_obj by = c(-0.001, -0.002, -0.003, -0.004) expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by)) }) test_that("adjust_rate: method = 'paired' - outputs correct results with calc_rate 'x', calc_rate.bg 'by' inputs.", { ## single values rate = cr_obj_single by = bg_single expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by$rate.bg)) ## multiple values rate = cr_obj_three by = bg_three expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by$rate.bg)) rate = cr_obj_eight by = bg_eight expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by$rate.bg)) }) test_that("adjust_rate: method = 'paired' - outputs correct results with auto_rate 'x', calc_rate.bg 'by' inputs.", { rate = ar_obj by = bg_four expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by$rate.bg)) }) test_that("adjust_rate: method = 'paired' - outputs correct results with calc_rate 'x', calc_rate 'by' inputs.", { # all of these adjustments should equal zero ## single values rate = cr_obj_single by = cr_obj_single expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by$rate)) ## multiple values rate = cr_obj_three by = cr_obj_three expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by$rate)) rate = cr_obj_eight by = cr_obj_eight expect_equal(adjust_rate(rate, method = "paired", by = by)$rate.adjusted, rate$rate - (by$rate)) }) # method = "concurrent" --------------------------------------------------- test_that("adjust_rate: method = 'concurrent' - correct message", { # if method = "mean" specified expect_message(adjust_rate(cr_obj_single, method = "concurrent", by = bg_df2col), "adjust_rate: Rate adjustments applied using \"concurrent\" method.", fixed = TRUE) }) test_that("adjust_rate: method = 'concurrent' - stops if 'x' is not calc_rate or auto_rate", { expect_error(adjust_rate("text", method = "concurrent", by = bg_df2col), "adjust_rate: For method = \"concurrent\" the 'x' input must be a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' object.") expect_error(adjust_rate(bg_df2col, method = "concurrent", by = bg_df2col), "adjust_rate: For method = \"concurrent\" the 'x' input must be a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' object.") expect_error(adjust_rate(bg_df2col, method = "concurrent", by = bg_df2col), "adjust_rate: For method = \"concurrent\" the 'x' input must be a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' object.") expect_error(adjust_rate(bg_df7col, method = "concurrent", by = bg_df2col), "adjust_rate: For method = \"concurrent\" the 'x' input must be a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' object.") expect_error(adjust_rate(insp_bg_df2col, method = "concurrent", by = bg_df2col), "adjust_rate: For method = \"concurrent\" the 'x' input must be a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' object.") expect_error(adjust_rate(insp_bg_df7col, method = "concurrent", by = bg_df2col), "adjust_rate: For method = \"concurrent\" the 'x' input must be a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' object.") }) test_that("adjust_rate: method = 'concurrent' - stops if 'by' is not data.frame, inspect or calc_rate.bg", { expect_error(adjust_rate(ar_obj, method = "concurrent", by = "text"), "adjust_rate: For method = \"concurrent\" the 'by' input must be a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object.") expect_error(adjust_rate(ar_obj, method = "concurrent", by = -0.0005), "adjust_rate: For method = \"concurrent\" the 'by' input must be a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object.") expect_error(adjust_rate(ar_obj, method = "concurrent", by = c(-0.0005,-0.0004,-0.0003)), "adjust_rate: For method = \"concurrent\" the 'by' input must be a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object.") # expect_error(adjust_rate(ar_obj, method = "concurrent", by = cr_obj_single), # "adjust_rate: For method = \"concurrent\" the 'by' input must be a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object.") expect_error(adjust_rate(ar_obj, method = "concurrent", by = ar_obj), "adjust_rate: For method = \"concurrent\" the 'by' input must be a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object.") }) test_that("adjust_rate: method = 'concurrent' - stops if 'by2', 'time_x', 'time_by', or 'time_by2' have inputs.", { expect_error(adjust_rate(cr_obj_three, method = "concurrent", by = bg_df2col, by2 = 0.003), "adjust_rate: for method = 'concurrent' the 'by2' input should be NULL.") expect_error(adjust_rate(cr_obj_three, method = "concurrent", by = bg_df2col, time_x = 0.003), "adjust_rate: for method = 'concurrent' the 'time_x' input should be NULL.") expect_error(adjust_rate(cr_obj_three, method = "concurrent", by = bg_df2col, time_by = 0.003), "adjust_rate: for method = 'concurrent' the 'time_by' input should be NULL.") expect_error(adjust_rate(cr_obj_three, method = "concurrent", by = bg_df2col, time_by2 = 0.003), "adjust_rate: for method = 'concurrent' the 'time_by2' input should be NULL.") }) test_that("adjust_rate: method = 'concurrent' - warns if 'x' and 'by' are differ in length by more than 5%", { expect_warning(adjust_rate(cr_obj_single, method = "concurrent", by = urchins.rd[1:250,]), "adjust_rate: 'x' and 'by' inputs differ in length by more than 5%.") expect_warning(adjust_rate(cr_obj_single, method = "concurrent", by = sardine.rd), "adjust_rate: 'x' and 'by' inputs differ in length by more than 5%.") }) test_that("adjust_rate: method = 'concurrent' - warns if 'by' is missing some time values used for rates in 'x'.", { expect_warning(adjust_rate(cr_obj_single, method = "concurrent", by = urchins.rd[1:240,]), "adjust_rate: Some time values used in 'x' rate calculations not present in 'by' background data.") }) test_that("adjust_rate: method = 'concurrent' - outputs correct results with calc_rate 'x', data.frame 'by' inputs.", { ## single rate value, single concurrent blank rate <- cr_obj_single by <- bg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, single concurrent blank rate <- cr_obj_three by <- bg_df2col o_rate <- rate$rate adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, single concurrent blank rate <- cr_obj_eight by <- bg_df2col o_rate <- rate$rate adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## single rate value, two concurrent blanks rate <- cr_obj_single by <- bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, two concurrent blanks rate <- cr_obj_three by <- bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, two concurrent blanks rate <- cr_obj_eight by <- bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## single rate value, seven concurrent blanks rate <- cr_obj_single by <- bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, seven concurrent blanks rate <- cr_obj_three by <- bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, seven concurrent blanks rate <- cr_obj_eight by <- bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) }) test_that("adjust_rate: method = 'concurrent' - outputs correct results with calc_rate 'x', inspect 'by' inputs.", { ## single rate value, single concurrent blank rate <- cr_obj_single by <- insp_bg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, single concurrent blank rate <- cr_obj_three by <- insp_bg_df2col o_rate <- rate$rate adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, single concurrent blank rate <- cr_obj_eight by <- insp_bg_df2col o_rate <- rate$rate adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## single rate value, two concurrent blanks rate <- cr_obj_single by <- insp_bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, two concurrent blanks rate <- cr_obj_three by <- insp_bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, two concurrent blanks rate <- cr_obj_eight by <- insp_bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## single rate value, seven concurrent blanks rate <- cr_obj_single by <- insp_bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, seven concurrent blanks rate <- cr_obj_three by <- insp_bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, seven concurrent blanks rate <- cr_obj_eight by <- insp_bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) }) test_that("adjust_rate: method = 'concurrent' - outputs correct results with calc_rate 'x', calc_rate.bg 'by' inputs.", { ## single rate value, single concurrent blank rate <- cr_obj_single by <- crbg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by$dataframe, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, single concurrent blank rate <- cr_obj_three by <- crbg_df2col o_rate <- rate$rate adj <- calc_rate(by$dataframe, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, single concurrent blank rate <- cr_obj_eight by <- crbg_df2col o_rate <- rate$rate adj <- calc_rate(by$dataframe, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## single rate value, two concurrent blanks rate <- cr_obj_single by <- crbg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, two concurrent blanks rate <- cr_obj_three by <- crbg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, two concurrent blanks rate <- cr_obj_eight by <- crbg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## single rate value, seven concurrent blanks rate <- cr_obj_single by <- crbg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, seven concurrent blanks rate <- cr_obj_three by <- crbg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, seven concurrent blanks rate <- cr_obj_eight by <- crbg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) }) test_that("adjust_rate: method = 'concurrent' - outputs correct results with auto_rate 'x', data.frame 'by' inputs.", { ## auto_rate obj, single concurrent blank rate <- ar_obj by <- bg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with single rate, single concurrent blank rate <- ar_obj_single by <- bg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with MANY rates, single concurrent blank rate <- ar_obj_highest by <- bg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj, two concurrent blanks rate <- ar_obj by <- bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with single rate, two concurrent blanks rate <- ar_obj_single by <- bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj, seven concurrent blanks rate <- ar_obj by <- bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with single rate, seven concurrent blanks rate <- ar_obj_single by <- bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) }) test_that("adjust_rate: method = 'concurrent' - outputs correct results with auto_rate 'x', inspect 'by' inputs.", { ## auto_rate obj, single concurrent blank rate <- ar_obj by <- insp_bg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with single rate, single concurrent blank rate <- ar_obj_single by <- insp_bg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj, two concurrent blanks rate <- ar_obj by <- insp_bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## ## auto_rate obj with single rate, two concurrent blanks rate <- ar_obj_single by <- insp_bg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj, seven concurrent blanks rate <- ar_obj by <- insp_bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with single rate, seven concurrent blanks rate <- ar_obj_single by <- insp_bg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) }) test_that("adjust_rate: method = 'concurrent' - outputs correct results with auto_rate 'x', calc_rate.bg 'by' inputs.", { ## auto_rate obj, single concurrent blank rate <- ar_obj by <- crbg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by$dataframe, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with single rate, single concurrent blank rate <- ar_obj_single by <- crbg_df2col # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(by$dataframe, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj, two concurrent blanks rate <- ar_obj by <- crbg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## ## auto_rate obj with single rate, two concurrent blanks rate <- ar_obj_single by <- crbg_df3col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj, seven concurrent blanks rate <- ar_obj by <- crbg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## auto_rate obj with single rate, seven concurrent blanks rate <- ar_obj_single by <- crbg_df7col # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,3)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj3 <- calc_rate(by$dataframe[,c(1,4)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj4 <- calc_rate(by$dataframe[,c(1,5)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj5 <- calc_rate(by$dataframe[,c(1,6)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj6 <- calc_rate(by$dataframe[,c(1,7)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj7 <- calc_rate(by$dataframe[,c(1,8)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2+adj3+adj4+adj5+adj6+adj7)/7 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) }) test_that("adjust_rate: method = 'concurrent' - outputs correct results with calc_rate 'x', calc_rate 'by' inputs.", { ## single rate value, single concurrent blank rate <- cr_obj_single by <- calc_rate(insp_bg_df2col, plot = F) # rate should be this o_rate <- rate$rate # adjustment should be this adj <- calc_rate(insp_bg_df2col, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, single concurrent blank rate <- cr_obj_three by <- calc_rate(insp_bg_df2col, plot = F) o_rate <- rate$rate adj <- calc_rate(insp_bg_df2col, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, single concurrent blank rate <- cr_obj_eight by <- calc_rate(insp_bg_df2col) o_rate <- rate$rate adj <- calc_rate(insp_bg_df2col, from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## single rate value, two concurrent blanks rate <- cr_obj_single by <- suppressWarnings(calc_rate(insp_bg_df3col, plot = F)) # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(insp_bg_df3col$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(insp_bg_df3col$dataframe[,c(1,2)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## three rate values, two concurrent blanks rate <- cr_obj_three by <- suppressWarnings(calc_rate(insp_bg_df3col, plot = F)) # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(insp_bg_df3col$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(insp_bg_df3col$dataframe[,c(1,2)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) ## eight rate values, two concurrent blanks rate <- cr_obj_eight by <- suppressWarnings(calc_rate(insp_bg_df3col, plot = F)) # rate should be this o_rate <- rate$rate # adjustment should be this adj1 <- calc_rate(by$dataframe[,1:2], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj2 <- calc_rate(by$dataframe[,c(1,2)], from = rate$summary$time, to = rate$summary$endtime, by = "time", plot = F)$rate adj <- (adj1+adj2)/2 expect_equal(adjust_rate(rate, method = "concurrent", by = by)$rate.adjusted, o_rate - (adj)) }) # method = "linear" ------------------------------------------------------- test_that("adjust_rate: method = 'linear' - accepts calc_rate objects as 'by'", { expect_error(suppressWarnings(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = cr_obj_single, time_by = NULL, by2 = -0.003, time_by2 = 40)), NA) }) test_that("adjust_rate: method = 'linear' - correct message", { # if method = "mean" specified expect_message(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: Rate adjustments applied using \"linear\" method.", fixed = TRUE) }) test_that("adjust_rate: method = 'linear' - stops if 'x' is not numeric, calc_rate, or auto_rate", { expect_error(adjust_rate(x = NULL, time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(x = "text", time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(x = crbg_df2col, time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(x = urchins.rd, time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") }) test_that("adjust_rate: method = 'linear' - stops if 'x' is numeric, and 'time_x' not also numeric, not entered or is unequal length", { expect_error(adjust_rate(x = -0.03, time_x = NULL, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = c(20,21), method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = "text", method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = bg_df2col, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = crbg_df2col, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") }) test_that("adjust_rate: method = 'linear' - stops if 'x' is calc_rate or auto_rate, and 'time_x' is not NULL", { expect_error(adjust_rate(x = cr_obj_single, time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") expect_error(adjust_rate(x = cr_obj_single, time_x = bg_df2col, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") expect_error(adjust_rate(x = ar_obj, time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") expect_error(adjust_rate(x = ar_obj, time_x = bg_df2col, method = "linear", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") }) test_that("adjust_rate: method = 'linear' - stops if 'by' is not a single numeric value, or data.frame, inspect or calc_rate.bg", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = NULL, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = c(-0.001,-0.002), time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = "text", time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = ar_obj, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") }) test_that("adjust_rate: method = 'linear' - stops if 'by' is a single numeric value, and 'time_by' is not entered or not also a single numeric", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = NULL, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = crbg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") }) test_that("adjust_rate: method = 'linear' - stops if 'by' is dataframe, calc_rate.bg, or inspect, and 'time_by' is not NULL", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = bg_df2col, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = bg_df2col, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = bg_df2col, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = bg_df2col, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = bg_df2col, time_by = crbg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = crbg_df2col, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = crbg_df2col, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = crbg_df2col, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = crbg_df2col, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = crbg_df2col, time_by = crbg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = insp_bg_df2col, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = insp_bg_df2col, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = insp_bg_df2col, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = insp_bg_df2col, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = insp_bg_df2col, time_by = insp_bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") }) test_that("adjust_rate: method = 'linear' - stops if 'by2' is not a single numeric value, or data.frame, inspect or calc_rate.bg", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = NULL, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = c(-0.001,-0.002), time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = "text", time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = ar_obj, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") }) test_that("adjust_rate: method = 'linear' - stops if 'by2' is a single numeric value, and 'time_by2' is not entered or not also a single numeric", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = -0.002, time_by2 = NULL, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = -0.002, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = -0.002, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = -0.002, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = -0.002, time_by2 = crbg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") }) test_that("adjust_rate: method = 'linear' - stops if 'by2' is dataframe, calc_rate.bg, or inspect, and 'time_by2' is not NULL", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = bg_df2col, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = bg_df2col, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = bg_df2col, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = bg_df2col, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = bg_df2col, time_by2 = crbg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = crbg_df2col, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = crbg_df2col, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = crbg_df2col, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = crbg_df2col, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = crbg_df2col, time_by2 = crbg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = insp_bg_df2col, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = insp_bg_df2col, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = insp_bg_df2col, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = insp_bg_df2col, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by2 = insp_bg_df2col, time_by2 = insp_bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"linear\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") }) test_that("adjust_rate: method = 'linear' - stops if 'time_by' and 'time_by2' are wrong way round (either entered or extracted from objects)", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = 40, by2 = -0.003, time_by2 = 0), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = crbg_post_2col, time_by = NULL, by2 = crbg_pre_2col, time_by2 = NULL), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = insp_post_2col, time_by = NULL, by2 = insp_pre_2col, time_by2 = NULL), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = bgdf_post_2col, time_by = NULL, by2 = bgdf_pre_2col, time_by2 = NULL), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") }) test_that("adjust_rate: method = 'linear' - warns if any timestamps of 'x' rates are outside (i.e. before/after) the time_by' and 'time_by2' time range", { # one rate outside expect_warning(adjust_rate(x = -0.03, time_x = 10, method = "linear", by = -0.002, time_by = 20, by2 = -0.003, time_by2 = 40), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") # two rates, both outside expect_warning(adjust_rate(x = c(-0.03, -0.02), time_x = c(10,15), method = "linear", by = -0.002, time_by = 20, by2 = -0.003, time_by2 = 40), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") # two rates, one outside expect_warning(adjust_rate(x = c(-0.03, -0.02), time_x = c(10,25), method = "linear", by = -0.002, time_by = 20, by2 = -0.003, time_by2 = 40), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") # using input objects expect_warning(adjust_rate(x = cr_pre, time_x = NULL, method = "linear", by = spec_insp, time_by = NULL, by2 = insp_post_2col, time_by2 = NULL), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") }) test_that("adjust_rate: method = 'linear' - warns if 'by' and 'by2' rate values have opposite sign", { expect_warning(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.002, time_by = 0, by2 = 0.003, time_by2 = 40), "adjust_rate: background rates in 'by' and 'by2' differ in sign \\(i.e. one is \\+ve, one is \\-ve\\).") expect_warning(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = 0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: background rates in 'by' and 'by2' differ in sign \\(i.e. one is \\+ve, one is \\-ve\\).") expect_warning(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = 0.002, time_by = 0, by2 = crbg_post_2col, time_by2 = NULL), "adjust_rate: background rates in 'by' and 'by2' differ in sign \\(i.e. one is \\+ve, one is \\-ve\\).") ## test the warning ISN'T SHOWN when either (or both) are zero expect_warning(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = 0, time_by = 0, by2 = -0.003, time_by2 = 40), NA) expect_warning(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = -0.003, time_by = 0, by2 = 0, time_by2 = 40), NA) expect_warning(adjust_rate(x = -0.03, time_x = 20, method = "linear", by = 0, time_by = 0, by2 = 0, time_by2 = 40), NA) }) ## These are tests of exact values we KNOW are correct - see various tests file for originals test_that("adjust_rate: method = 'linear' - outputs KNOWN correct results.", { ## all negative method <- "linear" x <- -100 time_x <- 50 by <- 0 time_by <- 0 by2 <- -1 time_by2 <- 100 expect_equal(adjust_rate(x = x, time_x = time_x, method = method, by = by, time_by = time_by, by2 = by2, time_by2 = time_by2)$rate.adjusted, -99.5) ## all positive method <- "linear" x <- 100 time_x <- 50 by <- 0 time_by <- 0 by2 <- 1 time_by2 <- 100 expect_equal(adjust_rate(x = x, time_x = time_x, method = method, by = by, time_by = time_by, by2 = by2, time_by2 = time_by2)$rate.adjusted, 99.5) method <- "linear" x <- 100 time_x <- 20 by <- 0 time_by <- 0 by2 <- 1 time_by2 <- 100 expect_equal(adjust_rate(x = x, time_x = time_x, method = method, by = by, time_by = time_by, by2 = by2, time_by2 = time_by2)$rate.adjusted, 99.8) method <- "linear" x <- 100 time_x <- 50 by <- -1 time_by <- 0 by2 <- 1 time_by2 <- 100 expect_equal(suppressWarnings(adjust_rate(x = x, time_x = time_x, method = method, by = by, time_by = time_by, by2 = by2, time_by2 = time_by2))$rate.adjusted, 100) method <- "linear" x <- -100 time_x <- 50 by <- -1 time_by <- 0 by2 <- 1 time_by2 <- 100 expect_equal(suppressWarnings(adjust_rate(x = x, time_x = time_x, method = method, by = by, time_by = time_by, by2 = by2, time_by2 = time_by2))$rate.adjusted, -100) ## numeric single inputs expect_error(adjust_rate(x = -100, by = 0, by2 = -50, time_x = 50, time_by = 0, time_by2 = 100, method = "linear"), regexp = NA) expect_equal(adjust_rate(x = -100, by = 0, by2 = -50, time_x = 50, time_by = 0, time_by2 = 100, method = "linear")$rate.adjusted, -75) ## with calc_rate.bg for by, by2 and both bg_obj1 <- suppressMessages(calc_rate.bg(urchins.rd[1:10,], 1, 18, plot = F)) bg_obj2 <- suppressMessages(calc_rate.bg(urchins.rd[250:271,], 1, 18, plot = F)) ## by expect_error(adjust_rate(x = -0.033, by = bg_obj1, by2 = -0.007030772, time_x = 15, time_by = NULL, time_by2 = 43.25, method = "linear"), regexp = NA) expect_equal(adjust_rate(x = -0.033, by = bg_obj1, by2 = -0.007030772, time_x = 15, time_by = NULL, time_by2 = 43.25, method = "linear")$adjustment, -0.005878997) ## by2 expect_error(adjust_rate(x = -0.033, by = -0.005298013, by2 = bg_obj2, time_x = 15, time_by = 0.75, time_by2 = NULL, method = "linear"), regexp = NA) expect_equal(adjust_rate(x = -0.033, by = -0.005298013, by2 = bg_obj2, time_x = 15, time_by = 0.75, time_by2 = NULL, method = "linear")$adjustment, -0.005878997) ## both expect_error(adjust_rate(x = -0.033, by = bg_obj1, by2 = bg_obj2, time_x = 15, time_by = NULL, time_by2 = NULL, method = "linear"), regexp = NA) expect_equal(adjust_rate(x = -0.033, by = bg_obj1, by2 = bg_obj2, time_x = 15, time_by = NULL, time_by2 = NULL, method = "linear")$adjustment, -0.005878997) ## numeric vector inputs expect_error(adjust_rate(x = -c(100,110,120), by = 0, by2 = -50, time_x = c(50,60,70), time_by = 0, time_by2 = 100, method = "linear"), regexp = NA) expect_equal(adjust_rate(x = -c(100,110,120), by = 0, by2 = -50, time_x = c(50,60,70), time_by = 0, time_by2 = 100, method = "linear")$rate.adjusted, c(-75, -80, -85)) ## calc_rate input - one rate cr_obj <- suppressWarnings(calc_rate(urchins.rd, plot = F)) ## whole dataset ## accepts calc_rate object expect_error(adjust_rate(x = cr_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 100, method = "linear"), regexp = NA) ## should apply exactly half of the by2 correction if over same time period expect_equal(adjust_rate(x = cr_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 45, method = "linear")$adjustment, -0.01/2) expect_equal(adjust_rate(x = cr_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 45, method = "linear")$rate.adjusted, -0.02282768) ## calc_rate input - multiples rates cr_obj <- suppressWarnings(calc_rate(urchins.rd, from = c(0,10,20,30), to = c(10,20,30,40), plot = F)) ## accepts calc_rate object expect_error(adjust_rate(x = cr_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 100, method = "linear"), regexp = NA) ## should apply a ninth to seven ninths of the by2 correction if over same time period expect_equal(adjust_rate(x = cr_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 45, method = "linear")$adjustment, c(-0.01*1/9, -0.01*3/9, -0.01*5/9, -0.01*7/9)) expect_equal(adjust_rate(x = cr_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 45, method = "linear")$rate.adjusted, c(-0.03178548, -0.02555831, -0.02166402, -0.01793542)) ## auto_rate input ar_obj <- suppressWarnings(auto_rate(urchins.rd, plot = F)) ## accepts auto_rate object expect_error(adjust_rate(x = ar_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 100, method = "linear"), regexp = NA) ## values expect_equal(adjust_rate(x = ar_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 45, method = "linear")$adjustment, c(-0.003477778, -0.007422222, -0.001066667, -0.001222222)) expect_equal(adjust_rate(x = ar_obj, by = 0, by2 = -0.01, time_by = 0, time_by2 = 45, method = "linear")$rate.adjusted, c(-0.02578789, -0.01791415, -0.03132537, -0.03072295)) }) # method = "exponential" -------------------------------------------------- test_that("adjust_rate: method = 'exponential' - correct message", { # if method = "mean" specified expect_message(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: Rate adjustments applied using \"exponential\" method.", fixed = TRUE) }) test_that("adjust_rate: method = 'exponential' - stops if 'x' is not numeric, calc_rate, or auto_rate", { expect_error(adjust_rate(x = NULL, time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(x = "text", time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(x = crbg_df2col, time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") expect_error(adjust_rate(x = urchins.rd, time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'x' input must be a numeric value or vector, or an object of class 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int'.") }) test_that("adjust_rate: method = 'exponential' - stops if 'x' is numeric, and 'time_x' not also numeric, not entered or is unequal length", { expect_error(adjust_rate(x = -0.03, time_x = NULL, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = c(20,21), method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = "text", method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = bg_df2col, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") expect_error(adjust_rate(x = -0.03, time_x = crbg_df2col, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'x' input, the 'time_x' must be a numeric input of the same length \\(i.e. timestamp\\(s\\) for all rates in 'x'\\).") }) test_that("adjust_rate: method = 'exponential' - stops if 'x' is calc_rate or auto_rate, and 'time_x' is not NULL", { expect_error(adjust_rate(x = cr_obj_single, time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") expect_error(adjust_rate(x = cr_obj_single, time_x = bg_df2col, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") expect_error(adjust_rate(x = ar_obj, time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") expect_error(adjust_rate(x = ar_obj, time_x = bg_df2col, method = "exponential", by = -0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a 'calc_rate', 'calc_rate.int', 'auto_rate', or 'auto_rate.int' 'x' input, the 'time_x' input must be NULL.") }) test_that("adjust_rate: method = 'exponential' - stops if 'by' is not a single numeric value, or data.frame, inspect or calc_rate.bg", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = NULL, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = c(-0.001,-0.002), time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = "text", time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = ar_obj, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", the 'by' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' object containing background time~oxygen data.") }) test_that("adjust_rate: method = 'exponential' - stops if 'by' is a single numeric value, and 'time_by' is not entered or not also a single numeric", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = NULL, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = crbg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by' input, the 'time_by' input also requires a single numeric value \\(i.e. a timestamp for 'by' background rate\\).") }) test_that("adjust_rate: method = 'exponential' - stops if 'by' is dataframe, calc_rate.bg, or inspect, and 'time_by' is not NULL", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = bg_df2col, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = bg_df2col, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = bg_df2col, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = bg_df2col, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = bg_df2col, time_by = crbg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = crbg_df2col, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = crbg_df2col, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = crbg_df2col, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = crbg_df2col, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = crbg_df2col, time_by = crbg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = insp_bg_df2col, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = insp_bg_df2col, time_by = "text", by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = insp_bg_df2col, time_by = c(1,2), by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = insp_bg_df2col, time_by = bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = insp_bg_df2col, time_by = insp_bg_df2col, by2 = -0.003, time_by2 = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by' input, the 'time_by' must be NULL.") }) test_that("adjust_rate: method = 'exponential' - stops if 'by2' is not a single numeric value, or data.frame, inspect or calc_rate.bg", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = NULL, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = c(-0.001,-0.002), time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = "text", time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = ar_obj, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", the 'by2' input must be a single numeric value, or a 'data.frame', 'inspect', 'calc_rate.bg', or `calc_rate` object containing background time~oxygen data.") }) test_that("adjust_rate: method = 'exponential' - stops if 'by2' is a single numeric value, and 'time_by2' is not entered or not also a single numeric", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = -0.002, time_by2 = NULL, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = -0.002, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = -0.002, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = -0.002, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = -0.002, time_by2 = crbg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\" and a numeric 'by2' input, the 'time_by2' input also requires a single numeric value \\(i.e. a timestamp for 'by2' background rate\\).") }) test_that("adjust_rate: method = 'exponential' - stops if 'by2' is dataframe, calc_rate.bg, or inspect, and 'time_by2' is not NULL", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = bg_df2col, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = bg_df2col, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = bg_df2col, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = bg_df2col, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = bg_df2col, time_by2 = crbg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = crbg_df2col, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = crbg_df2col, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = crbg_df2col, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = crbg_df2col, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = crbg_df2col, time_by2 = crbg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = insp_bg_df2col, time_by2 = 0, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = insp_bg_df2col, time_by2 = "text", by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = insp_bg_df2col, time_by2 = c(1,2), by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = insp_bg_df2col, time_by2 = bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by2 = insp_bg_df2col, time_by2 = insp_bg_df2col, by = -0.003, time_by = 40), "adjust_rate: For method = \"exponential\", and a 'data.frame', 'inspect', 'calc_rate.bg', or 'calc_rate' 'by2' input, the 'time_by2' must be NULL.") }) test_that("adjust_rate: method = 'exponential' - stops if 'time_by' and 'time_by2' are wrong way round (either entered or extracted from objects)", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = 40, by2 = -0.003, time_by2 = 0), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = crbg_post_2col, time_by = NULL, by2 = crbg_pre_2col, time_by2 = NULL), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = insp_post_2col, time_by = NULL, by2 = insp_pre_2col, time_by2 = NULL), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = bgdf_post_2col, time_by = NULL, by2 = bgdf_pre_2col, time_by2 = NULL), "adjust_rate: Error in inputs. Timestamp for 'by2' is before timestamp for 'by' suggesting they are in the wrong order or come from different datasets.") }) test_that("adjust_rate: method = 'exponential' - warns if any timestamps of 'x' rates are outside (i.e. before/after) the time_by' and 'time_by2' time range", { # one rate outside expect_warning(adjust_rate(x = -0.03, time_x = 10, method = "exponential", by = -0.002, time_by = 20, by2 = -0.003, time_by2 = 40), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") # two rates, both outside expect_warning(adjust_rate(x = c(-0.03, -0.02), time_x = c(10,15), method = "exponential", by = -0.002, time_by = 20, by2 = -0.003, time_by2 = 40), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") # two rates, one outside expect_warning(adjust_rate(x = c(-0.03, -0.02), time_x = c(10,25), method = "exponential", by = -0.002, time_by = 20, by2 = -0.003, time_by2 = 40), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") # using input objects expect_warning(adjust_rate(x = cr_pre, time_x = NULL, method = "exponential", by = spec_insp, time_by = NULL, by2 = insp_post_2col, time_by2 = NULL), "adjust_rate: One or more of the timestamps for the rate\\(s\\) in 'x' do not lie between the timestamps for the 'by' and 'by2' background rates.") }) test_that("adjust_rate: method = 'exponential' - stops if 'by' and 'by2' rate values have opposite sign", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = -0.002, time_by = 0, by2 = 0.003, time_by2 = 40), "adjust_rate: method = \"exponential\" cannot be used when 'by' and 'by2' background rates are not the same sign \\(i.e. one is \\+ve, one is \\-ve\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = 0.002, time_by = 0, by2 = -0.003, time_by2 = 40), "adjust_rate: method = \"exponential\" cannot be used when 'by' and 'by2' background rates are not the same sign \\(i.e. one is \\+ve, one is \\-ve\\).") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = 0.002, time_by = 0, by2 = crbg_post_2col, time_by2 = NULL), "adjust_rate: method = \"exponential\" cannot be used when 'by' and 'by2' background rates are not the same sign \\(i.e. one is \\+ve, one is \\-ve\\).") }) test_that("adjust_rate: method = 'exponential' - stops if 'by' or 'by2' rate values are zero", { expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = 0, time_by = 0, by2 = 0.003, time_by2 = 40), "adjust_rate: method = \"exponential\" cannot be used when a 'by' or 'by2' background rate is zero.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = 0.002, time_by = 0, by2 = 0, time_by2 = 40), "adjust_rate: method = \"exponential\" cannot be used when a 'by' or 'by2' background rate is zero.") expect_error(adjust_rate(x = -0.03, time_x = 20, method = "exponential", by = 0, time_by = 0, by2 = 0, time_by2 = 40), "adjust_rate: method = \"exponential\" cannot be used when a 'by' or 'by2' background rate is zero.") }) test_that("adjust_rate: method = 'exponential' - outputs KNOWN correct results.", { ## These values checked in Excel ¯\_(ツ)_/¯ ## all negative method <- "exponential" x <- -100 time_x <- 50 by <- -1 time_by <- 0 by2 <- -2 time_by2 <- 100 expect_equal(adjust_rate(x = x, time_x = time_x, method = method, by = by, time_by = time_by, by2 = by2, time_by2 = time_by2)$rate.adjusted, -98.58579, tolerance = 0.00001) ## all positive method <- "exponential" x <- 89.67 time_x <- 21.3 by <- 7.1 time_by <- 3 by2 <- 17.8 time_by2 <- 67 expect_equal(adjust_rate(x = x, time_x = time_x, method = method, by = by, time_by = time_by, by2 = by2, time_by2 = time_by2)$rate.adjusted, 80.43592, tolerance = 0.00001) }) # S3 tests ---------------------------------------------------------------- test_that("adjust_rate can be printed - if adjustment done to calc_rate or auto_rate object", { cr <- suppressWarnings(adjust_rate(calc_rate(sardine.rd, plot = F), 0.001)) ar <- suppressWarnings(adjust_rate(auto_rate(sardine.rd, plot = F), 0.001)) expect_output(print(cr)) expect_output(print(ar)) }) test_that("adjust_rate can be printed - if adjustment done to numeric value", { nr <- adjust_rate(0.1, 0.001) expect_output(print(nr)) }) test_that("adjust_rate S3 generics work", { cr <- suppressWarnings(adjust_rate(calc_rate(sardine.rd, plot = F), 0.001)) ar <- suppressWarnings(adjust_rate(auto_rate(sardine.rd, plot = F), 0.001)) nr <- suppressWarnings(adjust_rate(0.1, 0.001)) expect_output(summary(cr)) expect_output(summary(ar)) expect_output(summary(nr)) expect_is(summary(cr, export = TRUE), "data.table") expect_output(print(cr)) expect_output(print(ar)) expect_output(print(nr)) expect_output(suppressWarnings(mean(cr))) expect_output(suppressWarnings(mean(ar))) expect_output(suppressWarnings(mean(nr))) expect_is(suppressWarnings(mean(cr, export = TRUE)), "numeric") # errors expect_error(print(cr, pos = 2:3), "print.adjust_rate: 'pos' must be a single value. To examine multiple results use summary().") expect_error(print(cr, pos = 2), "print.adjust_rate: Invalid 'pos' rank: only 1 adjusted rates found.") expect_output(summary(cr, pos = 1), "Summary of rate results from entered 'pos' rank\\(s):") expect_output(summary(cr, pos = 1), "Adjustment was applied using 'mean' method.") expect_error(summary(cr, pos = 2), "summary.adjust_rate: Invalid 'pos' rank: only 1 adjusted rates found.") expect_error(mean(cr, pos = 2), "mean.adjust_rate: Invalid 'pos' rank: only 1 adjusted rates found.") expect_output(mean(cr, pos = 1), "Mean of adjusted rate results from entered 'pos' ranks:") expect_message(mean(cr, pos = 1), "Only 1 rate found. Returning mean rate anyway...") }) test_that("adjust_rate applies mean method by default", { ## should adjust all by 4 ar <- adjust_rate(x = c(10,20,30,40,50), by = c(2,3,4,5,6)) expect_equal(ar$rate.adjusted, c(6,16,26,36,46)) }) test_that("adjust_rate - stops with plot()", { ar <- adjust_rate(x = c(10,20,30,40,50), by = c(2,3,4,5,6)) expect_message(plot(ar), regexp = "adjust_rate: plot\\(\\) is not available for 'adjust_rate' objects.") }) # }) }) ## end capture.output