From 222c4b7449846ad67f3cdd91427ff31d00351c78 Mon Sep 17 00:00:00 2001
From: Rosemary Li
Date: Mon, 22 Jan 2024 05:07:59 +0000
Subject: [PATCH] add unit test
---
tests/testthat/test-calculate_study_day.R | 63 +++++++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 tests/testthat/test-calculate_study_day.R
diff --git a/tests/testthat/test-calculate_study_day.R b/tests/testthat/test-calculate_study_day.R
new file mode 100644
index 00000000..69297edd
--- /dev/null
+++ b/tests/testthat/test-calculate_study_day.R
@@ -0,0 +1,63 @@
+AE <- data.frame(
+ USUBJID = c("study123-123", "study123-124", "study123-125"),
+ AESTDTC = c("2012-01-01", "2012-04-14", "2012-04-14")
+)
+DM <- data.frame(
+ USUBJID = c("study123-123", "study123-124", "study123-125"),
+ RFSTDTC = c("2012-02-01", "2012-04-14", NA_character_)
+)
+
+test_that("`calculate_study_day()` works as epxected for bad input", {
+ expect_error(
+ calculate_study_day("a", "b", "C", "D", "E"),
+ "sdtm_in is not a data frame"
+ )
+ expect_error(
+ calculate_study_day(iris, "b", "C", "D", "E"),
+ "dm_domain is not a data frame"
+ )
+ expect_error(
+ calculate_study_day(iris, iris, "c", "d", "e"),
+ "dm_domain needs to have the variable of refdt"
+ )
+ expect_error(
+ calculate_study_day(iris, iris, "Species", "d", "e"),
+ "sdtm_in needs to have the variable of tgdt"
+ )
+ expect_error(
+ calculate_study_day(iris, iris, "Species", "Petal.Length", "e"),
+ "needs to have the variable of merge_key"
+ )
+ expect_error(
+ calculate_study_day(iris, iris, "Species", "Petal.Length", 123, "Species"),
+ "study_day_var is not a character vector"
+ )
+ expect_warning(
+ calculate_study_day(AE, DM, "RFSTDTC", "AESTDTC", "AENDY"),
+ "Target date and the returned study day doesn't match."
+ )
+
+ DM1 <- data.frame(
+ USUBJID = c("study123-123", "study123-123", "study123-125"),
+ RFSTDTC = c("2012-02-01", "2012-04-14", "2012-04-14")
+ )
+ expect_warning(
+ calculate_study_day(AE, DM1, "RFSTDTC", "AESTDTC", "AESTDY"),
+ "Reference date is not unique for each patient!"
+ )
+
+ DM2 <- data.frame(
+ USUBJID = c("study123-123", "study123-124", "study123-125"),
+ RFSTDTC = c(123, 456, 789)
+ )
+ expect_warning(
+ calculate_study_day(AE, DM2, "RFSTDTC", "AESTDTC", "AESTDY"),
+ "Encountered errors when converting refdt to dates."
+ )
+})
+
+test_that("`calculate_study_day()` works as epxected for good input", {
+ res <- calculate_study_day(AE, DM, "RFSTDTC", "AESTDTC", "AESTDY")
+ expected <- c(-31, 1, NA)
+ expect_equal(res$AESTDY, expected)
+})