tests/testthat/tests.R

library(apa7)
library(testthat)
test_that("apa_p", {
  expect_equal(apa_p(0, inline = TRUE, markdown = TRUE), "*p*\u00A0<\u00A0.001")
  expect_equal(apa_p(0, inline = FALSE), "<.001")
  expect_equal(
    apa_p(0.0007, inline = T, markdown = TRUE),
    "*p*\u00A0<\u00A0.001"
  )
  expect_equal(
    apa_p(0.001, inline = T, markdown = TRUE),
    "*p*\u00A0=\u00A0.001"
  )
  expect_equal(
    apa_p(0.000999, inline = T, markdown = TRUE),
    "*p*\u00A0<\u00A0.001"
  )
  expect_equal(apa_p(0.000999, FALSE, markdown = TRUE), "<.001")
  expect_equal(
    apa_p(0.001, inline = T, markdown = TRUE),
    "*p*\u00A0=\u00A0.001"
  )
  expect_equal(apa_p(0.005, FALSE), ".005")
  expect_equal(
    apa_p(0.0081, inline = T, markdown = TRUE),
    "*p*\u00A0=\u00A0.008"
  )
  expect_equal(apa_p(0.00999, FALSE), ".01")
  expect_equal(
    apa_p(0.00999, inline = T, markdown = TRUE),
    "*p*\u00A0=\u00A0.01"
  )
  expect_equal(apa_p(0.00999, FALSE), ".01")
  expect_equal(
    apa_p(0.0999, inline = TRUE, markdown = TRUE),
    "*p*\u00A0=\u00A0.10"
  )
  expect_equal(apa_p(0.0999, inline = FALSE), ".10")
  expect_equal(
    apa_p(0.0999, inline = T, markdown = TRUE),
    "*p*\u00A0=\u00A0.10"
  )
  expect_equal(apa_p(0.0999, FALSE), ".10")
  expect_equal(apa_p(0.0999, inline = TRUE, markdown = FALSE), "p = .10")
  expect_equal(apa_p(0, inline = TRUE, markdown = FALSE), "p < .001")
  expect_equal(
    apa_p(
      c(.0001, .001, .01, .5, .99, .995),
      inline = FALSE,
      markdown = FALSE
    ),
    c("<.001", ".001", ".01", ".50", ".99", ">.99")
  )
  expect_equal(
    apa_p(
      c(.0001, .001, .01, .5, .99, .995),
      inline = FALSE,
      markdown = TRUE
    ),
    c("<.001", ".001", ".01", ".50", ".99", "\\>.99")
  )

  expect_equal(apa_p("<.001"), "<.001")
  expect_error(
    apa_p(c(.21, .45), inline = TRUE),
    "Only one p can be processed for inline mode."
  )

  expect_equal(apa_p(c(.45, NA)), c(".45", NA))
  expect_equal(apa_p(c(.45, NA), align = TRUE), c(".45", ""))
})

