Skip to content

Commit e106882

Browse files
authored
Merge pull request #159 from dajmcdon/km-test-archive
Updated testing for instatiation of an epi_archive
2 parents c5cfb5e + eb6a292 commit e106882

File tree

7 files changed

+187
-42
lines changed

7 files changed

+187
-42
lines changed

man/as_epi_archive.Rd

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/as_epi_df.Rd

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/epi_archive.Rd

Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/epi_slide.Rd

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/epix_as_of.Rd

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/epix_slide.Rd

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-archive.R

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
library(dplyr)
2+
3+
test_that("first input must be a data.frame",{
4+
expect_error(as_epi_archive(c(1,2,3),compactify=FALSE),
5+
regexp="`x` must be a data frame.")
6+
})
7+
8+
dt <- archive_cases_dv_subset$DT
9+
10+
test_that("data.frame must contain geo_value, time_value and version columns",{
11+
expect_error(as_epi_archive(select(dt,-geo_value), compactify=FALSE),
12+
regexp="`x` must contain a `geo_value` column.")
13+
expect_error(as_epi_archive(select(dt,-time_value), compactify=FALSE),
14+
regexp="`x` must contain a `time_value` column.")
15+
expect_error(as_epi_archive(select(dt,-version), compactify=FALSE),
16+
regexp="`x` must contain a `version` column.")
17+
})
18+
19+
test_that("other_keys can only contain names of the data.frame columns",{
20+
expect_error(as_epi_archive(dt,other_keys = "xyz", compactify=FALSE),
21+
regexp="`other_keys` must be contained in the column names of `x`.")
22+
expect_error(as_epi_archive(dt,other_keys = "percent_cli", compactify=FALSE),NA)
23+
})
24+
25+
test_that("other_keys cannot contain names geo_value, time_value or version",{
26+
expect_error(as_epi_archive(dt,other_keys = "geo_value", compactify=FALSE),
27+
regexp="`other_keys` cannot contain \"geo_value\", \"time_value\", or \"version\".")
28+
expect_error(as_epi_archive(dt,other_keys = "time_value", compactify=FALSE),
29+
regexp="`other_keys` cannot contain \"geo_value\", \"time_value\", or \"version\".")
30+
expect_error(as_epi_archive(dt,other_keys = "version", compactify=FALSE),
31+
regexp="`other_keys` cannot contain \"geo_value\", \"time_value\", or \"version\".")
32+
})
33+
34+
test_that("Warning thrown when other_metadata contains overlapping names with geo_type or time_type fields",{
35+
expect_warning(as_epi_archive(dt,additional_metadata = list(geo_type = 1), compactify=FALSE),
36+
regexp="`additional_metadata` names overlap with existing metadata fields\n\"geo_type\", \"time_type\".")
37+
expect_warning(as_epi_archive(dt,additional_metadata = list(time_type = 1), compactify=FALSE),
38+
regexp="`additional_metadata` names overlap with existing metadata fields\n\"geo_type\", \"time_type\".")
39+
})
40+
41+
test_that("epi_archives are correctly instantiated with a variety of data types",{
42+
# Data frame
43+
df <- data.frame(geo_value="ca",
44+
time_value=as.Date("2020-01-01"),
45+
version = as.Date("2020-01-01") + 0:19,
46+
value=1:20)
47+
48+
ea1 <- as_epi_archive(df, compactify=FALSE)
49+
expect_equal(key(ea1$DT),c("geo_value","time_value","version"))
50+
expect_equal(ea1$additional_metadata,list())
51+
52+
ea2 <- as_epi_archive(df, other_keys="value", additional_metadata=list(value=df$value), compactify=FALSE)
53+
expect_equal(key(ea2$DT),c("geo_value","time_value","value","version"))
54+
expect_equal(ea2$additional_metadata,list(value=df$value))
55+
56+
# Tibble
57+
tib <- tibble::tibble(df, code="x")
58+
59+
ea3 <- as_epi_archive(tib, compactify=FALSE)
60+
expect_equal(key(ea3$DT),c("geo_value","time_value","version"))
61+
expect_equal(ea3$additional_metadata,list())
62+
63+
ea4 <- as_epi_archive(tib, other_keys="code", additional_metadata=list(value=df$value), compactify=FALSE)
64+
expect_equal(key(ea4$DT),c("geo_value","time_value","code","version"))
65+
expect_equal(ea4$additional_metadata,list(value=df$value))
66+
67+
# Keyed data.table
68+
kdt <- data.table::data.table(geo_value="ca",
69+
time_value=as.Date("2020-01-01"),
70+
version = as.Date("2020-01-01") + 0:19,
71+
value = 1:20,
72+
code = "CA",
73+
key = "code")
74+
75+
ea5 <- as_epi_archive(kdt, compactify=FALSE)
76+
# Key from data.table isn't absorbed when as_epi_archive is used
77+
expect_equal(key(ea5$DT),c("geo_value","time_value","version"))
78+
expect_equal(ea5$additional_metadata,list())
79+
80+
ea6 <- as_epi_archive(kdt,other_keys="value", additional_metadata=list(value=df$value), compactify=FALSE)
81+
# Mismatched keys, but the one from as_epi_archive overrides
82+
expect_equal(key(ea6$DT),c("geo_value","time_value","value","version"))
83+
expect_equal(ea6$additional_metadata,list(value=df$value))
84+
85+
# Unkeyed data.table
86+
udt <- data.table::data.table(geo_value="ca",
87+
time_value=as.Date("2020-01-01"),
88+
version = as.Date("2020-01-01") + 0:19,
89+
value=1:20,
90+
code = "CA")
91+
92+
ea7 <- as_epi_archive(udt, compactify=FALSE)
93+
expect_equal(key(ea7$DT),c("geo_value","time_value","version"))
94+
expect_equal(ea7$additional_metadata,list())
95+
96+
ea8 <- as_epi_archive(udt,other_keys="code", additional_metadata=list(value=df$value), compactify=FALSE)
97+
expect_equal(key(ea8$DT),c("geo_value","time_value","code","version"))
98+
expect_equal(ea8$additional_metadata,list(value=df$value))
99+
100+
# epi_df
101+
edf1 <- jhu_csse_daily_subset %>%
102+
select(geo_value,time_value,cases) %>%
103+
mutate(version = max(time_value), code = "USA")
104+
105+
ea9 <- as_epi_archive(edf1, compactify=FALSE)
106+
expect_equal(key(ea9$DT),c("geo_value","time_value","version"))
107+
expect_equal(ea9$additional_metadata,list())
108+
109+
ea10 <- as_epi_archive(edf1,other_keys="code", additional_metadata=list(value=df$value), compactify=FALSE)
110+
expect_equal(key(ea10$DT),c("geo_value","time_value","code","version"))
111+
expect_equal(ea10$additional_metadata,list(value=df$value))
112+
113+
# Keyed epi_df
114+
edf2 <- data.frame(geo_value = "al",
115+
time_value = rep(as.Date("2020-01-01") + 0:9,2),
116+
version = c(rep(as.Date("2020-01-25"),10),
117+
rep(as.Date("2020-01-26"),10)),
118+
cases = 1:20,
119+
misc = "USA") %>%
120+
as_epi_df(additional_metadata = list(other_keys = "misc"))
121+
122+
ea11 <- as_epi_archive(edf2, compactify=FALSE)
123+
expect_equal(key(ea11$DT),c("geo_value","time_value","version"))
124+
expect_equal(ea11$additional_metadata,list())
125+
126+
ea12 <- as_epi_archive(edf2,other_keys="misc", additional_metadata=list(value=df$misc), compactify=FALSE)
127+
expect_equal(key(ea12$DT),c("geo_value","time_value","misc","version"))
128+
expect_equal(ea12$additional_metadata,list(value=df$misc))
129+
})

0 commit comments

Comments
 (0)