tests/testthat/test-num_equal.R

test_that("num_equal returns early", {
  expect_equal(num_equal(1, 1:2), FALSE)
  expect_equal(num_equal(1, 2, NULL), FALSE)
  expect_equal(num_equal(1, 1), TRUE)
  expect_equal(num_equal(1, NA), FALSE)
  expect_equal(num_equal(c(1, NA), c(1, NA)), TRUE)
})

test_that("tolerance is relative", {
  expect_equal(num_equal(1000, 1001, tolerance = 1e-3), TRUE)
  expect_equal(num_equal(1000, 1002, tolerance = 1e-3), FALSE)
})

test_that("tolerance is absolute for small values", {
  expect_equal(num_equal(0, 0.0009, tolerance = 0.0010), TRUE)
  expect_equal(num_equal(0, 0.0010, tolerance = 0.0010), FALSE)
})

test_that("tolerance works the same way for negative values", {
  expect_equal(num_equal(4, 4 + 2 * default_tol()), TRUE)
  expect_equal(num_equal(-4, -4 - 2 * default_tol()), TRUE)
})

test_that("infinite values are handled properly", {
  expect_equal(num_equal(1, Inf), FALSE)
  expect_equal(num_equal(1, Inf, tolerance = 1.e-8), FALSE)
  expect_equal(num_equal(Inf, Inf), TRUE)
  expect_equal(num_equal(Inf, Inf, tolerance = 1.e-8), TRUE)
  expect_equal(num_equal(-Inf, Inf), FALSE)
  expect_equal(num_equal(-Inf, Inf, tolerance = 1.e-8), FALSE)
})

test_that("NaN is equal to NA_real_ unless tolerance is NULL", {
  expect_true(num_equal(NaN, NA_real_))
  expect_false(num_equal(NaN, NA_real_, tolerance = NULL))
  expect_true(num_equal(NaN, NaN))
  expect_true(num_equal(NA_real_, NA_real_))
})

Try the waldo package in your browser

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

waldo documentation built on Nov. 2, 2023, 5:39 p.m.