tests/testthat/test-decompose.graph.R

test_that("decompose works", {
  g <- sample_gnp(1000, 1 / 1500)
  G <- decompose(g)
  clu <- components(g)
  Gsizes <- sapply(G, vcount)
  expect_that(sort(clu$csize), equals(sort(Gsizes)))
})

test_that("decompose works for many components", {
  g <- make_empty_graph(50001)
  tmp <- decompose(g)
  expect_that(1, equals(1))
})

test_that("decompose works for many components and attributes", {
  g <- make_empty_graph(50001)
  V(g)$name <- 1:vcount(g)
  tmp <- decompose(g)
  expect_that(1, equals(1))
})

test_that("decompose keeps attributes", {
  g <- make_ring(10) + make_ring(5)
  V(g)$name <- letters[1:(10 + 5)]
  E(g)$name <- apply(as_edgelist(g), 1, paste, collapse = "-")
  d <- decompose(g)
  d <- d[order(sapply(d, vcount))]

  expect_that(length(d), equals(2))
  expect_that(sapply(d, vcount), equals(c(5, 10)))
  expect_that(V(d[[1]])$name, equals(letters[1:5 + 10]))
  expect_that(V(d[[2]])$name, equals(letters[1:10]))
  e1 <- apply(as_edgelist(d[[1]]), 1, paste, collapse = "-")
  e2 <- apply(as_edgelist(d[[2]]), 1, paste, collapse = "-")
  expect_that(E(d[[1]])$name, equals(e1))
  expect_that(E(d[[2]])$name, equals(e2))
})

test_that("decompose protects correctly", {
  g <- make_graph(integer(), n = 10001)
  V(g)$a <- 1

  torture <- gctorture2(10001)
  on.exit(gctorture2(torture))

  length(decompose(g))
})

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.