# rm(list=ls()) # library(testthat) # test_file("tests/testthat/test-inspect.ft.R") # covr::file_coverage("R/inspect.ft.R", "tests/testthat/test-inspect.ft.R") # cvr <- covr::package_coverage() # covr::report(cvr) # covr::report(covr::package_coverage()) capture.output({ ## stops printing console outputs on assigning # Create multicolumn dfs for testing -------------------------------------- { ## versions with various errors ## non-numeric in time ft_mult_time_nonnum_1 <- as.data.frame(flowthrough_mult.rd) ft_mult_time_nonnum_1[432,1] ft_mult_time_nonnum_1[432,1] <- "7.2" ## inf in time ft_mult_time_inf_1 <- flowthrough_mult.rd ft_mult_time_inf_1[431:433,1] ft_mult_time_inf_1[432,1] <- Inf ft_mult_time_inf_3 <- flowthrough_mult.rd ft_mult_time_inf_3[431:433,1] ft_mult_time_inf_3[432,1] <- Inf ft_mult_time_inf_3[623:625,1] ft_mult_time_inf_3[624,1] <- Inf ft_mult_time_inf_3[723:725,1] ft_mult_time_inf_3[724,1] <- Inf ## loads - more than 20 to check printing ft_mult_time_inf_mult <- flowthrough_mult.rd ft_mult_time_inf_mult[431:462,1] ft_mult_time_inf_mult[432:461,1] <- Inf ft_mult_time_inf_mult[621:672,1] ft_mult_time_inf_mult[622:671,1] <- Inf ## versions with various errors ## NaN in time ft_mult_time_nan_1 <- flowthrough_mult.rd ft_mult_time_nan_1[431:433,1] ft_mult_time_nan_1[432,1] <- NA ft_mult_time_nan_3 <- flowthrough_mult.rd ft_mult_time_nan_3[431:433,1] ft_mult_time_nan_3[432,1] <- NA ft_mult_time_nan_3[623:625,1] ft_mult_time_nan_3[624,1] <- NA ft_mult_time_nan_3[723:725,1] ft_mult_time_nan_3[724,1] <- NA ## loads - more than 20 to check printing ft_mult_time_nan_mult <- flowthrough_mult.rd ft_mult_time_nan_mult[431:462,1] ft_mult_time_nan_mult[432:461,1] <- NA ft_mult_time_nan_mult[621:672,1] ft_mult_time_nan_mult[622:671,1] <- NA ## non-sequential in time ft_mult_time_nonseq_1 <- flowthrough_mult.rd ft_mult_time_nonseq_1[431:433,1] ft_mult_time_nonseq_1[432:433,1] <- c(432,431) ft_mult_time_nonseq_3 <- flowthrough_mult.rd ft_mult_time_nonseq_3[431:433,1] ft_mult_time_nonseq_3[432:433,1] <- c(432,431) ft_mult_time_nonseq_3[751:753,1] ft_mult_time_nonseq_3[752:753,1] <- c(752,751) ft_mult_time_nonseq_3[781:783,1] ft_mult_time_nonseq_3[782:783,1] <- c(782,781) ft_mult_time_nonseq_mult <- flowthrough_mult.rd ft_mult_time_nonseq_mult[431:462,1] ft_mult_time_nonseq_mult[432:461,1] <- ft_mult_time_nonseq_mult[461:432,1] ft_mult_time_nonseq_mult[621:672,1] ft_mult_time_nonseq_mult[622:671,1] <- ft_mult_time_nonseq_mult[671:622,1] ## duplicated in time ft_mult_time_dupe_1 <- flowthrough_mult.rd ft_mult_time_dupe_1[431:433,1] ft_mult_time_dupe_1[432:433,1] <- c(431,431) ft_mult_time_dupe_3 <- flowthrough_mult.rd ft_mult_time_dupe_3[431:434,1] ft_mult_time_dupe_3[432:434,1] <- c(431,431,431) ft_mult_time_dupe_3[751:753,1] ft_mult_time_dupe_3[752:753,1] <- c(752,752) ft_mult_time_dupe_3[781:787,1] ft_mult_time_dupe_3[782:787,1] <- c(781,781,781,781,781,781) ft_mult_time_dupe_mult <- flowthrough_mult.rd ft_mult_time_dupe_mult[431:462,1] ft_mult_time_dupe_mult[432:461,1] <- 431 ft_mult_time_dupe_mult[621:672,1] ft_mult_time_dupe_mult[622:671,1] <- 622 ## unevenly spaced in time ft_mult_time_uneven_1 <- flowthrough_mult.rd ft_mult_time_uneven_1[431:433,1] ft_mult_time_uneven_1 <- ft_mult_time_uneven_1[-432,] ft_mult_time_uneven_3 <- flowthrough_mult.rd ft_mult_time_uneven_3[431:434,1] ft_mult_time_uneven_3 <- ft_mult_time_uneven_3[-432,] ft_mult_time_uneven_3[751:753,1] ft_mult_time_uneven_3 <- ft_mult_time_uneven_3[-752,] ft_mult_time_uneven_3[781:787,1] ft_mult_time_uneven_3 <- ft_mult_time_uneven_3[-782,] ft_mult_time_uneven_mult <- flowthrough_mult.rd ft_mult_time_uneven_mult[431:482,1] ft_mult_time_uneven_mult <- ft_mult_time_uneven_mult[-seq(432, 472, 2),] ft_mult_time_uneven_mult[831:882,1] ft_mult_time_uneven_mult <- ft_mult_time_uneven_mult[-seq(832, 872, 2),] ## non-numeric in out.oxy ft_mult_out.oxy_nonnum_1 <- as.data.frame(flowthrough_mult.rd) ft_mult_out.oxy_nonnum_1[432,2] ft_mult_out.oxy_nonnum_1[432,2] <- "92.95885" ## non-numeric in in.oxy ft_mult_in.oxy_nonnum_1 <- as.data.frame(flowthrough_mult.rd) ft_mult_in.oxy_nonnum_1[432,6] ft_mult_in.oxy_nonnum_1[432,6] <- "97.19841" ## non-numeric in delta.oxy ft_mult_delta.oxy_nonnum_1 <- as.data.frame(flowthrough_mult.rd) ft_mult_delta.oxy_nonnum_1[432,10] ft_mult_delta.oxy_nonnum_1[432,10] <- "-4.239564" ## NaN in out.oxy ft_mult_out.oxy_nan_1 <- flowthrough_mult.rd ft_mult_out.oxy_nan_1[432,2] <- NA ft_mult_out.oxy_nan_3 <- flowthrough_mult.rd ft_mult_out.oxy_nan_3[432,2] <- NA ft_mult_out.oxy_nan_3[624,2] <- NA ft_mult_out.oxy_nan_3[724,2] <- NA ft_mult_out.oxy_nan_3[624,3] <- NA ft_mult_out.oxy_nan_3[724,3] <- NA ft_mult_out.oxy_nan_mult <- flowthrough_mult.rd ft_mult_out.oxy_nan_mult[432:461,2] <- NA ft_mult_out.oxy_nan_mult[622:671,2] <- NA ## NaN in in.oxy ft_mult_in.oxy_nan_1 <- flowthrough_mult.rd ft_mult_in.oxy_nan_1[432,5] <- NA ft_mult_in.oxy_nan_3 <- flowthrough_mult.rd ft_mult_in.oxy_nan_3[432,5] <- NA ft_mult_in.oxy_nan_3[624,5] <- NA ft_mult_in.oxy_nan_3[724,5] <- NA ft_mult_in.oxy_nan_3[624,6] <- NA ft_mult_in.oxy_nan_3[724,6] <- NA ft_mult_in.oxy_nan_mult <- flowthrough_mult.rd ft_mult_in.oxy_nan_mult[432:461,5] <- NA ft_mult_in.oxy_nan_mult[622:671,5] <- NA ## NaN in delta.oxy ft_mult_delta.oxy_nan_1 <- flowthrough_mult.rd ft_mult_delta.oxy_nan_1[432,8] <- NA ft_mult_delta.oxy_nan_3 <- flowthrough_mult.rd ft_mult_delta.oxy_nan_3[432,8] <- NA ft_mult_delta.oxy_nan_3[624,8] <- NA ft_mult_delta.oxy_nan_3[724,8] <- NA ft_mult_delta.oxy_nan_3[624,9] <- NA ft_mult_delta.oxy_nan_3[724,9] <- NA ft_mult_delta.oxy_nan_mult <- flowthrough_mult.rd ft_mult_delta.oxy_nan_mult[432:461,8] <- NA ft_mult_delta.oxy_nan_mult[622:671,8] <- NA ## inf in out.oxy ft_mult_out.oxy_inf_1 <- flowthrough_mult.rd ft_mult_out.oxy_inf_1[432,2] <- Inf ft_mult_out.oxy_inf_3 <- flowthrough_mult.rd ft_mult_out.oxy_inf_3[432,2] <- Inf ft_mult_out.oxy_inf_3[624,2] <- Inf ft_mult_out.oxy_inf_3[724,2] <- Inf ft_mult_out.oxy_inf_3[624,3] <- Inf ft_mult_out.oxy_inf_3[724,3] <- Inf ft_mult_out.oxy_inf_mult <- flowthrough_mult.rd ft_mult_out.oxy_inf_mult[432:461,2] <- Inf ft_mult_out.oxy_inf_mult[622:671,2] <- Inf ## inf in in.oxy ft_mult_in.oxy_inf_1 <- flowthrough_mult.rd ft_mult_in.oxy_inf_1[432,5] <- Inf ft_mult_in.oxy_inf_3 <- flowthrough_mult.rd ft_mult_in.oxy_inf_3[432,5] <- Inf ft_mult_in.oxy_inf_3[624,5] <- Inf ft_mult_in.oxy_inf_3[724,5] <- Inf ft_mult_in.oxy_inf_3[624,6] <- Inf ft_mult_in.oxy_inf_3[724,6] <- Inf ft_mult_in.oxy_inf_mult <- flowthrough_mult.rd ft_mult_in.oxy_inf_mult[432:461,5] <- Inf ft_mult_in.oxy_inf_mult[622:671,5] <- Inf ## inf in delta.oxy ft_mult_delta.oxy_inf_1 <- flowthrough_mult.rd ft_mult_delta.oxy_inf_1[432,8] <- Inf ft_mult_delta.oxy_inf_3 <- flowthrough_mult.rd ft_mult_delta.oxy_inf_3[432,8] <- Inf ft_mult_delta.oxy_inf_3[624,8] <- Inf ft_mult_delta.oxy_inf_3[724,8] <- Inf ft_mult_delta.oxy_inf_3[624,9] <- Inf ft_mult_delta.oxy_inf_3[724,9] <- Inf ft_mult_delta.oxy_inf_mult <- flowthrough_mult.rd ft_mult_delta.oxy_inf_mult[432:461,8] <- Inf ft_mult_delta.oxy_inf_mult[622:671,8] <- Inf ## 2 column input (i.e. time- and calculated delta) insp.ft.obj <- suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2, in.oxy = 6, delta.oxy = NULL, plot = F)) ## multi column input (i.e. time- and calculated delta) insp.ft.mult.obj <- suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:4, in.oxy = 6:8, delta.oxy = NULL, plot = F)) } # inspect.ft(flowthrough_mult.rd, time = "num.time", out.oxy = 2, # in.oxy = 6) # tests ------------------------------------------------------------------- test_that("inspect.ft - works with NULL inputs and applies defaults correctly",{ ## time = NULL expect_message(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = NULL, out.oxy = 2, in.oxy = 5, delta.oxy = NULL, plot = F)), regexp = "inspect.ft: Applying column default of 'time = 1") expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = NULL, out.oxy = 2, in.oxy = 5, delta.oxy = NULL, plot = F)), regexp = NA) expect_equal(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = NULL, out.oxy = 2, in.oxy = 5, delta.oxy = NULL, plot = F))$data$time[[1]], flowthrough_mult.rd[[1]]) # in.oxy = NULL & out.oxy = NULL & delta.oxy = NULL expect_message(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = NULL, in.oxy = NULL, delta.oxy = NULL, plot = F)), regexp = "inspect.ft: Applying column default of all non-time column\\(s\\) as 'delta.oxy'") expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = NULL, in.oxy = NULL, delta.oxy = NULL, plot = F)), regexp = NA) expect_equal(as.data.frame(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = NULL, in.oxy = NULL, delta.oxy = NULL, plot = F)$data$delta.oxy)), as.data.frame(flowthrough_mult.rd[,2:15])) }) test_that("inspect.ft - stops if input column numbers found to conflict",{ expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2:6, in.oxy = 5:9, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Input columns conflict.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = NULL, in.oxy = NULL, delta.oxy = 1:10, plot = F), regexp = "inspect.ft: Input columns conflict.") }) test_that("inspect.ft - stops if out.oxy entered and neither or in.oxy or in.oxy.value have inputs",{ expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2:3, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: With 'out.oxy' data, paired 'in.oxy' columns or an 'in.oxy.value' is required.") }) test_that("inspect.ft - stops if in.oxy entered and out.oxy does not have input",{ expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = NULL, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: An 'in.oxy' input requires paired 'out.oxy' column\\(s\\).") }) test_that("inspect.ft - stops if both or in.oxy and in.oxy.value have inputs",{ expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2:3, in.oxy = 4, in.oxy.value = 5, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Only one of 'in.oxy' or 'in.oxy.value' can be entered.") }) test_that("inspect.ft - correctly accepts and handles in.oxy.value input",{ expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2, in.oxy = NULL, in.oxy.value = 9, delta.oxy = NULL, plot = F))$dataframe$in.oxy.value, regexp = NA) expect_equal(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2, in.oxy = NULL, in.oxy.value = 9, delta.oxy = NULL, plot = F))$dataframe$in.oxy.value, rep(9, nrow(flowthrough_mult.rd))) }) test_that("inspect.ft - stops if out.oxy and in.oxy entered, but in.oxy does not have same number of columns or a single column.",{ expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:4, in.oxy = 5:6, in.oxy.value = NULL, delta.oxy = NULL, plot = F)), regexp = "inspect.ft: With 'out.oxy' data, 'in.oxy' must be a single column or an equal number of paired columns.") expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:4, in.oxy = 5:9, in.oxy.value = NULL, delta.oxy = NULL, plot = F)), regexp = "inspect.ft: With 'out.oxy' data, 'in.oxy' must be a single column or an equal number of paired columns.") expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:3, in.oxy = 4, in.oxy.value = NULL, delta.oxy = NULL, plot = F)), regexp = NA) expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:3, in.oxy = 4:5, in.oxy.value = NULL, delta.oxy = NULL, plot = F)), regexp = NA) }) test_that("inspect.ft - stops if delta.oxy entered and out.oxy, in.oxy or in.oxy.value have inputs",{ expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2, in.oxy = NULL, in.oxy.value = 4, delta.oxy = 3, plot = F), regexp = "inspect.ft: With 'delta.oxy' data, 'out.oxy', 'in.oxy' and 'in.oxy.value' should be NULL.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2, in.oxy = 4, in.oxy.value = NULL, delta.oxy = 3, plot = F), regexp = "inspect.ft: With 'delta.oxy' data, 'out.oxy', 'in.oxy' and 'in.oxy.value' should be NULL.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 4, in.oxy = 5, in.oxy.value = NULL, delta.oxy = 3, plot = F), regexp = "inspect.ft: With 'delta.oxy' data, 'out.oxy', 'in.oxy' and 'in.oxy.value' should be NULL.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = 4, delta.oxy = 3, plot = F), regexp = "inspect.ft: With 'delta.oxy' data, 'out.oxy', 'in.oxy' and 'in.oxy.value' should be NULL.") }) test_that("inspect.ft - stops if x not a dataframe", { expect_error(inspect.ft(as.matrix(flowthrough.rd), time = 1, out.oxy = 2, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'x' must be data.frame object.") expect_error(inspect.ft(flowthrough.rd[[1]], time = 1, out.oxy = 2, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'x' must be data.frame object.") expect_error(inspect.ft("blah", time = 1, out.oxy = 2, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'x' must be data.frame object.") }) test_that("inspect.ft - stops if column inputs malformed", { ## time expect_error(inspect.ft(flowthrough.rd, time = 1.1, out.oxy = 2, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'time' - some column inputs are not integers.") expect_error(inspect.ft(flowthrough.rd, time = 1:2, out.oxy = 3, in.oxy = 4, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'time' - cannot enter more than 1 column\\(s\\) with this input or this dataset.") expect_error(inspect.ft(flowthrough.rd, time = 8, out.oxy = 2, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'time' - one or more column inputs are out of range of allowed data columns.") ## out.oxy expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2.1, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'out.oxy' - some column inputs are not integers") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 4:9, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'out.oxy' - cannot enter more than 3 column\\(s\\) with this input or this dataset.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 8:9, in.oxy = 3, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'out.oxy' - one or more column inputs are out of range of allowed data columns.") ## in.oxy expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2, in.oxy = 3.1, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'in.oxy' - some column inputs are not integers.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 4:9, in.oxy = 2, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'out.oxy' - cannot enter more than 3 column\\(s\\) with this input or this dataset.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2:3, in.oxy = 8:9, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: 'in.oxy' - one or more column inputs are out of range of allowed data columns.") ## delta.oxy expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 4.1, plot = F), regexp = "inspect.ft: 'delta.oxy' - some column inputs are not integers") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 2:5, plot = F), regexp = "inspect.ft: 'delta.oxy' - cannot enter more than 3 column\\(s\\) with this input or this dataset.") expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 5, plot = F), regexp = "inspect.ft: 'delta.oxy' - one or more column inputs are out of range of allowed data columns.") }) test_that("inspect.ft - correctly identifies column name strings", { # single time and oxygen columns work without error expect_error(inspect.ft(flowthrough.rd, time = "time", out.oxy = "oxy.out", in.oxy = "oxy.in", plot = FALSE), NA) # delta data expect_error(inspect.ft(flowthrough.rd, time = "time", delta.oxy = "oxy.delta", plot = FALSE), NA) # same as using numbers # Everything except the $call should be the same expect_equal(inspect.ft(flowthrough.rd, time = "time", out.oxy = "oxy.out", in.oxy = "oxy.in", plot = FALSE)[2:8], inspect.ft(flowthrough.rd, time = 1, out.oxy = 2, in.oxy = 3, plot = FALSE)[2:8]) expect_equal(inspect.ft(flowthrough.rd, time = "time", delta.oxy = "oxy.delta", plot = FALSE)[2:8], inspect.ft(flowthrough.rd, time = 1, delta.oxy = 4, plot = FALSE)[2:8]) # multiple oxygen columns expect_error(inspect.ft(flowthrough.rd, time = "time", out.oxy = c("oxy.out","oxy.delta"), in.oxy = c("oxy.in"), plot = FALSE), NA) # same as using numbers # Everything except the $call should be the same expect_equal(inspect.ft(flowthrough.rd, time = "time", out.oxy = c("oxy.out","oxy.delta"), in.oxy = c("oxy.in"), plot = FALSE)[2:8], inspect.ft(flowthrough.rd, time = 1, out.oxy = c(2,4), in.oxy = 3, plot = FALSE)[2:8]) # add.data expect_error(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2, in.oxy = 3, add.data = "oxy.delta", plot = FALSE), NA) # same as using numbers # Everything except the $call should be the same expect_equal(inspect.ft(flowthrough.rd, time = 1, out.oxy = 2, in.oxy = 3, add.data = "oxy.delta", plot = FALSE)$add.data, inspect.ft(flowthrough.rd, time = 1, out.oxy = 2, in.oxy = 3, add.data = 4, plot = FALSE)$add.data) }) test_that("inspect.ft - outputs correct warnings", { ## time nonnum expect_warning(inspect.ft(ft_mult_time_nonnum_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Time column not numeric. Other column checks skipped.") ## time Inf expect_warning(inspect.ft(ft_mult_time_inf_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Time column. Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_time_inf_3, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Time column. Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_time_inf_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Time column. Remove or replace before proceeding.") ## time NA expect_warning(inspect.ft(ft_mult_time_nan_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Time column.") expect_warning(inspect.ft(ft_mult_time_nan_3, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Time column.") expect_warning(inspect.ft(ft_mult_time_nan_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Time column.") ## time non-seq expect_warning(inspect.ft(ft_mult_time_nonseq_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Non-sequential Time values found.") expect_warning(inspect.ft(ft_mult_time_nonseq_3, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Non-sequential Time values found.") expect_warning(inspect.ft(ft_mult_time_nonseq_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Non-sequential Time values found.") ## time duplicates expect_warning(inspect.ft(ft_mult_time_dupe_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Duplicate Time values found.") expect_warning(inspect.ft(ft_mult_time_dupe_3, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Duplicate Time values found.") expect_warning(inspect.ft(ft_mult_time_dupe_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Duplicate Time values found.") ## time uneven expect_warning(inspect.ft(ft_mult_time_uneven_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Time values are not evenly-spaced") expect_warning(inspect.ft(ft_mult_time_uneven_3, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Time values are not evenly-spaced") expect_warning(inspect.ft(ft_mult_time_uneven_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "Time values are not evenly-spaced.") ## out.oxy nonnum expect_warning(inspect.ft(ft_mult_out.oxy_nonnum_1, time = 1, out.oxy = 2:4, in.oxy = 6:8, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Oxygen column\\(s) not numeric. Other column checks skipped.") ## out.oxy Inf expect_warning(inspect.ft(ft_mult_out.oxy_inf_1, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_out.oxy_inf_3, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_out.oxy_inf_mult, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") ## out.oxy NA expect_warning(inspect.ft(ft_mult_out.oxy_nan_1, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") expect_warning(inspect.ft(ft_mult_out.oxy_nan_3, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") expect_warning(inspect.ft(ft_mult_out.oxy_nan_mult, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") ## out.oxy nonnum expect_warning(inspect.ft(ft_mult_in.oxy_nonnum_1, time = 1, out.oxy = 2:4, in.oxy = 6:8, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Oxygen column\\(s) not numeric. Other column checks skipped.") ## in.oxy Inf expect_warning(inspect.ft(ft_mult_in.oxy_inf_1, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_in.oxy_inf_3, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_in.oxy_inf_mult, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") ## in.oxy NA expect_warning(inspect.ft(ft_mult_in.oxy_nan_1, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") expect_warning(inspect.ft(ft_mult_in.oxy_nan_3, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") expect_warning(inspect.ft(ft_mult_in.oxy_nan_mult, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") ## delta.oxy non-numeric expect_warning(inspect.ft(ft_mult_delta.oxy_nonnum_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F), regexp = "inspect.ft: Oxygen column\\(s) not numeric. Other column checks skipped.") ## delta.oxy Inf expect_warning(inspect.ft(ft_mult_delta.oxy_inf_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_delta.oxy_inf_3, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") expect_warning(inspect.ft(ft_mult_delta.oxy_inf_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F), regexp = "inspect.ft: Inf/-Inf values detected in Oxygen column\\(s). Remove or replace before proceeding.") ## delta.oxy NA expect_warning(inspect.ft(ft_mult_delta.oxy_nan_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") expect_warning(inspect.ft(ft_mult_delta.oxy_nan_3, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") expect_warning(inspect.ft(ft_mult_delta.oxy_nan_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F), regexp = "NA/NaN values detected in Oxygen column\\(s\\).") }) test_that("inspect.ft works with 2-column data", { expect_error(inspect.ft(sardine.rd[,1:2], plot = F), regexp = NA) expect_equal(ncol(inspect.ft(sardine.rd[,1:2], plot = F)$dataframe), 2) }) test_that("inspect.ft works with multi-column data", { expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:4, in.oxy = 5:7, plot = F)), regexp = NA) expect_equal(ncol(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:4, in.oxy = 5:7, plot = F))$dataframe), 7 + 3) # 7 inputs, 3 delta calcs }) test_that("inspect.ft outputs plot", { expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2, in.oxy = 5, delta.oxy = NULL, plot = T)), regexp = NA) expect_output(plot(insp.ft.obj)) expect_error(plot(insp.ft.obj), regexp = NA) expect_output(plot(insp.ft.mult.obj)) expect_error(plot(insp.ft.mult.obj), regexp = NA) }) test_that("inspect.ft outputs plot with 'add.data' input", { expect_output(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2, in.oxy = 5, delta.oxy = NULL, add.data = 15, plot = T))) expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2, in.oxy = 5, delta.oxy = NULL, add.data = 15, plot = T)), regexp = NA) # multi cols expect_message(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:3, in.oxy = 5:6, delta.oxy = NULL, add.data = 15, plot = T)), "plot.inspect.ft: Additional data source cannot be plotted for multiple columns.") expect_error(suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, out.oxy = 2:3, in.oxy = 5:6, delta.oxy = NULL, add.data = 15, plot = T)), regexp = NA) }) test_that("inspect.ft outputs plots with different 'wdith'", { expect_output(plot(insp.ft.obj, width = 0.4)) expect_error(plot(insp.ft.obj, width = 0.4), regexp = NA) }) test_that("inspect.ft outputs plots when 'pos =' option is used", { expect_output(plot(insp.ft.mult.obj, pos = 2)) expect_error(plot(insp.ft.mult.obj, pos = 2), regexp = NA) expect_output(plot(insp.ft.mult.obj, pos = 2)) expect_error(plot(insp.ft.mult.obj, pos = 2), regexp = NA) }) test_that("inspect.ft message with multiple plots and add.data", { # object with multiple delta cols but also add.data obj <- suppressWarnings(inspect.ft(flowthrough_mult.rd, time = 1, delta.oxy = 10:12, plot = F, add.data = 15)) expect_message(plot(obj), "plot.inspect.ft: Additional data source cannot be plotted for multiple columns.") }) test_that("inspect.ft does not plot when 'pos =' input too large", { expect_error(plot(insp.ft.obj, pos = 9), regexp = "plot.inspect.ft: Invalid 'pos' input: only 1 data inputs found.") expect_error(plot(insp.ft.mult.obj, pos = 9), regexp = "inspect.ft: Invalid 'pos' input: only 3 data inputs found.") }) test_that("inspect.ft - mean S3 returns message", { expect_message(mean(insp.ft.obj), "inspect.ft: mean\\() is not available for 'inspect.ft' objects.") }) test_that("inspect.ft objects can be printed, including those which show warnings", { ## regular good data expect_output(print(insp.ft.obj)) expect_error(print(insp.ft.obj), regexp = NA) expect_output(print(insp.ft.mult.obj)) expect_error(print(insp.ft.mult.obj), regexp = NA) ## various errors/warnings ob1 <- suppressWarnings(inspect.ft(ft_mult_out.oxy_nan_mult, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob2 <- suppressWarnings(inspect.ft(ft_mult_time_nonseq_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob3 <- suppressWarnings(inspect.ft(ft_mult_time_nan_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob4 <- suppressWarnings(inspect.ft(ft_mult_out.oxy_nan_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob5 <- suppressWarnings(inspect.ft(ft_mult_out.oxy_nan_mult, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob6 <- suppressWarnings(inspect.ft(ft_mult_in.oxy_nan_3, time = 1, out.oxy = 2:4, in.oxy = 5:7, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob7 <- suppressWarnings(inspect.ft(ft_mult_delta.oxy_nan_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F)) ob8 <- suppressWarnings(inspect.ft(ft_mult_time_dupe_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob8 <- suppressWarnings(inspect.ft(ft_mult_time_dupe_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob9 <- suppressWarnings(inspect.ft(ft_mult_time_inf_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob10 <- suppressWarnings(inspect.ft(ft_mult_time_inf_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob11 <- suppressWarnings(inspect.ft(ft_mult_out.oxy_inf_1, time = 1, out.oxy = 2, in.oxy = 6, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob12 <- suppressWarnings(inspect.ft(ft_mult_out.oxy_inf_mult, time = 1, out.oxy = 2:4, in.oxy = 6:8, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob13 <- suppressWarnings(inspect.ft(ft_mult_in.oxy_inf_1, time = 1, out.oxy = 2, in.oxy = 6, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob14 <- suppressWarnings(inspect.ft(ft_mult_in.oxy_inf_mult, time = 1, out.oxy = 2:4, in.oxy = 6:8, in.oxy.value = NULL, delta.oxy = NULL, plot = F)) ob15 <- suppressWarnings(inspect.ft(ft_mult_delta.oxy_inf_1, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8, plot = F)) ob16 <- suppressWarnings(inspect.ft(ft_mult_delta.oxy_inf_mult, time = 1, out.oxy = NULL, in.oxy = NULL, in.oxy.value = NULL, delta.oxy = 8:10, plot = F)) expect_output(print(ob1)) expect_output(print(ob2)) expect_output(print(ob3)) expect_output(print(ob4)) expect_output(print(ob5)) expect_output(print(ob6)) expect_output(print(ob7)) expect_output(print(ob8)) expect_output(print(ob9)) expect_output(print(ob10)) expect_output(print(ob11)) expect_output(print(ob12)) expect_output(print(ob13)) expect_output(print(ob14)) expect_output(print(ob15)) expect_output(print(ob16)) expect_error(print(ob1), regexp = NA) expect_error(print(ob2), regexp = NA) expect_error(print(ob3), regexp = NA) expect_error(print(ob4), regexp = NA) expect_error(print(ob5), regexp = NA) expect_error(print(ob6), regexp = NA) expect_error(print(ob7), regexp = NA) expect_error(print(ob8), regexp = NA) expect_error(print(ob9), regexp = NA) expect_error(print(ob10), regexp = NA) expect_error(print(ob11), regexp = NA) expect_error(print(ob12), regexp = NA) expect_error(print(ob13), regexp = NA) expect_error(print(ob14), regexp = NA) expect_error(print(ob15), regexp = NA) expect_error(print(ob16), regexp = NA) expect_output(summary(ob1)) expect_output(summary(ob2)) expect_output(summary(ob3)) expect_output(summary(ob4)) expect_output(summary(ob5)) expect_output(summary(ob6)) expect_output(summary(ob7)) expect_output(summary(ob8)) expect_output(summary(ob9)) expect_output(summary(ob10)) expect_output(summary(ob11)) expect_output(summary(ob12)) expect_output(summary(ob13)) expect_output(summary(ob14)) expect_output(summary(ob15)) expect_output(summary(ob16)) expect_error(summary(ob1), regexp = NA) expect_error(summary(ob2), regexp = NA) expect_error(summary(ob3), regexp = NA) expect_error(summary(ob4), regexp = NA) expect_error(summary(ob5), regexp = NA) expect_error(summary(ob6), regexp = NA) expect_error(summary(ob7), regexp = NA) expect_error(summary(ob8), regexp = NA) expect_error(summary(ob9), regexp = NA) expect_error(summary(ob10), regexp = NA) expect_error(summary(ob11), regexp = NA) expect_error(summary(ob12), regexp = NA) expect_error(summary(ob13), regexp = NA) expect_error(summary(ob14), regexp = NA) expect_error(summary(ob15), regexp = NA) expect_error(summary(ob16), regexp = NA) }) test_that("inspect.ft - plot defaults are correctly restored", { # reset plotting first dev.off() # save par before parb4 <- par(no.readonly = TRUE) # now use a fn with plot inspect.ft(flowthrough.rd, 1, 2, 3) # save after paraft <- par(no.readonly = TRUE) # mai is something changed from the default, # so if par settings not restored properly this should fail expect_identical(parb4$mai, paraft$mai) }) }) ## turns console printing back on