tests/testthat/test-decarbonate_ph.R

test_that("Decarbonate errors when inputs are wrong", {
  water0 <- suppressWarnings(define_water(ph = 4, temp = 25, alk = 5))
  water1 <- suppressWarnings(define_water(temp = 25, alk = 5, toc = 5))

  expect_error(decarbonate_ph(co2_removed = .5))
  expect_error(decarbonate_ph(water = list(ph = 7, toc = 5), co2_removed = .5))
  expect_error(decarbonate_ph(water = water0, co2_removed = "50%"))
  expect_error(decarbonate_ph(water = water0, co2_removed = 50))
  expect_error(decarbonate_ph(water = water1, co2_removed = .5))
})

test_that("Decarbonate works", {
  water0 <- suppressWarnings(define_water(ph = 4, temp = 25, alk = 5, cond = 50))

  water1 <- water0 %>%
    decarbonate_ph(co2_removed = .95)

  expect_equal(round(water1@ph, 1), 5.0)
  expect_equal(water0@toc, water1@toc)
  expect_s4_class(water1, "water")
})


test_that("Decarbonate chain takes and returns correct argument types and classes.", {
  testthat::skip_on_cran()
  water0 <- water_df %>%
    define_water_chain("test")

  water1 <- decarbonate_ph_chain(water0, "test", "decarb", co2_removed = .9)
  water2 <- water0 %>%
    mutate(removal = .9) %>%
    decarbonate_ph_chain("test", "decarb", co2_removed = removal)

  expect_error(decarbonate_ph_chain(water_df, co2_removed = .9))
  expect_error(decarbonate_ph_chain(water0))
  expect_s4_class(water1$decarb[[1]], "water")
  expect_equal(water1$decarb, water2$decarb)
})

Try the tidywater package in your browser

Any scripts or data that you put into this service are public.

tidywater documentation built on Aug. 8, 2025, 7:15 p.m.