library(testit)
assert('SearchBuilder condition evaluation works', {
(sbEvaluateCondition('>', 'num', 1:2, 1) == c(FALSE, TRUE))
(sbEvaluateCondition('between', 'num', 7, c(2, 4)) == FALSE)
(sbEvaluateCondition('starts', 'string', 'foo', 'f') == TRUE)
(sbEvaluateCondition('starts', 'string', factor('foo'), 'f') == TRUE)
(sbEvaluateCondition('null', 'string', c('', NA)) == c(TRUE, TRUE))
})
assert('SearchBuilder logic evaluation works', {
res = sbEvaluateSearch(
list(
logic = 'AND',
criteria = list(
list(condition = '<=', data = 'a', value = '4', type = 'num'),
list(condition = '>=', data = 'a', value = '2', type = 'num')
)
),
data.frame(a = 1:9)
)
(setequal(which(res), 2:4))
})
assert('SearchBuilder complex queries work', {
res = sbEvaluateSearch(
list(
logic = 'OR',
criteria = list(
list(condition = '=', data = 'a', value = '7', type = 'num'),
list(
logic = 'AND',
criteria = list(
list(condition = '<=', data = 'a', value = '4', type = 'num'),
list(condition = '>=', data = 'a', value = '2', type = 'num')
)
)
)
),
data.frame(a = 1:9)
)
(setequal(which(res), c(2:4, 7)))
})
assert('SearchBuilder skips evaluating invalid conditions', {
(is.null(sbEvaluateCriteria(list(data = 'Sepal.Length'), iris)))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.