context("base64 encode/decode")
test_that("encoding an example produces expected results", {
input <- paste0(
"The quick brown fox jumps over the lazy dog. 1!2@3#4$5%6^7&8*9(0)-",
"_=+`~|[{]};:/?.>,<"
)
output <- base64_encode(charToRaw(input))
# the following encoding is based on: https://www.base64encode.net/
expected_output <- paste0(
"VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4gMSEyQD",
"MjNCQ1JTZeNyY4KjkoMCktXz0rYH58W3tdfTs6Lz8uPiw8"
)
expect_equal(output, expected_output)
})
test_that("decoding encoded strings produces original string", {
original <- "123456"
encoded <- base64_encode(charToRaw(original))
decoded <- base64_decode(encoded)
expect_equal(original, rawToChar(decoded))
original <- paste0(
"The quick brown fox jumps over the lazy dog. 1!2@3#4$5%6^7&8*9(0)-",
"_=+`~|[{]};:/?.>,<"
)
encoded <- base64_encode(charToRaw(original))
decoded <- base64_decode(encoded)
expect_equal(original, rawToChar(decoded))
})
test_that("padding characters are appended as expected", {
# encoded strings should be 4/3 the length of the original string, however,
# the encoded strings must have lengths divisible by 4.
encoded <- base64_encode(charToRaw("123"))
expect_equal(nchar(encoded), 4)
expect_false(grepl("=", encoded)) # should include zero padding characters
encoded <- base64_encode(charToRaw("1234"))
expect_equal(nchar(encoded), 8)
expect_match(encoded, "==")
encoded <- base64_encode(charToRaw("12345"))
expect_equal(nchar(encoded), 8)
expect_match(encoded, "=")
encoded <- base64_encode(charToRaw("123456"))
expect_equal(nchar(encoded), 8)
expect_false(grepl("=", encoded)) # should include zero padding characters
encoded <- base64_encode(charToRaw("1234567"))
expect_equal(nchar(encoded), 12)
expect_match(encoded, "==")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.