@@ -2,59 +2,21 @@ source(test_path("data-for-mcmc-tests.R"))
22
33# param_range --------------------------------------------------------------
44
5- test_that(" param_range selects correct parameters by index" , {
6- all_pars <- c(" alpha" , " beta[1]" , " beta[2]" , " beta[3]" , " sigma" )
7- result <- param_range(" beta" , c(1 , 3 ), vars = all_pars )
8- expect_equal(result , c(2L , 4L ))
9- })
10-
115test_that(" param_range returns empty integer when no matches" , {
126 all_pars <- c(" alpha" , " gamma[1]" , " gamma[2]" )
137 result <- param_range(" beta" , 1 : 3 , vars = all_pars )
148 expect_identical(result , integer(0 ))
159})
1610
17- test_that(" param_range handles single index" , {
18- all_pars <- c(" alpha" , " beta[1]" , " beta[2]" , " sigma" )
19- result <- param_range(" beta" , 2 , vars = all_pars )
20- expect_equal(result , 3L )
21- })
22-
2311test_that(" param_range drops non-matching indices silently" , {
2412 all_pars <- c(" alpha" , " beta[1]" , " beta[3]" )
2513 # beta[2] does not exist, should be silently dropped
2614 result <- param_range(" beta" , 1 : 3 , vars = all_pars )
2715 expect_equal(result , c(2L , 3L ))
2816})
2917
30- test_that(" param_range errors when vars is not NULL or character" , {
31- expect_error(
32- param_range(" beta" , 1 : 3 , vars = list (" a" , " b" )),
33- " 'vars' must be NULL or a character vector."
34- )
35- expect_error(
36- param_range(" beta" , 1 : 3 , vars = 1 : 5 ),
37- " 'vars' must be NULL or a character vector."
38- )
39- })
40-
4118# param_glue ---------------------------------------------------------------
4219
43- test_that(" param_glue selects correct parameters with one expression" , {
44- all_pars <- c(" alpha[1]" , " alpha[2]" , " alpha[3]" , " sigma" )
45- result <- param_glue(" alpha[{i}]" , i = c(1 , 3 ), vars = all_pars )
46- expect_equal(result , c(1L , 3L ))
47- })
48-
49- test_that(" param_glue selects correct parameters with multiple expressions" , {
50- all_pars <- c(
51- " b[X:1]" , " b[X:2]" , " b[Y:1]" , " b[Y:2]" , " sigma"
52- )
53- result <- param_glue(" b[{var}:{lev}]" , var = c(" X" , " Y" ), lev = c(1 , 2 ),
54- vars = all_pars )
55- expect_equal(result , c(1L , 3L , 2L , 4L ))
56- })
57-
5820test_that(" param_glue returns empty integer when no matches" , {
5921 all_pars <- c(" alpha" , " sigma" )
6022 result <- param_glue(" beta[{i}]" , i = 1 : 3 , vars = all_pars )
@@ -69,64 +31,10 @@ test_that("param_glue drops non-matching names silently", {
6931 expect_equal(result , c(1L , 2L ))
7032})
7133
72- test_that(" param_glue errors when vars is not NULL or character" , {
73- expect_error(
74- param_glue(" alpha[{i}]" , i = 1 : 3 , vars = list (" a" )),
75- " 'vars' must be NULL or a character vector."
76- )
77- expect_error(
78- param_glue(" alpha[{i}]" , i = 1 : 3 , vars = 42 ),
79- " 'vars' must be NULL or a character vector."
80- )
81- })
82-
8334# tidyselect_parameters ----------------------------------------------------
8435
85- test_that(" tidyselect_parameters selects by name" , {
86- all_pars <- c(" alpha" , " beta[1]" , " beta[2]" , " sigma" )
87- selected <- tidyselect_parameters(all_pars , vars(alpha , sigma ))
88- expect_equal(selected , c(" alpha" , " sigma" ))
89- })
90-
91- test_that(" tidyselect_parameters works with tidyselect helpers" , {
92- all_pars <- c(" alpha" , " beta[1]" , " beta[2]" , " sigma" )
93- selected <- tidyselect_parameters(all_pars , vars(starts_with(" beta" )))
94- expect_equal(selected , c(" beta[1]" , " beta[2]" ))
95- })
96-
9736test_that(" tidyselect_parameters works with negation" , {
9837 all_pars <- c(" alpha" , " beta[1]" , " beta[2]" , " sigma" )
9938 selected <- tidyselect_parameters(all_pars , vars(- alpha ))
10039 expect_equal(selected , c(" beta[1]" , " beta[2]" , " sigma" ))
10140})
102-
103- test_that(" tidyselect_parameters errors when nothing matches" , {
104- all_pars <- c(" alpha" , " beta[1]" , " sigma" )
105- expect_error(
106- tidyselect_parameters(all_pars , vars(starts_with(" zzz" ))),
107- " No parameters were found matching those names."
108- )
109- })
110-
111- test_that(" tidyselect_parameters works with contains()" , {
112- all_pars <- c(" b[(Intercept) X:1]" , " b[(Intercept) X:2]" , " sigma" )
113- selected <- tidyselect_parameters(all_pars , vars(contains(" Intercept" )))
114- expect_equal(selected , c(" b[(Intercept) X:1]" , " b[(Intercept) X:2]" ))
115- })
116-
117- # Integration with vars() --------------------------------------------------
118-
119- test_that(" param_range works inside vars() via prepare_mcmc_array" , {
120- result <- prepare_mcmc_array(mat , pars = vars(param_range(" beta" , 1 : 2 )))
121- pars <- dimnames(result )[[3 ]]
122- expect_equal(pars , c(" beta[1]" , " beta[2]" ))
123- })
124-
125- test_that(" param_glue works inside vars() via prepare_mcmc_array" , {
126- result <- prepare_mcmc_array(
127- mat ,
128- pars = vars(param_glue(" b[(Intercept) x:{i}]" , i = c(1 , 3 )))
129- )
130- pars <- dimnames(result )[[3 ]]
131- expect_equal(pars , c(" b[(Intercept) x:1]" , " b[(Intercept) x:3]" ))
132- })
0 commit comments