test_that("base_dat fixture is correct", {
base_dat <- readRDS(testthat::test_path("fixtures", "base_dat.rds"))
expect_equal(testhelp_make_dat(), base_dat)
})
test_that("create cfp_dat object",{
library(dplyr)
lmap <- data.frame(site = rep(c("site_a","site_b"),
each = 2),
upper = rep(c(10,0),
times = 2),
lower = rep(c(0,-100),
times = 2)
) %>%
cfp_layers_map(id_cols = "site",
gas = "CO2")
lmap2 <- data.frame(site = rep(c("site_a","site_b"),
each = 2),
upper = rep(c(11,0),
times = 2),
lower = rep(c(0,-100),
times = 2)
) %>%
cfp_layers_map(id_cols = "site",
gas = "CO2")
soilphys <-
data.frame(site = rep(c("site_a","site_b"),
each = 3),
upper = rep(c(10,0,-20),
times = 2),
lower = rep(c(0,-20,-100),
times = 2),
c_air = 1,
DS = 1,
gas = "CO2") %>%
cfp_soilphys(id_cols = "site")
gasdata <-
data.frame(site = rep(c("site_a","site_b"),
each = 5),
depth = rep(c(10,0,-20,-30,-100),
times = 2),
x_ppm = rep(400,10),
gas = "CO2") %>%
cfp_gasdata(id_cols = "site")
cfp_input <- cfp_dat(gasdata,
soilphys,
lmap)
expect_equal(names(cfp_input), c("profiles", "gasdata",
"soilphys", "layers_map"))
expect_equal(nrow(cfp_input$soilphys),8)
expect_error(cfp_dat(gasdata,
soilphys,
lmap2))
})
test_that("split soilphys",{
library(dplyr)
lmap <- data.frame(site = rep(c("site_a","site_b"),
each = 2),
upper = rep(c(10,0),
times = 2),
lower = rep(c(0,-100),
times = 2)
) %>%
cfp_layers_map(id_cols = "site",
gas = "CO2")
soilphys <-
data.frame(site = rep(c("site_a","site_b"),
each = 3),
upper = rep(c(10,0,-20),
times = 2),
lower = rep(c(0,-20,-100),
times = 2),
c_air = 1,
DS = 1,
gas = "CO2") %>%
cfp_soilphys(id_cols = "site")
gasdata <-
data.frame(site = rep(c("site_a","site_b"),
each = 5),
depth = rep(c(10,0,-20,-30,-100),
times = 2),
x_ppm = rep(400,10),
gas = "CO2") %>%
cfp_gasdata(id_cols = "site")
cfp_input <- cfp_dat(gasdata,
soilphys,
lmap)
gd_new <- cfp_input$gasdata %>%
dplyr::add_row(site = rep(c("site_a","site_b"), each = 4),
depth = rep(c(-40,-45,-50,-55),times = 2),
gas = "CO2",
gd_id = rep(1:2,each = 4))
sp_split <- split_soilphys(cfp_input$soilphys,
gd_new,
cfp_input$layers_map)
expect_equal(sort(sp_split$upper[sp_split$site == "site_a"]),
c(-55,-50,-45,-40,-30,-20,0,10))
})
test_that("missing combinations work",{
library(dplyr)
lmap <- data.frame(site = rep(c("site_a","site_b"),
each = 2),
upper = rep(c(10,0),
times = 2),
lower = rep(c(0,-100),
times = 2)
) %>%
cfp_layers_map(id_cols = "site",
gas = "CO2")
soilphys <-
data.frame(site = rep(c("site_a","site_b"),
each = 3),
upper = rep(c(10,0,-20),
times = 2),
lower = rep(c(0,-20,-100),
times = 2),
c_air = 1,
DS = 1,
gas = "CO2") %>%
dplyr::cross_join(data.frame(date = c(1, 2, 3))) %>%
cfp_soilphys(id_cols = c("site", "date"))
gasdata <-
data.frame(site = rep(c("site_a","site_b"),
each = 5),
depth = rep(c(10,0,-20,-30,-100),
times = 2),
x_ppm = rep(400,10),
gas = "CO2") %>%
dplyr::cross_join(data.frame(date = c(1, 2, 3, 4))) %>%
cfp_gasdata(id_cols = c("site", "date"))
my_dat <-
cfp_dat(gasdata,
soilphys,
lmap)
expect_equal(n_profiles(my_dat), 6)
})
test_that("incomplete profiles are checked",{
library(dplyr)
lmap <- data.frame(site = rep(c("site_a","site_b"),
each = 2),
upper = rep(c(10,0),
times = 2),
lower = rep(c(0,-100),
times = 2)
) %>%
cfp_layers_map(id_cols = "site",
gas = "CO2")
soilphys <-
data.frame(site = rep(c("site_a","site_b"),
each = 3),
upper = rep(c(10,0,-20),
times = 2),
lower = rep(c(0,-20,-100),
times = 2),
c_air = 1,
DS = 1,
gas = "CO2") %>%
dplyr::cross_join(data.frame(date = c(1, 2, 3))) %>%
cfp_soilphys(id_cols = c("site", "date"))
gasdata <-
data.frame(site = rep(c("site_a","site_b"),
each = 5),
depth = rep(c(10,0,-20,-30,-100),
times = 2),
x_ppm = rep(400,10),
gas = "CO2") %>%
dplyr::cross_join(data.frame(date = c(1, 2, 3))) %>%
dplyr::slice(c(1:5, 7:10, 12:16, 18:27, 29:dplyr::n())) %>%
cfp_gasdata(id_cols = c("site", "date"))
my_dat <-
cfp_dat(gasdata,
soilphys,
lmap)
expect_equal(n_profiles(my_dat), 4)
})
test_that("filter cfp_dat objects works", {
base_dat <- readRDS(testthat::test_path("fixtures", "base_dat.rds"))
base_dat_site_a <- filter(base_dat, site == "site_a")
base_dat_prof1 <- filter(base_dat, prof_id == 1)
expect_equal(unique(base_dat_site_a$profiles$site), "site_a")
expect_equal(unique(base_dat_prof1$profiles$prof_id), 1)
expect_equal(n_profiles(base_dat_site_a), 12)
expect_equal(nrow(base_dat_prof1$soilphys), 9)
})
test_that("cfp_dat fails when no valid profiles", {
base_dat <- readRDS(testthat::test_path("fixtures", "base_dat.rds"))
gd <- base_dat$gasdata
base_dat$gasdata$x_ppm[base_dat$gasdata$depth > 0] <- NA
expect_error(
cfp_dat(base_dat$soilphys,
base_dat$gasdata,
base_dat$layers_map)
)
})
test_that("cfp_dat fails when id cols of one dataset are present in another.",{
base_dat <- readRDS(testthat::test_path("fixtures", "base_dat.rds"))
soilphys <- cfp_soilphys(base_dat)
gasdata <- cfp_gasdata(base_dat)
layers_map <- cfp_layers_map(base_dat)
attr(gasdata, "id_cols") <- c("gas", "Date")
expect_error(
cfp_dat(gasdata, soilphys, layers_map),
regexp = "id_col of one dataset cannot be a non-id_col in another!"
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.