Nothing
test_that("2 x 2 engine returns expected RR", {
x <- R4VN:::.r4vn_epi_2x2(20,80,10,90)
expect_equal(x$risk_exposed,.20)
expect_equal(x$risk_unexposed,.10)
expect_equal(x$rr,2,tolerance=1e-10)
expect_true(is.finite(x$fisher_p))
})
test_that("line-list health check detects errors", {
d <- data.frame(
id=c(1,1,2),
onset=as.Date(c("2026-01-03","2026-01-05","2026-01-08")),
report=as.Date(c("2026-01-04","2026-01-03","2026-01-09")),
age=c(20,30,140)
)
h <- R4VN:::.r4vn_epi_health(d,"id","onset","report","age")
expect_true(any(h$table$Issue=="Duplicate IDs"))
expect_true(any(h$table$Issue=="Report date before onset date"))
expect_true(any(h$table$Issue=="Impossible age (<0 or >120)"))
})
test_that("template mapping recognizes common Vietnamese coordinate names", {
d <- data.frame(ma_ca=1:3, vi_do=c(10.7,10.8,10.9), kinh_do=c(106.6,106.7,106.8))
expect_warning(
m <- R4VN:::.r4vn_epi_guess_mapping(d,"spatial_cases"),
NA
)
expect_equal(unname(m["case_id"]),"ma_ca")
expect_equal(unname(m["latitude"]),"vi_do")
expect_equal(unname(m["longitude"]),"kinh_do")
})
test_that("spatial import validation identifies coordinate issues", {
d <- data.frame(case_id=c("A","A","B"),latitude=c(10.7,95,NA),longitude=c(106.6,106.7,106.8))
expect_warning(
v <- R4VN:::.r4vn_epi_validate_import(d,"spatial_cases"),
NA
)
expect_true(v$critical > 0)
expect_true(any(grepl("Duplicate",v$issues$Issue)))
expect_true(any(grepl("outside valid",v$issues$Issue)))
})
test_that("surveillance baseline returns signals field", {
d <- data.frame(
date=as.Date(c("2023-01-02","2024-01-01","2025-01-06","2026-01-05")),
cases=c(10,11,9,30)
)
z <- R4VN:::.r4vn_epi_surveillance(d,"date","cases","week",3,2)
expect_true(all(c("baseline_mean","threshold","signal")%in%names(z)))
})
test_that("spatial validation counts valid coordinates", {
d <- data.frame(lat=c(10.7,10.8,NA,100),lon=c(106.6,106.7,106.8,106.9))
z <- R4VN:::.r4vn_epi_spatial_validate(d,"lat","lon")
expect_equal(z$valid_n,2)
expect_equal(z$invalid_range_n,1)
})
test_that("buffer and distance engines work when sf is installed", {
skip_if_not_installed("sf")
cases <- data.frame(id=1:3,latitude=c(10.764,10.765,10.80),longitude=c(106.662,106.663,106.70))
src <- data.frame(source_id="S1",latitude=10.764,longitude=106.662)
z <- R4VN:::.r4vn_epi_spatial_buffer(cases,src,500,"latitude","longitude")
expect_equal(nrow(z$data),3)
expect_true(z$data$within_buffer[1])
expect_true(all(is.finite(z$data$distance_source_m)))
})
test_that("density grid works when sf is installed", {
skip_if_not_installed("sf")
d <- data.frame(latitude=c(10.764,10.765,10.766),longitude=c(106.662,106.663,106.664))
g <- R4VN:::.r4vn_epi_spatial_grid(d,"latitude","longitude",500,"hexagon")
expect_s3_class(g,"sf")
expect_equal(sum(g$cases),3)
})
test_that("DBSCAN clustering works when optional packages are installed", {
skip_if_not_installed("sf")
skip_if_not_installed("dbscan")
d <- data.frame(latitude=c(10.764,10.7641,10.7642,10.80),
longitude=c(106.662,106.6621,106.6622,106.70))
z <- R4VN:::.r4vn_epi_spatial_dbscan(d,"latitude","longitude",100,2)
expect_true("cluster_id"%in%names(z))
expect_true(any(z$cluster_id>0))
})
test_that("epitool app can be constructed when shiny is installed", {
skip_if_not_installed("shiny")
d <- data.frame(id=1:3,onset_date=as.Date("2026-01-01")+0:2,
latitude=c(10.7,10.71,10.72),longitude=c(106.6,106.61,106.62))
app <- R4VN:::.r4vn_epitool_app(d,"d")
expect_s3_class(app,"shiny.appobj")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.