test_that("Univariate ITL functions work accurately", { xi <- 1.5 x <- c(0.1, 0.5, 1.0, 2.0) # PDF dens <- ditl(x, xi = xi) expect_true(all(dens > 0)) expect_equal(length(dens), length(x)) # Log PDF log_dens <- ditl(x, xi = xi, log = TRUE) expect_equal(log_dens, log(dens), tolerance = 1e-10) # CDF and Survival p_val <- pitl(x, xi = xi) s_val <- pitl(x, xi = xi, lower.tail = FALSE) expect_true(all(p_val >= 0 & p_val <= 1)) expect_equal(p_val + s_val, rep(1, length(x)), tolerance = 1e-10) # Quantile exact roundtrip u_probs <- c(0.01, 0.1, 0.25, 0.5, 0.75, 0.9, 0.99) q_vals <- qitl(u_probs, xi = xi) expect_equal(pitl(q_vals, xi = xi), u_probs, tolerance = 1e-9) # Random generation set.seed(42) r_samp <- ritl(100, xi = xi) expect_equal(length(r_samp), 100) expect_true(all(r_samp > 0)) # Hazard & Reversed Hazard h_val <- hitl(x, xi = xi) rh_val <- rhitl(x, xi = xi) expect_true(all(h_val > 0)) expect_true(all(rh_val > 0)) # Error handling expect_error(ditl(x, xi = -1)) expect_error(pitl(x, xi = 0)) expect_error(qitl(c(-0.1, 0.5), xi = 1)) })