library(testit)
assert('strict_list() is really strict', {
s_list = strict_list(aaa = 1:3, bbb = c('hey', 'mom'))
# the class name better not be changed in the future
(inherits(s_list, 'xfun_strict_list'))
# `$` returns the expected value if the name provided is complete
(s_list$aaa %==% 1:3)
# but partial match is prohibited
(s_list$a %==% NULL)
# `[` will return a list - will it be better if returns a strict list?
(inherits(s_list['aaa'], 'list'))
# and add an element won't change the class by accident
s_list$ccc = 4
s_list$ddd = 'abcd'
(inherits(s_list, 'xfun_strict_list'))
})
assert('as_strict_list() converts a list to a strict list', {
normal_list = list(aaa = 1:3, bbb = c('hey', 'mom'))
s_list = as_strict_list(normal_list)
# does the strict list have the same length as the normal list?
(length(normal_list) %==% length(s_list))
# is the converted strict list equal to the same object created by `strict_list()`?
s_list = strict_list(aaa = 1:3, bbb = c('hey', 'mom'))
(as_strict_list(normal_list) %==% s_list)
})
assert('print() returns the same output for strict and normal list', {
normal_list = list(aaa = 1:2, bbb = c('hey', 'dad'))
s_list = as_strict_list(normal_list)
(capture.output(print(normal_list)) %==% capture.output(print(s_list)))
})
assert('raw_string() prints as expected', {
rs = raw_string(c('a "b"', 'hello\tworld!'))
(inherits(rs, 'xfun_raw_string'))
output = capture.output(rs)
(output %==% c('a "b"', 'hello\tworld!'))
})
assert('raw_string() returns 0-length xfun_raw_string when input is NULL', {
rs1 = raw_string(NULL)
(inherits(rs1, 'xfun_raw_string'))
(length(rs1) == 0)
(capture.output(rs1) %==% character(0))
# string 'NULL' is treated appropriately
rs2 = raw_string('NULL')
(inherits(rs2, 'xfun_raw_string'))
(length(rs2) == 1)
(capture.output(rs2) %==% 'NULL')
})
assert('raw_string() inherits from character', {
rs = raw_string(c('a "b"', 'hello\tworld!'))
(inherits(rs, 'character'))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.