test_that("fit_vant_hoff recovers approximately correct thermodynamic parameters", { # Simulate Kc from known deltaH/deltaS via the van't Hoff relationship set.seed(7) deltaH_true <- 15 # kJ/mol (endothermic) deltaS_true <- 55 # J/(mol K) R_gas <- 8.314e-3 # kJ/(mol K) temperature_K <- c(298, 308, 318, 328) logKc <- deltaS_true / (R_gas * 1000) - deltaH_true / (R_gas * temperature_K) + stats::rnorm(4, 0, 0.01) Kc <- exp(logKc) res <- fit_vant_hoff(temperature_K, Kc) expect_equal(res$deltaH_kJmol, deltaH_true, tolerance = 0.5) expect_equal(res$deltaS_Jmolk, deltaS_true, tolerance = 2) expect_equal(nrow(res$table), 4) }) test_that("fit_vant_hoff errors with too few points", { expect_error(fit_vant_hoff(c(298, 308), c(1.8, 2.3)), "at least 3") }) test_that("fit_confint returns a tidy data frame for a langmuir fit", { Ce <- c(2, 5, 10, 20, 35, 50, 70) qe <- c(0.8, 1.6, 2.3, 3.0, 3.6, 4.0, 4.4) fit <- fit_langmuir(Ce, qe) ci <- fit_confint(fit) expect_equal(nrow(ci), 2) expect_true(all(c("parameter", "estimate", "lower", "upper") %in% names(ci))) expect_true(all(ci$lower <= ci$estimate & ci$estimate <= ci$upper)) }) test_that("fit_confint works for an lm-based fit (intraparticle)", { t <- c(5, 15, 30, 60, 120, 240) qt <- c(1.2, 2.1, 2.9, 3.6, 4.0, 4.2) fit <- fit_intraparticle(t, qt) ci <- fit_confint(fit) expect_equal(nrow(ci), 2) })