Nothing
library(nc)
library(testthat)
context("quantifier")
source(system.file("test_engines.R", package="nc", mustWork=TRUE), local=TRUE)
test_that("error for no args to quantifier", {
expect_error({
quantifier()
},
"quantifier needs at least two arguments (patterns, quantifier)",
fixed=TRUE)
})
test_that("error for one arg to quantifier", {
expect_error({
quantifier("foo")
},
"quantifier needs at least two arguments (patterns, quantifier)",
fixed=TRUE)
})
test_that("error for named last arg", {
expect_error({
quantifier("a", "b", foo="?")
}, "last argument to quantifier must be un-named")
})
test_that("error for non-string last arg", {
expect_error({
quantifier("a", "b", identity)
},
"last argument to quantifier must be character string (quantifier such as ?, *, or {0,2})",
fixed=TRUE)
})
## Above we use test_that (does not do any matching) and below we do
## test_engines (matches using all regex engines).
test_engines("user-defined optional is ok", {
job.vec <- readLines(textConnection("26534569
26534569.extern
26534569.0
26534608_63
26534608_63.batch
26534608_63.extern
26534685_[1-373]
26534686_[1]"))
## zero_or_one zero_or_more like rex etc?
optional <- function(...){
quantifier(..., "?")
}
optional.end <- optional("-", taskN="[0-9]+", as.integer)
range.pattern <- list(
"\\[",
task1="[0-9]+", as.integer,
optional.end,
"\\]")
task.pattern <- list(
task="[0-9]+", as.integer,
"|",#either one task(above) or range(below)
range.pattern)
optional.type <- optional("[.]", type=".*")
optional.task <- optional("_", task.pattern)
match.dt <- capture_first_vec(
job.vec,
job="[0-9]+", as.integer,
optional.task,
optional.type)
expect_equal(nrow(match.dt), length(job.vec))
expect_false(any(is.na(match.dt$job)))
})
test_engines("quantifier works for non-greedy lines", {
vignette.Rmd <- system.file(
"extdata", "vignette.Rmd", package="nc")
non.greedy.lines <- quantifier(".*\n", "*?")
Rmd.dt <- capture_all_str(
vignette.Rmd,
before=non.greedy.lines,
"```\\{r",
quantifier(" ", name="[^,}]+", "?"),
parameters=".*",
"\\}\n",
code=non.greedy.lines,
"```")
expect_equal(nrow(Rmd.dt), 14)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.