context("braceless")
test_that("if", {
f <-
'f <- function(x) {
if (FALSE)
FALSE # never covered, used as anchor
if (x)
TRUE
else
FALSE
}'
cov <- code_coverage(f, "f(TRUE)")
expect_equal(zero_coverage(code_coverage(f, "f(TRUE)"))$line, c(3, 7))
expect_equal(zero_coverage(code_coverage(f, "f(FALSE)"))$line, c(3, 5))
expect_equal(zero_coverage(code_coverage(f, "f(TRUE);f(FALSE)"))$line, 3)
})
test_that("nested if else", {
f <-
'f <- function(x) {
if (FALSE)
FALSE # never covered, used as anchor
else if (x)
TRUE
else
FALSE
}'
cov <- code_coverage(f, "f(TRUE)")
expect_equal(zero_coverage(code_coverage(f, "f(TRUE)"))$line, c(3, 7))
expect_equal(zero_coverage(code_coverage(f, "f(FALSE)"))$line, c(3, 5))
expect_equal(zero_coverage(code_coverage(f, "f(TRUE);f(FALSE)"))$line, 3)
})
test_that("switch", {
f <-
'f <- function(x) {
switch(x,
a = 1,
b = 2,
c = d <- 1
)
}'
expect_equal(length(zero_coverage(code_coverage(f, "f(\"a\"); f(\"b\")"))$line),
1)
expect_equal(length(zero_coverage(code_coverage(f, "f(\"a\"); f(\"c\")"))$line),
1)
expect_equal(diff(zero_coverage(code_coverage(f, "f(\"a\"); f(\"d\")"))$line),
1)
})
test_that("switch with default value", {
f <-
'f <- function(x) {
switch(x,
a = 1,
b = 2,
c = d <- 1,
NULL
)
}'
expect_equal(length(zero_coverage(code_coverage(f, "f(\"a\"); f(\"b\"); f(\"c\")"))$line),
1)
expect_equal(length(zero_coverage(code_coverage(f, "f(\"a\"); f(\"c\")"))$line),
2)
})
test_that("switch with drop through", {
f <-
'f <- function(x) {
switch(x,
a = ,
b = 2,
c = d <- 1,
NULL
)
}'
res <- as.data.frame(code_coverage(f, 'f("a");f("b");f("c")'))
expect_equal(res$first_line, c(2, 4, 5, 6))
expect_equal(res$value, c(3, 2, 1, 0))
})
test_that("switch with ellipses", {
f <-
'f <- function(x, ...) {
switch(typeof(x), ...)
}'
res <- as.data.frame(code_coverage(f, "f(\"a\", character = TRUE)"))
expect_equal(res$first_line, 2)
expect_equal(res$value, 1)
f <-
'f <- function(x, ...) {
switch(typeof(x),
...,
character = TRUE)
}'
res <- as.data.frame(code_coverage(f, "f(\"a\")"))
expect_equal(res$first_line, c(2, 4))
expect_equal(res$value, c(1, 1))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.