# Test Case 1: Validate correct network structure in the original 'potter' dataset
test_that("checkPedigreeNetwork identifies valid pedigree network correctly in potter dataset", {
ped <- potter
results <- checkPedigreeNetwork(ped, personID = "personID", momID = "momID", dadID = "dadID", verbose = TRUE)
expect_true(results$is_acyclic)
expect_equal(length(results$individuals_with_excess_parents), 0)
expect_null(results$cyclic_relationships)
})
# Test Case 2: Validate detection of a cycle in 'potter' dataset by introducing a cyclic relationship
test_that("checkPedigreeNetwork detects cyclic relationships correctly in potter dataset", {
cyclic_potter <- potter
# Introduce a cycle: making Harry Potter his own ancestor
cyclic_potter$dadID[cyclic_potter$personID == cyclic_potter$dadID[cyclic_potter$name == "Harry Potter"]] <- cyclic_potter$personID[cyclic_potter$name == "Harry Potter"]
results <- checkPedigreeNetwork(cyclic_potter, personID = "personID", momID = "momID", dadID = "dadID", verbose = TRUE)
expect_false(results$is_acyclic)
expect_true(!is.null(results$cyclic_relationships))
expect_true(any(cyclic_potter$personID[cyclic_potter$name == "Harry Potter"] %in% results$cyclic_relationships))
})
# Test Case 3: Validate detection of individuals with more than two parents in 'potter' dataset
test_that("checkPedigreeNetwork detects individuals with excess parents in potter dataset", {
data("potter")
excess_parents_potter <- potter
# Artificially create an excess parent situation for Harry Potter
new_parent <- data.frame(
personID = "999",
famID = "1",
name = "New Parent",
gen = 1,
momID = NA,
dadID = NA,
spouseID = NA,
sex = "M"
)
excess_parents_potter <- rbind(excess_parents_potter, new_parent)
# Duplicate Harry Potter row to simulate excess parentage scenario
extra_row <- excess_parents_potter[excess_parents_potter$name == "Harry Potter", ]
extra_row$dadID <- "999" # new parent
excess_parents_potter <- rbind(excess_parents_potter, extra_row)
results <- checkPedigreeNetwork(excess_parents_potter, personID = "personID", momID = "momID", dadID = "dadID", verbose = TRUE)
expect_true("Harry Potter" %in% excess_parents_potter$name[excess_parents_potter$personID %in% results$individuals_with_excess_parents])
})
# Test Case 4: Validate detection of duplicate edges in 'potter' dataset
test_that("checkPedigreeNetwork detects duplicate edges in potter dataset", {
dup_potter <- potter
dup_row <- potter[1, ]
dup_potter <- rbind(dup_potter, dup_row)
results <- checkPedigreeNetwork(dup_potter,
personID = "personID",
momID = "momID",
dadID = "dadID", verbose = TRUE
)
expect_true(nrow(results$duplicate_edges) > 0)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.