# flatten_expr ----
test_that("flatten_expr collapses expressions into sequential atoms and ops", {
expect_identical(
flatten_expr(quote(1 + 2 | 3 * 4^5)),
list(1, as.name("+"), 2, as.name("|"), 3, as.name("*"), 4, as.name("^"), 5)
)
expect_identical(
flatten_expr(quote("a b c" * easy_as(1, 2, 3))),
list("a b c", as.name("*"), as.call(quote(easy_as(1, 2, 3))))
)
})
# flatten_call ----
test_that("flatten_call collapses expressions into sequential atoms and ops", {
expect_identical(
flatten_call(quote(us(1 + 2 | 3))),
list(as.symbol("us"), 1, as.name("+"), 2, as.name("|"), 3)
)
expect_identical(
flatten_call(quote(sp_exp(1, 2, 3, 4 | 5))),
list(as.symbol("sp_exp"), 1, 2, 3, 4, as.name("|"), 5)
)
})
# position_symbol ----
test_that("position_symbol returns position of a symbol in a list of language", {
expect_identical(
position_symbol(flatten_expr(quote(1 + 2 | 3)), "|"),
4L
)
expect_identical(
position_symbol(flatten_expr(quote(1 + 2 | 3 | 4)), "|"),
4L
)
expect_identical(
position_symbol(flatten_expr(quote(1 + 2 | 3 | 4)), "^", nomatch = Inf),
Inf
)
expect_identical(
position_symbol(flatten_expr(quote(1)), "=^..^=", nomatch = "no cat"),
"no cat"
)
})
# is_infix ----
test_that("is_infix identifies primitive infix operators", {
expect_true(is_infix("+"))
expect_true(is_infix(as.symbol("+")))
expect_true(is_infix("%/%"))
expect_true(is_infix("%%"))
expect_false(is_infix("%special%"))
expect_false(is_infix("paste"))
})
# formula_rhs ----
test_that("formula_rhs fetches the right-most part of a formula", {
expect_identical(
formula_rhs(a ~ b + c),
~ b + c,
)
expect_identical(
formula_rhs(a + b ~ c),
~c
)
expect_identical(
formula_rhs(~ c | d),
~ c | d
)
})
# format_symbols ----
test_that("format_symbols formats variables as though they were passed to a formula", {
# typical variables print as-is
expect_identical(
format_symbols(c("AVISITN", "USUBJID")),
"AVISITN, USUBJID"
)
# variables with spaces or non-standard characters are printed in backticks
expect_identical(
format_symbols(c("VISIT DAY", "SUBJ-ID")),
"`VISIT DAY`, `SUBJ-ID`"
)
# if some poor soul works with data that has backticks in the variable names,
# they're covered too
expect_identical(
format_symbols(c("VISIT` DAY", "SUBJ-ID")),
"`VISIT\\` DAY`, `SUBJ-ID`"
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.