tests/testthat/test-frame.R

test_that("vec_frame_flattened_tree works", {
  vec <- c(
    "h1" = "Level 1 Heading",
    "unnamed text",
    "h2" = "Level 2 Heading",
    "some name" = "some name text",
    "some name" = "moresome name text"
  )

  expected <- vctrs::data_frame(
    h1 = c("Level 1 Heading", "Level 1 Heading", "Level 1 Heading"),
    h2 = c(NA, "Level 2 Heading", "Level 2 Heading"),
    .name = c("", "some name", "some name"),
    .content = c("unnamed text", "some name text", "moresome name text"),
  )

  frame <- vec_frame_flattened_tree(vec, c("h1", "h2"))
  expect_equal(frame, expected)

  # check specifying names
  frame <- vec_frame_flattened_tree(
    vec,
    c("h1", "h2"),
    leaves = "text",
    names = "tag"
  )
  colnames(expected) <- c("h1", "h2", "tag", "text")

  expect_equal(frame, expected)
})

test_that("vec_frame_flattened_tree works 2", {
  vec <- c(
    "h1" = "Level 1 Heading",
    "abc",
    "h2" = "Level 2 Heading",
    "some name" = "def",
    "some name" = "ghi",
    "h2" = "second Level 2 Heading",
    "lmn"
  )

  expected <- vctrs::data_frame(
    h1 = c(
      "Level 1 Heading",
      "Level 1 Heading",
      "Level 1 Heading",
      "Level 1 Heading"
    ),
    h2 = c(NA, "Level 2 Heading", "Level 2 Heading", "second Level 2 Heading"),
    .name = c("", "some name", "some name", ""),
    .content = c("abc", "def", "ghi", "lmn")
  )

  frame <- vec_frame_flattened_tree(vec, c("h1", "h2"))
  expect_equal(frame, expected)

  frame <- vec_frame_flattened_tree(vec, c("h1", "h2", "h3"))
  expected$h3 <- NA_character_
  expected <- expected[c("h1", "h2", "h3", ".name", ".content")] # reorder
  expect_equal(frame, expected)
})


test_that("vec_frame_flattened_tree works 2", {
  vec <- c(
    "h1" = "Level 1 Heading",
    "abc",
    "h2" = "Level 2 Heading",
    "some name" = "def",
    "some name" = "ghi",
    "h2" = "second Level 2 Heading"
  )

  expected <- vctrs::data_frame(
    h1 = c(
      "Level 1 Heading",
      "Level 1 Heading",
      "Level 1 Heading",
      "Level 1 Heading"
    ),
    h2 = c(NA, "Level 2 Heading", "Level 2 Heading", "second Level 2 Heading"),
    .name = c("", "some name", "some name", NA),
    .content = c("abc", "def", "ghi", NA)
  )

  frame <- vec_frame_flattened_tree(vec, c("h1", "h2"))
  expect_equal(frame, expected)

  frame <- vec_frame_flattened_tree(vec, c("h1", "h2", "h3"))
  expected$h3 <- NA_character_
  expected <- expected[c("h1", "h2", "h3", ".name", ".content")] # reorder
  expect_equal(frame, expected)
})


test_that("vec_frame_flattened_tree works 3", {
  vec <- c(
    "h1" = "Level 1 Heading",
    "abc",
    "h2" = "Level 2 Heading",
    "some name" = "def",
    "some name" = "ghi",
    "h3" = "level 3 heading",
    "h2" = "second Level 2 Heading",
    "lmn"
  )
  expected <- vctrs::data_frame(
    h1 = rep("Level 1 Heading", 5),
    h2 = c(NA, rep("Level 2 Heading", 3), "second Level 2 Heading"),
    h3 = c(NA, NA, NA, "level 3 heading", NA),
    .name = c("", "some name", "some name", NA, ""),
    .content = c("abc", "def", "ghi", NA, "lmn")
  )

  frame <- vec_frame_flattened_tree(vec, c("h1", "h2", "h3"))
  expect_equal(frame, expected)
  expect_true(is.na(last(frame$h3)))
})


test_that("vec_frame_flattened_tree works 4", {
  frame <- vec_frame_flattened_tree(
    c(h1 = "# Quarto – executable-code-figure-size"),
    nodes = c("h1", "h2", "h3")
  )

  expected <- vctrs::data_frame(
    h1 = "# Quarto – executable-code-figure-size",
    h2 = NA_character_,
    h3 = NA_character_,
    .name = NA_character_,
    .content = NA_character_
  )
  expect_equal(frame, expected)
})

Try the ragnar package in your browser

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

ragnar documentation built on Aug. 8, 2025, 7:07 p.m.