tests/testthat/test-dominator.tree.R

test_that("dominator_tree works", {
  g <- graph_from_literal(
    R -+ A:B:C, A -+ D, B -+ A:D:E, C -+ F:G, D -+ L,
    E -+ H, F -+ I, G -+ I:J, H -+ E:K, I -+ K, J -+ I,
    K -+ I:R, L -+ H
  )
  dtree <- dominator_tree(g, root = "R")

  # This is awkward; dtree$dom contains -1 for the root and normal vertex indices
  # for the rest, and we want to map them to names. This seemed to be the cleanest
  # way, but it is not nearly as user-friendly as it should be
  names <- c("$root", V(g)$name)
  dtree$dom <- names[ifelse(dtree$dom < 0, 1, dtree$dom + 1)]
  dtree$leftout <- V(g)$name[dtree$leftout]
  expect_that(dtree$dom, equals(c(
    "$root", "R", "R", "R", "R", "R", "C", "C",
    "D", "R", "R", "G", "R"
  )))
  expect_that(dtree$leftout, equals(character()))
  expect_that(
    as_edgelist(dtree$domtree),
    equals(structure(c(
      "R", "R", "R", "R", "R", "C", "C",
      "D", "R", "R", "G", "R", "A", "B",
      "C", "D", "E", "F", "G", "L", "H",
      "I", "J", "K"
    ), .Dim = c(12L, 2L)))
  )
})

Try the igraph package in your browser

Any scripts or data that you put into this service are public.

igraph documentation built on Aug. 10, 2023, 9:08 a.m.