parse_b <- function(x, ...) {
tok <- tokenizer_delim(",", escape_double = FALSE, escape_backslash = TRUE, ...)
tokenize(datasource_string(x, 0), tok)
}
parse_d <- function(x, ...) {
tok <- tokenizer_delim(",", escape_double = TRUE, escape_backslash = FALSE, ...)
tokenize(datasource_string(x, 0), tok)
}
test_that("simple sequence parsed correctly", {
expect_equal(parse_d("1,2,3"), list(c("1", "2", "3")))
})
test_that("newlines are not tokenised", {
expect_equal(parse_d("1\n2"), list("1", "2"))
})
test_that("quotes in strings are dropped", {
expect_equal(parse_d('"abc",abc'), list(c("abc", "abc")))
expect_equal(parse_b('"abc",abc'), list(c("abc", "abc")))
expect_equal(parse_b("'abc',abc", quote = "'"), list(c("abc", "abc")))
expect_equal(parse_d("'abc',abc", quote = "'"), list(c("abc", "abc")))
})
test_that("problems if unterminated string", {
p1 <- problems(parse_d('1,2,"3'))
p2 <- problems(parse_b('1,2,"3'))
expect_equal(p1$col, 3)
expect_equal(p2$col, 3)
expect_equal(p1$expected, "closing quote at end of file")
expect_equal(p2$expected, "closing quote at end of file")
})
test_that("problem if unterminated escape", {
p <- problems(parse_b("1\\"))
expect_equal(p$row, 1)
expect_equal(p$col, 1)
})
test_that("empty fields become empty strings", {
expect_equal(parse_d(",\n,"), list(c("[EMPTY]", "[EMPTY]"), c("[EMPTY]", "[EMPTY]")))
expect_equal(parse_d(",\n,\n"), list(c("[EMPTY]", "[EMPTY]"), c("[EMPTY]", "[EMPTY]")))
expect_equal(parse_d('""'), list("[EMPTY]"))
})
test_that("bare NA becomes missing value", {
expect_equal(parse_b('NA,"NA"', quoted_na = FALSE), list(c("[MISSING]", "NA")))
expect_equal(parse_d('NA,"NA"', quoted_na = FALSE), list(c("[MISSING]", "NA")))
})
test_that("quoted NA also becomes missing value", {
expect_equal(parse_b('NA,"NA"', quoted_na = TRUE), list(c("[MISSING]", "[MISSING]")))
expect_equal(parse_d('NA,"NA"', quoted_na = TRUE), list(c("[MISSING]", "[MISSING]")))
})
test_that("empty string become missing values", {
expect_equal(parse_b('NA,""', na = ""), list(c("NA", "[MISSING]")))
})
test_that("NA with spaces becomes missing value", {
expect_equal(parse_b(" NA "), list(c("[MISSING]")))
})
test_that("string can be ended by new line", {
expect_equal(parse_d('123,"a"\n'), list(c("123", "a")))
})
test_that("can escape delimeter with backslash", {
expect_equal(parse_b("1\\,2"), list("1,2"))
})
test_that("doubled quote becomes single quote (with d-escaping)", {
expect_equal(parse_d('""""'), list('"'))
})
test_that("escaped quoted doesn't terminate string (with b-escaping)", {
expect_equal(parse_b('"\\""'), list('"'))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.