Nothing
context("Cube queries with on-the-fly expressions")
with_mock_crunch({
ds <- cachedLoadDataset("test ds")
expect_JSON <- function(object, expected) {
expect_identical(
unclass(toJSON(object)),
gsub("\n +", "", gsub(": +", ":", expected))
)
}
test_that("formulaToCubeQuery", {
expect_JSON(
formulaToCubeQuery(~ gender + bin(birthyr), data = ds),
'{"dimensions":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/gender/"},
{
"function":"bin",
"args":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/birthyr/"}
],
"references":{
"name": "bin(birthyr)",
"alias": "bin(birthyr)"
}
}
],
"measures":{"count":{"function":"cube_count","args":[]}}}'
)
expect_JSON(
formulaToCubeQuery(~ gender + catarray, data = ds),
'{"dimensions":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/gender/"},
{"function":"dimension","args":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/catarray/"},
{"value":"subvariables"}
]},
{"variable":"https://app.crunch.io/api/datasets/1/variables/catarray/"}
],
"measures":{"count":{"function":"cube_count","args":[]}}}'
)
expect_JSON(
formulaToCubeQuery(~ gender + as_selected(mymrset), data = ds),
paste0(
'{"dimensions":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/gender/"},
{"function":"dimension","args":[
{"function":"as_selected","args":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/mymrset/"}
]},
{"value":"subvariables"}
]},
{"function": "as_selected","args": [
{"variable":"https://app.crunch.io/api/datasets/1/variables/mymrset/"}]}
],
"measures":{"count":{"function":"cube_count","args":[]}}}'
)
)
expect_error(
formulaToCubeQuery(~ gender + as_selected(catarray), data = ds),
paste(
"Cannot analyze a variable of type",
dQuote("categorical_array"), "'as_selected'"
)
)
expect_error(
formulaToCubeQuery(~ categories(gender), data = ds),
paste(
"Cannot analyze a variable of type",
dQuote("categorical"), "using 'categories'"
)
)
expect_error(
formulaToCubeQuery(~ subvariables(gender), data = ds),
paste(
"Cannot analyze a variable of type",
dQuote("categorical"), "using 'subvariables'"
)
)
expect_JSON(
formulaToCubeQuery(~ gender + as_array(mymrset), data = ds),
'{"dimensions":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/gender/"},
{"function":"dimension","args":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/mymrset/"},
{"value":"subvariables"}
]},
{"variable":"https://app.crunch.io/api/datasets/1/variables/mymrset/"}
],
"measures":{"count":{"function":"cube_count","args":[]}}}'
)
expect_JSON(
formulaToCubeQuery(~ gender + (birthyr > 1980), data = ds),
'{"dimensions":[
{"variable":"https://app.crunch.io/api/datasets/1/variables/gender/"},
{
"function":">",
"args":[
{"variable": "https://app.crunch.io/api/datasets/1/variables/birthyr/"},
{"value": 1980}
],
"references":{
"name": "birthyr > 1980",
"alias": "birthyr > 1980"
}}
],
"measures":{"count":{"function":"cube_count","args":[]}}}'
)
})
test_that("3VL logical cube dims", {
## This is `crtabs(~ q1 != "Cat" & !is.na(q1), data=ds)` from below
cube <- loadCube("cubes/3vl.json")
expect_identical(
as.array(cube),
array(c(7, 6),
dim = 2L,
dimnames = list(`q1 != "Cat" & !is.na(q1)` = c("TRUE", "FALSE"))
)
)
})
})
with_test_authentication({
ds <- newDatasetFromFixture("apidocs")
test_that("<, <= on numeric", {
# ndogs
# 0 1 2 3 6
# 2 3 7 3 1
expect_equivalent(as.array(crtabs(~ ndogs < 2, data = ds))["TRUE"], 5)
expect_equivalent(as.array(crtabs(~ ndogs <= 2, data = ds))["TRUE"], 12)
expect_equivalent(as.array(crtabs(~ ndogs > 2, data = ds))["TRUE"], 4)
expect_equivalent(as.array(crtabs(~ ndogs >= 2, data = ds))["TRUE"], 11)
expect_equivalent(as.array(crtabs(~ ndogs > 1 & ndogs <= 3, data = ds))["TRUE"], 10)
})
test_that("%in% with categorical", {
# q1
# Cat Dog Bird
# 6 4 3
skip(paste0(
"(400) Bad Request: The truth value of an array with more than one ",
"element is ambiguous. Use a.any() or a.all()"
))
expect_equivalent(as.array(crtabs(~ q1 %in% c("Cat", "Dog"),
data = ds
))["TRUE"], 10)
expect_equivalent(as.array(crtabs(~ !(q1 %in% c("Cat", "Dog")),
data = ds
))["TRUE"], 3)
})
test_that("==, != with categorical", {
expect_equivalent(as.array(crtabs(~ q1 == "Cat",
data = ds
))["TRUE"], 6)
expect_equivalent(as.array(crtabs(~ q1 != "Cat" & !is.na(q1),
data = ds
))["TRUE"], 7)
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.