Nothing
library(dplyr, quietly = TRUE)
check_db <- function() {
if (!check_ecotox_availability()) {
skip("ECOTOX database not available")
}
}
test_that("Text is sanitised to numerics as expected", {
expect_true({
char_num <- c("10", " 2", "3 ", "~5", "9.2*", "2,33",
"2,333", "2.1(1.0 - 3.2)", "1-5", "1e-3") |>
as_numeric_ecotox(range_fun = median)
all(char_num == c(10, 2, 3, 5, 9.2, 2.33, 2333, 2.1, 3, 0.001))
})
})
test_that("Text is sanitised to numerics as expected", {
expect_true({
char_date <- c("5-19-1987 ", "5/dd/2021", "3/19/yyyy", "1985", "mm/19/1999",
"October 2004", "nr/nr/2015")
identical(
as_date_ecotox(char_date),
as.Date(c("1987-05-19", "2021-05-01", "", "1985-01-01",
"1999-01-19", "2004-10-01", "2015-01-01"))
) &&
identical(
as_date_ecotox(char_date, dd = 15L),
as.Date(c("1987-05-19", "2021-05-15", "", "1985-01-15",
"1999-01-19", "2004-10-15", "2015-01-01"))
) &&
identical(
as_date_ecotox(char_date, dd = -1L),
as.Date(c("1987-05-19", "", "", "", "1999-01-19", "", "2015-01-01"))
) &&
identical(
as_date_ecotox(char_date, mm = 6L),
as.Date(c("1987-05-19", "2021-05-01", "", "1985-06-01",
"1999-06-19", "2004-10-01", "2015-01-01"))
) &
identical(
as_date_ecotox(char_date, nr = 6L),
as.Date(c("1987-05-19", "2021-05-01", "", "1985-01-01",
"1999-01-19", "2004-10-01", "2015-06-06"))
)
})
})
test_that("Text is sanitised to units as expected", {
expect_true({
x <-
as_unit_ecotox(c("C", "K"), type = "media") |>
lapply(units::deparse_unit) |>
unlist()
all(x == c("°C", "K"))
})
})
test_that("Converting numerics with units works as expected", {
expect_equal({
tibble(
conc1_mean = c("1", "2", "5e-4", "0.2"),
conc1_unit = c("mg/L", "M", "% w/v", "ppt w/v")
) |>
process_ecotox_numerics(add_units = TRUE) |>
mutate(
conc1_mean_standard = mixed_to_single_unit(conc1_mean, "ug/L")) |>
pull("conc1_mean_standard") |>
as.numeric()
}, c(1e+03, NA_real_, 5e+03, 2e+05))
})
test_that("Sanitising what is already is sanitised returns as is", {
expect_true({
as_numeric_ecotox(1) == 1 &&
as_date_ecotox(as.Date("2025-03-20")) == as.Date("2025-03-20") &
as_unit_ecotox(units::mixed_units(1, "mg/L")) ==
units::mixed_units(1, "mg/L")
})
})
test_that("Locally converted units correspond well with online standards", {
check_db()
skip_if_offline()
skip_on_cran()
expect_true({
data_local <- search_ecotox(
list(
test_cas = list(
terms = "1912249",
method = "exact"
),
endpoint = list(
terms = "LC50",
method = "exact"
),
media_type = list(
terms = c("FW", "SW"),
method = "contains"
)
),
output_fields = c("species.latin_name", "results.conc1_mean",
"results.conc1_unit", "results.result_id")) |>
suppressWarnings()
data_online <-
websearch_ecotox(
list_ecotox_web_fields(
txAdvancedChemicalEntries = "1912249",
RBCHEMSEARCHTYPE = "EXACT",
cbResult_number = "Result+Number",
sortfield = "AQ.RESULT_NUMBER",
cbResultsGroup12a = "LC50",
cbemwFresh = "emwFresh",
cbemwSalt = "emwSalt")
)
compare <-
left_join(
data_local,
data_online$`Aquatic-Export` |>
select(
result_id = "Result+Number",
conc_standardised = "Conc 1 Mean (Standardized)"),
by = "result_id"
) |>
process_ecotox_numerics(add_units = TRUE, warn = FALSE) |>
mutate(conc_package = mixed_to_single_unit(conc1_mean, "mg/L") |> as.numeric(),
ratio = conc_standardised / conc_package) |>
filter(!is.na(ratio))
all(abs(compare$ratio - 1) < 1e-6)
})
})
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.