# test grouped df field
df1 <- test_quantiles_g %>% filter(GroupSet == "IndSexReg") %>%
group_by(IndSexRef, ParentCode)
# test grouped df logical
df2 <- test_quantiles_g %>% filter(IndSexRef == "90366Female"& GroupSet == "IndSexReg") %>%
group_by(IndSexRef, ParentCode)
# test ungrouped df field
df3 <- test_quantiles_g %>% filter(GroupSet == "IndSex")
# test ungrouped df logical
df4 <- test_quantiles_ug %>% filter(GroupSet == "None")
# test grouped
df5 <- df4 %>% group_by(GroupSet)
# test data where all values are NA
df6 <- df2 |> filter(!AreaCode %in% c("E06000053", "E09000001"))|>
mutate(Value = case_when(ParentCode == "E12000006" ~ NA_real_,
TRUE ~ Value))
#test calculations
test_that("quantiles calculate correctly",{
suppressWarnings({
# within-region deciles for multiple indicators
expect_equal(data.frame(phe_quantile(df1,Value,
invert = Polarity, inverttype = "field")[15]),
rename(df1,quantile = QuantileInGrp)[14],
ignore_attr = TRUE,info="test grouped df field")
# within-region deciles for multiple indicators
expect_equal(data.frame(phe_quantile(df2,Value,
invert = FALSE))[15:18],
data.frame(tibble(quantile = df2$QuantileInGrp,
nquantiles = 10L,
groupvars = "IndSexRef, ParentCode",
qinverted = "lowest quantile represents lowest values")),
ignore_attr = TRUE,info="test grouped df logical")
expect_equal(phe_quantile(df3, Value,
invert = Polarity, inverttype = "field", nquantiles = 7L)[15],
rename(df3,quantile = QuantileInGrp)[14],
ignore_attr = TRUE,info="test ungrouped df field")
expect_equal(phe_quantile(df5, Value, nquantiles = 4L)[15],
rename(df4,quantile = QuantileInGrp)[14],
ignore_attr = TRUE,info="test nquantiles")
expect_equal(phe_quantile(df4, Value, nquantiles = 4L)[15],
rename(df4,quantile = QuantileInGrp)[14],
ignore_attr = TRUE,info="test ungrouped df logical nohighergeog")
expect_equal(phe_quantile(df4, Value, nquantiles = 4L, type="standard")[15],
rename(df4,quantile = QuantileInGrp)[14],
ignore_attr = TRUE,info="test ungrouped df logical nohighergeog")
})
})
#test warnings
test_that("quantiles - warnings are generated when too few small areas for number of quantiles",{
expect_warning(data.frame(phe_quantile(df2, Value, invert = FALSE)),
"One or more groups had too few small areas with values to allow quantiles to be assigned",
info="warning too few small areas")
expect_warning(data.frame(phe_quantile(df6, Value, invert = FALSE)),
"One or more groups had too few small areas with values to allow quantiles to be assigned",
info="warning too few small areas")
})
#test error handling
test_that("quantiles - errors are generated when invalid arguments are used",{
expect_error(phe_quantile(test_quantiles_g),
"function phe_quantile requires at least 2 arguments: data and values",
info="error invalid number of arguments")
expect_error(phe_quantile(test_quantiles_g, Value,
invert = Polarity, inverttype = "vector"),
"valid values for inverttype are logical and field",info="error inverttype is invalid")
expect_error(phe_quantile(test_quantiles_g, Value,
invert = 6, inverttype = "logical"),
"invert expressed as a logical must equal TRUE or FALSE",info="error logical invert is invalid")
expect_error(phe_quantile(test_quantiles_g, AreaName,
invert = Polarity, inverttype = "field"),
"values argument must be a numeric field from data",info="error value is invalid")
expect_error(phe_quantile(test_quantiles_fail, Value,
invert = Polarity, inverttype = "field"),
"invert field values must take the same logical value for each data grouping set",info="error invert varies")
expect_error(phe_quantile(test_quantiles_fail, Value,
invert = Pol, inverttype = "field"),
"invert is not a field name from data",info="error invert not valid field name")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.