tests/testthat/test-util_subset.R

test_that("vec_grepl", {
  x = c("ABC", "abc", "123", "@#$")
  patterns = c("[A-Z]+", "[a-z]+", "[0-9]+", "[^A-Za-z0-9]+")

  expect_equal(vec_grepl(patterns, x), c(TRUE, TRUE, TRUE, TRUE))

  expect_equal(vec_grepl(patterns[1], x[1]), TRUE)
  expect_equal(vec_grepl(patterns[1], x), c(TRUE, FALSE, FALSE, FALSE))
  expect_equal(vec_grepl(patterns, x[1]), c(TRUE, FALSE, FALSE, FALSE))

  expect_error(vec_grepl(patterns[1:2], x))
  expect_error(vec_grepl(patterns, x[1:2]))
})


test_that("subset_match", {
  x = c("A", "B", "C")

  expect_true(  subset_match(x, c("A", "B", "C")) )

  expect_true(  subset_match(x, c("A", "B")) )
  expect_true(  subset_match(x, c("B", "C")) )

  expect_false( subset_match(x, c("A", "C")) )
  expect_false( subset_match(x, c("B", "A")) )
  expect_false( subset_match(x, c("C", "A")) )

  expect_true(  subset_match(x, "A") )
  expect_true(  subset_match(x, "B") )
  expect_true(  subset_match(x, "C") )
})

test_that("right_side_match", {
  x = c("A", "B", "C")
  regex = c("A", "B", "C")

  expect_true(right_side_match(x, regex))
  expect_true(right_side_match(x, regex[2:3]))
  expect_true(right_side_match(x, regex[3]))

  expect_false(right_side_match(x, regex[1]))
  expect_false(right_side_match(x, regex[2]))
  expect_false(right_side_match(x, regex[1:2]))
})

test_that("parent_match", {
  secs = list(
    c("A"),
    c("A", "B"),
    c("A", "B", "C")
  )

  regex = c("A", "B", "C")

  expect_equal( parent_match(secs, regex = c("A", "B", "C")), c(TRUE,  TRUE,  TRUE) )
  expect_equal( parent_match(secs, regex = c("B", "C")),      c(FALSE, TRUE,  TRUE) )
  expect_equal( parent_match(secs, regex = c("C")),           c(FALSE, FALSE, TRUE) )

  expect_false( parent_match(secs, regex = character()) )
})



test_that("node_subset - sections", {
  secs = list(
    c("A"),
    c("A", "B"),
    c("A", "B", "C"),
    c("A", "B", "D"),
    c("A", "E"),
    c("F"),
    c("F", "G")
  )
  names = rep(NA_character_, length(secs))
  types = rep("rmd_heading", length(secs))

  node_subset_wrap = function(secs, sec_ref) {
    node_subset(secs = secs, names = names, types = types,
                sec_ref = sec_ref, type_ref = NULL, name_ref = NULL,
                inc_parent = TRUE)
  }

  expect_equal(
    node_subset_wrap(secs, c("A","B","C")),
    c(TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE)
  )

  expect_equal(
    node_subset_wrap(secs, c("B","C")),
    c(FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE)
  )

  expect_equal(
    node_subset_wrap(secs, c("C")),
    c(FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE)
  )

  expect_equal(
    node_subset_wrap(secs, c("B")),
    c(FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE)
  )

  expect_equal(
    node_subset_wrap(secs, c("A")),
    c(TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE)
  )

  expect_equal(
    node_subset_wrap(secs, c("A","C")),
    c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE)
  )

  expect_equal(
    node_subset_wrap(secs, c("A","E")),
    c(TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE)
  )
})

Try the parsermd package in your browser

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

parsermd documentation built on May 20, 2021, 5:08 p.m.