test_that("align_chr", {
  posnum <- c(.010, .511)
  expect_equal(align_chr(posnum, accuracy = .01), c("0.01", "0.51"))
  expect_equal(align_chr(posnum, accuracy = .001), c("0.010", "0.511"))

  expect_equal(
    align_chr(posnum, accuracy = .01, trim_leading_zeros = T),
    c(".01", ".51")
  )
  expect_equal(
    align_chr(posnum, accuracy = .001, trim_leading_zeros = T),
    c(".010", ".511")
  )

  expect_equal(align_chr(posnum), align_chr(align_chr(posnum)))

  negnum <- posnum * -1
  expect_equal(align_chr(negnum, accuracy = .01), c("\u22120.01", "\u22120.51"))
  expect_equal(
    align_chr(negnum, accuracy = .001),
    c("\u22120.010", "\u22120.511")
  )

  expect_equal(
    align_chr(negnum, accuracy = .01, trim_leading_zeros = T),
    c("\u2212.01", "\u2212.51")
  )
  expect_equal(
    align_chr(negnum, accuracy = .001, trim_leading_zeros = T),
    c("\u2212.010", "\u2212.511")
  )

  expect_equal(align_chr(negnum), align_chr(align_chr(negnum)))

  posnegnum <- c(-.010, .511)
  expect_equal(
    align_chr(posnegnum, accuracy = .01),
    c("\u22120.01", "\u20070.51")
  )
  expect_equal(
    align_chr(posnegnum, accuracy = .001),
    c("\u22120.010", "\u20070.511")
  )

  expect_equal(
    align_chr(
      posnegnum,
      accuracy = .01,
      trim_leading_zeros = T
    ),
    c("\u2212.01", "\u2007.51")
  )
  expect_equal(
    align_chr(
      posnegnum,
      accuracy = .001,
      trim_leading_zeros = T
    ),
    c("\u2212.010", "\u2007.511")
  )

  expect_equal(align_chr(posnegnum), align_chr(align_chr(posnegnum)))

  # equal text without .
  expect_equal(align_chr(c("a", "b", "c")), c("a", "b", "c"))
  # unequal text without .
  expect_equal(
    align_chr(c("aa", "ab", "c", "ad")),
    c("aa", "ab", "\u2007c", "ad")
  )
  # equal text with trailing .
  expect_equal(align_chr(c("a.", "b.", "c.")), c("a.", "b.", "c."))
  # unequal text with trailing .
  expect_equal(
    align_chr(c("aa", "ab", "c", "ad")),
    c("aa", "ab", "\u2007c", "ad")
  )

  # equal text with prefix .
  expect_equal(align_chr(c(".a", ".b", ".c")), c(".a", ".b", ".c"))
  # unequal text with prefix .
  expect_equal(
    align_chr(c(".aa", ".ab", ".c", ".ad")),
    c(".aa", ".ab", ".c\u2007", ".ad")
  )

  # equal text with middle .
  expect_equal(align_chr(c("a.a", "a.b", "a.c")), c("a.a", "a.b", "a.c"))
  # unequal text with middle .
  expect_equal(
    align_chr(
      c(
        "a.aa",
        "aa.a",
        "c.c",
        "aa.ad",
        ".",
        "a.",
        ".a"
      )
    ),
    c(
      "\u2007a.aa",
      "aa.a\u2007",
      "\u2007c.c\u2007",
      "aa.ad",
      "\u2007\u2007.\u2007\u2007",
      "\u2007a.\u2007\u2007",
      "\u2007\u2007.a\u2007"
    )
  )

  # equal text with two periods
  expect_equal(align_chr(c(".a.", ".b.", ".c.")), c(".a.", ".b.", ".c."))

  # unequal text with two periods
  expect_equal(
    align_chr(c("0.a.", ".b.0", ".c.", "0.a.c")),
    c("0.a.\u2007", "\u2007.b.0", "\u2007.c.\u2007", "0.a.c")
  )

  expect_equal(
    align_chr(c(".45", ".10"), format_numeric_character = TRUE),
    c("0.45", "0.10")
  )

  align_chr(c(".1", ".12^\\*\\*^")) |> align_chr()

  expect_equal(
    align_chr(apa_p(posnum, min_digits = 3), format_numeric_character = FALSE),
    c(".010", ".511")
  )
})

test_that("p2stars", {
  expect_equal(p2stars(0.0001), "\\*\\*\\*")
  expect_equal(p2stars(NA), "")
  expect_equal(p2stars(0.0001, prefix = "", first_alpha_marginal = TRUE), "**")
  expect_equal(p2stars(0.0001, superscript = TRUE), "^\\*\\*\\*^")
  expect_equal(
    p2stars(
      0.0001,
      superscript = TRUE,
      add_trailing_space = TRUE
    ),
    "^\\*\\*\\*\u2009^"
  )
  expect_equal(
    p2stars(
      0.0001,
      superscript = FALSE,
      add_trailing_space = TRUE
    ),
    "\\*\\*\\*\u2009"
  )
  expect_equal(p2stars(0.01), "\\*\\*")
  expect_equal(p2stars(0.05), "\\*")
  expect_equal(p2stars(0.10), "")
  expect_equal(p2stars(c(0.10, .02), superscript = TRUE), c("", "^\\*^"))
  expect_equal(
    p2stars(
      c(0.10, .02),
      superscript = TRUE,
      add_trailing_space = TRUE
    ),
    c("", "^\\*\u2009^")
  )
  expect_equal(
    p2stars(
      c(0.09, .02),
      first_alpha_marginal = TRUE,
      alpha = c(.10, .05, .01, .001)
    ),
    c("\u2020", "\\*")
  )
})
vnf <- apa7:::variable_name_formatter

test_that("variable name formatter", {
  expect_equal(vnf("a^2^"), "A^2^")
  expect_equal(vnf("cut [linear]"), "Cut")
  expect_equal(vnf("cut [quadratic]"), "Cut^2^")
  expect_equal(vnf("cut [cubic]"), "Cut^3^")
  expect_equal(vnf("cut [4th degree]"), "Cut^4^")
  expect_equal(
    vnf("cut [4th degree]", pattern = "cut", replacement = "Cut"),
    "Cut^4^"
  )
})

testthat::test_that("add_star_note", {
  expect_equal(
    apa7::apa_p_star_note(),
    "^\\*\u2009^*p*\u00A0<\u00A0.05. ^\\*\\*\u2009^*p*\u00A0<\u00A0.01. ^\\*\\*\\*\u2009^*p*\u00A0<\u00A0.001"
  )

  expect_equal(apa7::apa_p_star_note(.001), "^\\*\u2009^*p*\u00A0<\u00A0.001")
})

Try the apa7 package in your browser

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

apa7 documentation built on May 26, 2026, 5:07 p.m.