test_that("geomean", { # Test normal, nonzero scalars expect_equal(geomean(5), 5) expect_equal(geomean(c(5, 5)), 5) expect_equal(geomean(c(10, 1000)), 100) # Test zeros expect_equal(geomean(0), 0) expect_equal(geomean(c(0, 1)), 0) # Test negative numbers expect_equal(geomean(c(-1, 2)), -geomean(c(1, 2))) # Test NAs expect_equal(geomean(NA), as.numeric(NA)) expect_equal(geomean(c(NA, 0)), as.numeric(NA)) expect_equal(geomean(c(NA, 5), na.rm=TRUE), 5) expect_equal(geomean(c(NA, NA), na.rm=TRUE), NaN) }) test_that("geosd", { expect_equal(geosd(c(1, 2)), exp(sd(log(c(1, 2))))) expect_equal(geosd(c(NA, 1, 2)), as.numeric(NA)) }) test_that("geocv", { expect_equal(geocv(c(1, 2)), sqrt(exp(sd(log(c(1, 2)))^2)-1)*100) expect_equal(geocv(c(NA, 1, 2)), as.numeric(NA)) }) test_that("business.mean", { PKNCA.options(default=TRUE) PKNCA.options(max.missing=0.5) # Test a normal mean of a scalar and vector expect_equal(business.mean(1), structure(1, n = 1)) expect_equal(business.mean(c(1, 2)), structure(1.5, n = 2)) # Ensure that at the max.missing fraction a value is reported and # above that, NA is returned. expect_equal(business.mean(c(NA, NA, 1, 2)), structure(1.5, n = 2)) expect_equal(business.mean(c(NA, NA, NA, 2)), NA) # Ensure that it uses the current value of max.missing PKNCA.options(max.missing=0.3) expect_equal(business.mean(c(NA, 1, 2, 3)), structure(2, n = 3)) expect_equal(business.mean(c(NA, NA, 1, 2)), NA) }) test_that("pk.business", { PKNCA.options(default=TRUE) PKNCA.options(max.missing=0.5) b.mean <- pk.business(mean) expect_equal(b.mean(c(1, 2)), structure(1.5, n = 2)) # Right at the border, it still reports expect_equal(b.mean(c(1, NA)), structure(1, n = 1)) # When too much data is missing, NA is returned expect_equal(b.mean(c(1, NA, NA)), NA) # It respects zero.missing b.mean.2 <- pk.business(mean, zero.missing=TRUE) expect_equal(b.mean(c(0, 1)), structure(0.5, n = 2)) expect_equal(b.mean.2(c(0, 1)), structure(1, n = 1)) })