test_that("topo_sort", {
# graph:
# a
nodes = rbindlist(list(
list(id = "a", parents = list(character()))
), use.names = TRUE)
r = topo_sort(nodes)
rr = data.table(id = "a", depth = 0)
expect_equal(r, rr)
# graph:
# a b
nodes = rbindlist(list(
list(id = "a", parents = list(character())),
list(id = "b", parents = list(character()))
), use.names = TRUE)
r = topo_sort(nodes)
rr = data.table(
id = c("a", "b"),
depth = c(0, 0))
expect_equal(r, rr)
# graph:
# c -> b -> a
nodes = rbindlist(list(
list(id = "a", parents = list("b")),
list(id = "b", parents = list("c")),
list(id = "c", parents = list(character()))
), use.names = TRUE)
r = topo_sort(nodes)
rr = data.table(
id = c("c", "b", "a"),
depth = c(0, 1, 2))
expect_equal(r, rr)
# graph:
# c -> b ---------> e
# b -> a ----> e
# d -> b
nodes = rbindlist(list(
list(id = "a", parents = list("b")),
list(id = "b", parents = list(c("c", "d"))),
list(id = "c", parents = list(character())),
list(id = "d", parents = list(character())),
list(id = "e", parents = list(c("a", "b")))
), use.names = TRUE)
r = topo_sort(nodes)
rr = data.table(
id = c("c", "d", "b", "a", "e"),
depth = c(0, 0, 1, 2, 3))
expect_equal(r, rr)
# graph:
# a -> b -> c -> a
nodes = rbindlist(list(
list(id = "a", parents = list("c")),
list(id = "b", parents = list("a")),
list(id = "c", parents = list("a"))
), use.names = TRUE)
expect_error(topo_sort(nodes), "Cycle")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.