library(shiny)
capturePrint <- function(x) {
capture.output(print(x))
}
describe("metaReactive", isolate({
it("works", {
mr <- metaReactive({
"# a comment"
1 + 1
})
expected_output <- c("# a comment", "1 + 1")
actual_output <- capturePrint(withMetaMode(mr()))
expect_equal(expected_output, actual_output)
})
it("works with metaReactive2", {
mr2 <- metaReactive2({
4 + 4
metaExpr({
"# a comment"
1 + 1
})
})
expected_output <- c("# a comment", "mr2 <- 1 + 1")
actual_output <- capturePrint(expandChain(invisible(mr2())))
expect_equal(expected_output, actual_output)
})
it("throws warning if mis-specified", {
mrw <- metaReactive({
1 + 1
"# not a comment"
})
expected_output <- c("1 + 1", "\"# not a comment\"")
expect_warning(
actual_output <- capturePrint(withMetaMode(mrw())),
"comment can not appear as the last child"
)
expect_equal(expected_output, actual_output)
})
}))
describe("metaObserve", isolate({
it("works", {
mo <- metaObserve({
"# a comment"
1 + 1
})
expected_output <- c("# a comment", "1 + 1")
actual_output <- capturePrint(expandChain(mo()))
expect_equal(expected_output, actual_output)
})
it("works with metaObserve2", {
mo2 <- metaObserve2({
4 + 4
metaExpr({
"# a comment"
1 + 1
})
})
expected_output <- c("# a comment", "1 + 1")
actual_output <- capturePrint(withMetaMode(mo2()))
expect_equal(expected_output, actual_output)
})
it("throws warning if mis-specified", {
mow <- metaObserve({
1 + 1
"# a comment"
})
expected_output <- c("1 + 1", "\"# a comment\"")
expect_warning(
actual_output <- capturePrint(withMetaMode(mow())),
"comment can not appear as the last child"
)
expect_equal(expected_output, actual_output)
})
}))
describe("metaRender", isolate({
it("works", {
mrt <- metaRender(renderText, {
"# a comment"
1 + 1
})
expected_output <- c("# a comment", "1 + 1")
actual_output <- capturePrint(withMetaMode(mrt()))
expect_equal(expected_output, actual_output)
})
it("works with metaRender2", {
mrt2 <- metaRender2(renderText, {
4 + 4
metaExpr({
"# a comment"
1 + 1
})
})
expected_output <- c("# a comment", "1 + 1")
actual_output <- capturePrint(expandChain(mrt2()))
expect_equal(expected_output, actual_output)
})
it("throws warning if mis-specified", {
mrw <- metaRender(renderText, {
1 + 1
"# not a comment"
})
expected_output <- c("1 + 1", "\"# not a comment\"")
expect_warning(
actual_output <- capturePrint(withMetaMode(mrw())),
"comment can not appear as the last child"
)
expect_equal(expected_output, actual_output)
})
}))
describe("various edge cases", isolate({
mr <- metaReactive({
"# Escaped \"quotes\" should \'be' supported"
NULL
})
mr2 <- metaReactive({
'# Escaped \"quotes" should \'be\' supported'
NULL
})
expected <- c(
"# Escaped \"quotes\" should 'be' supported",
"NULL"
)
expect_equal(
capturePrint(withMetaMode(mr())), expected
)
expect_equal(
capturePrint(withMetaMode(mr2())), expected
)
mr <- metaReactive({
" # This shouldn't count as a comment " # Leading whitespace
" '# This either' " # Nested quote
" \"# Or this\" " # Nested dbl-quote
})
expect_equal(
capturePrint(withMetaMode(mr())),
c(
deparse(" # This shouldn't count as a comment "),
deparse(" '# This either' "),
deparse(" \"# Or this\" ")
)
)
mr <- metaReactive({
"# This should be a comment"
paste(
"# But this should not",
"be a comment"
)
})
expect_equal(
capturePrint(withMetaMode(mr())),
c(
"# This should be a comment",
"paste(\"# But this should not\", \"be a comment\")"
)
)
mr <- metaReactive({
message("got here")
"# This is not a comment"
})
mr2 <- metaReactive({
..(mr())
NULL
})
expect_warning(
out <- capturePrint(withMetaMode(mr2())),
"comment can not appear as the last child"
)
expect_equal(
out,
c(
"message(\"got here\")",
"\"# This is not a comment\"",
"NULL"
)
)
x <- metaReactive({
"# This comment should appear above the assignment"
1 + 1
})
out <- capturePrint(expandChain(invisible(x())))
expect_equal(
out,
c(
"# This comment should appear above the assignment",
"x <- 1 + 1"
)
)
x2 <- metaReactive({
"# This comment should appear above the assignment"
..(x()) + 1
})
expect_equal(
capturePrint(expandChain(invisible(x2()))),
c(
"# This comment should appear above the assignment",
"x <- 1 + 1",
"# This comment should appear above the assignment",
"x2 <- x + 1"
)
)
# TODO: What should happen if \n appears in a string-comment?
}))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.