tests/testthat/test-format-r.R

context("format r")

test_that("fmt_new(\"r\") can round to significant digits", {
  expect_equal(fmt_new(".2r")(0), "0.0")
  expect_equal(fmt_new(".1r")(0.049), "0.05")
  expect_equal(fmt_new(".1r")(-0.049), "-0.05")
  expect_equal(fmt_new(".1r")(0.49), "0.5")
  expect_equal(fmt_new(".1r")(-0.49), "-0.5")
  expect_equal(fmt_new(".2r")(0.449), "0.45")
  expect_equal(fmt_new(".3r")(0.4449), "0.445")
  expect_equal(fmt_new(".3r")(1.00), "1.00")
  expect_equal(fmt_new(".3r")(0.9995), "1.00")
  expect_equal(fmt_new(".5r")(0.444449), "0.44445")
  expect_equal(fmt_new("r")(123.45), "123.450")
  expect_equal(fmt_new(".1r")(123.45), "100")
  expect_equal(fmt_new(".2r")(123.45), "120")
  expect_equal(fmt_new(".3r")(123.45), "123")
  expect_equal(fmt_new(".4r")(123.45), "123.5")
  expect_equal(fmt_new(".5r")(123.45), "123.45")
  expect_equal(fmt_new(".6r")(123.45), "123.450")
  expect_equal(fmt_new(".1r")(.9), "0.9")
  expect_equal(fmt_new(".1r")(.09), "0.09")
  expect_equal(fmt_new(".1r")(.949), "0.9")
  expect_equal(fmt_new(".1r")(.0949), "0.09")
  expect_equal(fmt_new(".1r")(.0000000129), "0.00000001")
  expect_equal(fmt_new(".2r")(.0000000129), "0.000000013")
  expect_equal(fmt_new(".2r")(.00000000129), "0.0000000013")
  expect_equal(fmt_new(".3r")(.00000000129), "0.00000000129")
  expect_equal(fmt_new(".4r")(.00000000129), "0.000000001290")
  expect_equal(fmt_new(".10r")(.9999999999), "0.9999999999")
  expect_equal(fmt_new(".15r")(.999999999999999), "0.999999999999999")
})

test_that("fmt_new(\"r\") can round very small numbers", {
  f <- fmt_new(".2r")
  expect_equal(f(1e-22), "0.00000000000000000000010")
})

test_that("fmt_new(\"r\") works with special values", {
  f <- fmt_new("r")
  expect_equal(f(c(Inf, -Inf, NA, NaN)), c("Inf", "-Inf", "NA", "NaN"))
})
jrnold/fivemat documentation built on May 20, 2019, 1 a.m.