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") })