Nothing
test_that("can find subset graph", {
graph_edges <- data.frame(
parent = c("A", "B", "C", "C", "F"),
child = c("B", "C", "D", "E", "D")
)
graph <- graph_builder() |>
populate_edges(graph_edges, "parent", "child") |>
build_directed()
graph_under_d <- graph |>
subset("D")
expect_equal(as.character(parents(graph_under_d, "D")), character(0))
graph_under_c <- graph |>
subset("C")
expect_equal(as.character(parents(graph_under_d, "C")), character(0))
expect_equal(as.character(find_path(graph_under_c, "C", "E")), c("C", "E"))
graph_under_b <- graph |>
subset("B")
expect_equal(as.character(find_path(graph_under_b, "B", "E")), c("B", "C", "E"))
expect_equal(as.character(nodes(graph_under_b)), c("B", "C", "D", "E"))
})
test_that("can find subset acyclic graph", {
graph_edges <- data.frame(
parent = c("A", "B", "C", "C", "F"),
child = c("B", "C", "D", "E", "D")
)
graph <- graph_builder() |>
populate_edges(graph_edges, "parent", "child") |>
build_acyclic()
graph_under_d <- graph |>
subset("D")
expect_s3_class(graph_under_d, "DirectedAcyclicGraph")
expect_equal(as.character(parents(graph_under_d, "D")), character(0))
graph_under_c <- graph |>
subset("C")
expect_equal(as.character(parents(graph_under_d, "C")), character(0))
expect_equal(as.character(find_path(graph_under_c, "C", "E")), c("C", "E"))
graph_under_b <- graph |>
subset("B")
expect_equal(as.character(find_path(graph_under_b, "B", "E")), c("B", "C", "E"))
})
test_that("can find subset graph from multiple nodes (directed)", {
graph_edges <- data.frame(
parent = c("A", "B", "C", "C", "F"),
child = c("B", "C", "D", "E", "D")
)
graph <- graph_builder() |>
populate_edges(graph_edges, "parent", "child") |>
build_directed()
# Subset from two nodes: B and F
sub_graph <- graph |>
subset(c("B", "F"))
# Check that the resulting subgraph includes the
# reachable descendants from B and F (namely C, D, E) plus B, F themselves.
# A should not be included since we are not traversing upward.
expect_equal(sort(as.character(nodes(sub_graph))),
sort(c("B", "C", "D", "E", "F")))
# Some path checks:
# B -> E goes through B -> C -> E
expect_equal(as.character(find_path(sub_graph, "B", "E")),
c("B", "C", "E"))
# F -> D is direct
expect_equal(as.character(find_path(sub_graph, "F", "D")),
c("F", "D"))
# A is not in sub_graph, so the path won't exist
expect_false("A" %in% as.character(nodes(sub_graph)))
})
test_that("can find subset graph from multiple nodes (acyclic)", {
graph_edges <- data.frame(
parent = c("A", "B", "C", "C", "F"),
child = c("B", "C", "D", "E", "D")
)
graph <- graph_builder() |>
populate_edges(graph_edges, "parent", "child") |>
build_acyclic()
# Subset from two nodes: B and F
sub_graph <- graph |>
subset(c("B", "F"))
# The resulting object should still be a DirectedAcyclicGraph
expect_s3_class(sub_graph, "DirectedAcyclicGraph")
# Check that the resulting subgraph includes the
# reachable descendants from B and F (namely C, D, E) plus B, F themselves.
expect_equal(sort(as.character(nodes(sub_graph))),
sort(c("B", "C", "D", "E", "F")))
# Path checks:
# B -> E goes through B -> C -> E
expect_equal(as.character(find_path(sub_graph, "B", "E")),
c("B", "C", "E"))
# F -> D is direct
expect_equal(as.character(find_path(sub_graph, "F", "D")),
c("F", "D"))
# A is not included
expect_false("A" %in% as.character(nodes(sub_graph)))
})
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.