@@ -62,6 +62,95 @@ test_that("epix_merge merges and carries forward updates properly", {
6262 )
6363
6464 expect_identical(xy , xy_expected )
65+
66+
67+ s1 <- tibble(
68+ geo_value = c(" ca" , " ca" , " ca" ),
69+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-01" , " 2024-08-02" )),
70+ version = as.Date(c(" 2024-08-01" , " 2024-08-02" , " 2024-08-02" )),
71+ signal1 = c(" XA" , " XB" , " XC" )
72+ )
73+
74+ s2 <- tibble(
75+ geo_value = c(" ca" , " ca" ),
76+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-02" )),
77+ version = as.Date(c(" 2024-08-03" , " 2024-08-03" )),
78+ signal2 = c(" YA" , " YB" )
79+ )
80+
81+ s1 <- s1 %> % as_epi_archive()
82+ s2 <- s2 %> % as_epi_archive()
83+
84+ merge1_expected <- tibble(
85+ geo_value = rep(" ca" , 5 ),
86+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-01" , " 2024-08-01" , " 2024-08-02" , " 2024-08-02" )),
87+ version = as.Date(c(" 2024-08-01" , " 2024-08-02" , " 2024-08-03" , " 2024-08-02" , " 2024-08-03" )),
88+ signal1 = c(" XA" , " XB" , " XB" , " XC" , " XC" ),
89+ signal2 = c(NA , NA , " YA" , NA , " YB" )
90+ ) %> % as_epi_archive()
91+
92+ merged1 <- epix_merge(s1 , s2 , sync = " locf" )
93+
94+ expect_identical(merged1 , merge1_expected )
95+
96+ s1 <- tibble(
97+ geo_value = c(" ca" , " ca" , " ca" , " ca" ),
98+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-01" , " 2024-08-02" , " 2024-08-03" )),
99+ version = as.Date(c(" 2024-08-01" , " 2024-08-03" , " 2024-08-03" , " 2024-08-03" )),
100+ signal1 = c(" XA" , " XB" , " XC" , " XD" )
101+ )
102+
103+ s2 <- tibble(
104+ geo_value = c(" ca" , " ca" ),
105+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-02" )),
106+ version = as.Date(c(" 2024-08-02" , " 2024-08-02" )),
107+ signal2 = c(" YA" , " YB" ),
108+ )
109+
110+
111+ s1 <- s1 %> % as_epi_archive()
112+ s2 <- s2 %> % as_epi_archive()
113+
114+ merge2_expected <- tibble(
115+ geo_value = rep(" ca" , 6 ),
116+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-01" , " 2024-08-01" , " 2024-08-02" , " 2024-08-02" , " 2024-08-03" )),
117+ version = as.Date(c(" 2024-08-01" , " 2024-08-02" , " 2024-08-03" , " 2024-08-02" , " 2024-08-03" , " 2024-08-03" )),
118+ signal1 = c(" XA" , " XA" , " XB" , NA , " XC" , " XD" ),
119+ signal2 = c(NA , " YA" , " YA" , " YB" , " YB" , NA )
120+ ) %> % as_epi_archive()
121+
122+ merged2 <- epix_merge(s1 , s2 , sync = " locf" )
123+
124+ expect_identical(merged2 , merge2_expected )
125+
126+ s1 <- tibble(
127+ geo_value = c(" ca" , " ca" , " ca" ),
128+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-02" , " 2024-08-03" )),
129+ version = as.Date(c(" 2024-08-01" , " 2024-08-02" , " 2024-08-03" )),
130+ signal1 = c(" XA" , " XB" , " XC" )
131+ )
132+
133+ s2 <- tibble(
134+ geo_value = c(" ca" , " ca" , " ca" ),
135+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-01" , " 2024-08-02" )),
136+ version = as.Date(c(" 2024-08-02" , " 2024-08-03" , " 2024-08-03" )),
137+ signal2 = c(" YA" , " YB" , " YC" ),
138+ )
139+
140+ s1 <- s1 %> % as_epi_archive()
141+ s2 <- s2 %> % as_epi_archive()
142+
143+ merge3_expected <- tibble(
144+ geo_value = rep(" ca" , 6 ),
145+ time_value = as.Date(c(" 2024-08-01" , " 2024-08-01" , " 2024-08-01" , " 2024-08-02" , " 2024-08-02" , " 2024-08-03" )),
146+ version = as.Date(c(" 2024-08-01" , " 2024-08-02" , " 2024-08-03" , " 2024-08-02" , " 2024-08-03" , " 2024-08-03" )),
147+ signal1 = c(" XA" , " XA" , " XA" , " XB" , " XB" , " XC" ),
148+ signal2 = c(NA , " YA" , " YB" , NA , " YC" , NA )
149+ ) %> % as_epi_archive()
150+
151+ merged3 <- epix_merge(s1 , s2 , sync = " locf" )
152+
153+ expect_identical(merged3 , merge3_expected )
65154})
66155
67156test_that(" epix_merge forbids and warns on metadata and naming issues" , {
0 commit comments