@@ -108,6 +108,8 @@ test_that("epi_slide alerts if the provided f doesn't take enough args", {
108108})
109109
110110test_that(" basic grouped epi_slide computation produces expected output" , {
111+ # Also checks that we correctly remove extra rows and columns (`.real`) used
112+ # to recover `ref_time_value`s.
111113 expected_output = dplyr :: bind_rows(
112114 dplyr :: tibble(geo_value = " ak" , time_value = d + 1 : 5 , value = 11 : 15 , slide_value = cumsum(11 : 15 )),
113115 dplyr :: tibble(geo_value = " al" , time_value = d + 1 : 5 , value = - (1 : 5 ), slide_value = cumsum(- (1 : 5 )))
@@ -150,6 +152,24 @@ test_that("basic ungrouped epi_slide computation produces expected output", {
150152 epi_slide(before = 50 ,
151153 slide_value = sum(.x $ value ))
152154 expect_identical(result1 , expected_output )
155+
156+ # Ungrouped with multiple geos
157+ expected_output = dplyr :: bind_rows(
158+ dplyr :: tibble(
159+ geo_value = " ak" , time_value = d + 1 : 5 , value = 11 : 15 , slide_value = cumsum(11 : 15 ) + cumsum(- (1 : 5 )
160+ )),
161+ dplyr :: tibble(
162+ geo_value = " al" , time_value = d + 1 : 5 , value = - (1 : 5 ), slide_value = cumsum(11 : 15 ) + cumsum(- (1 : 5 ))
163+ )
164+ ) %> %
165+ as_epi_df(as_of = d + 6 ) %> %
166+ arrange(time_value )
167+
168+ result2 <- small_x %> %
169+ ungroup() %> %
170+ epi_slide(before = 50 ,
171+ slide_value = sum(.x $ value ))
172+ expect_identical(result2 , expected_output )
153173})
154174
155175test_that(" epi_slide computation via formula can use ref_time_value" , {
@@ -177,6 +197,20 @@ test_that("epi_slide computation via formula can use ref_time_value", {
177197 before = 50 )
178198
179199 expect_identical(result3 , expected_output )
200+
201+ # Ungrouped with multiple geos
202+ expected_output = dplyr :: bind_rows(
203+ dplyr :: tibble(geo_value = " ak" , time_value = d + 1 : 5 , value = 11 : 15 , slide_value = as.double(d + 1 : 5 )),
204+ dplyr :: tibble(geo_value = " al" , time_value = d + 1 : 5 , value = - (1 : 5 ), slide_value = as.double(d + 1 : 5 ))
205+ ) %> %
206+ as_epi_df(as_of = d + 6 ) %> %
207+ arrange(time_value )
208+
209+ result4 <- small_x %> %
210+ ungroup() %> %
211+ epi_slide(f = ~ .ref_time_value ,
212+ before = 50 )
213+ expect_identical(result4 , expected_output )
180214})
181215
182216test_that(" epi_slide computation via function can use ref_time_value" , {
@@ -243,6 +277,20 @@ test_that("epi_slide computation via dots can use ref_time_value and group", {
243277 slide_value = nrow(.group_key ))
244278
245279 expect_identical(result4 , expected_output )
280+
281+ # Ungrouped with multiple geos
282+ expected_output = dplyr :: bind_rows(
283+ dplyr :: tibble(geo_value = " ak" , time_value = d + 1 : 5 , value = 11 : 15 , slide_value = as.double(d + 1 : 5 )),
284+ dplyr :: tibble(geo_value = " al" , time_value = d + 1 : 5 , value = - (1 : 5 ), slide_value = as.double(d + 1 : 5 ))
285+ ) %> %
286+ as_epi_df(as_of = d + 6 ) %> %
287+ arrange(time_value )
288+
289+ result5 <- small_x %> %
290+ ungroup() %> %
291+ epi_slide(before = 50 ,
292+ slide_value = .ref_time_value )
293+ expect_identical(result5 , expected_output )
246294})
247295
248296test_that(" epi_slide computation via dots outputs the same result using col names and the data var" , {
0 commit comments