tests/testthat/test-summary.R

test_that("summary methods work properly", {
  xval <- 1.1:10.1
  xerr <- rep(0.05, 10)
  xval[c(2, 9)] <- c(1.102, 10.098)
  xerr[c(2, 9)] <- 0.1
  x <- set_errors(xval, xerr)

  y <- 0
  for (i in 1:length(x)) y <- y + x[i]
  expect_equal(sum(x), y)

  y <- 1
  for (i in 1:length(x)) y <- y * x[i]
  expect_equal(prod(x), y)

  expect_equal(max(x), max(xval + xerr))
  expect_equal(min(x), min(xval - xerr))

  expect_equal(range(x)[1], min(x))
  expect_equal(range(x)[2], max(x))

  expect_equal(mean(x), set_errors(mean(xval), sd(xval)/sqrt(length(x))))
  expect_equal(mean(set_errors(xval, xerr*100)), set_errors(mean(xval), mean(xerr*100)))

  expect_equal(weighted.mean(x), set_errors(weighted.mean(xval), sd(xval)/sqrt(length(x))))
  expect_equal(weighted.mean(set_errors(xval, xerr*100)), set_errors(weighted.mean(xval), weighted.mean(xerr*100)))

  expect_equal(median(x), set_errors(median(xval), 1.253 * errors(mean(x))))

  expect_equal(quantile(x), quantile(xval))
  expect_equal(summary(x), summary(xval))
})

test_that("na.rm is propagated", {
  xval <- 1.1:10.1
  xval[1] <- NA
  xerr <- rep(0.05, 10)
  xerr[3] <- NA
  xval[c(2, 9)] <- c(1.102, 10.098)
  xerr[c(2, 9)] <- 0.1
  x <- set_errors(xval, xerr)

  expect_equal(max(x, na.rm=TRUE), max(xval + xerr, na.rm=TRUE))
  expect_equal(min(x, na.rm=TRUE), min(xval - xerr, na.rm=TRUE))

  expect_equal(range(x, na.rm=TRUE)[1], min(x, na.rm=TRUE))
  expect_equal(range(x, na.rm=TRUE)[2], max(x, na.rm=TRUE))

  expect_equal(mean(x, na.rm=TRUE), mean(x[-c(1, 3)]))
  expect_equal(weighted.mean(x, na.rm=TRUE), weighted.mean(x[-c(1, 3)]))
  expect_equal(median(x, na.rm=TRUE), median(x[-c(1, 3)]))
})
r-quantities/errors documentation built on Jan. 16, 2024, midnight