tests/testthat/test-hrg.R

test_that("Starting from state works (#225)", {
  withr::local_seed(42)

  g <- sample_gnp(10, p = 1 / 2) + sample_gnp(10, p = 1 / 2)
  hrg <- fit_hrg(g)
  hrg2 <- fit_hrg(g, hrg = hrg, start = TRUE, steps = 1)
  expect_equal(hrg2, hrg, ignore_attr = TRUE)
})

test_that("as.hclust.igraphHRG() works", {
  withr::local_seed(42)

  g <- make_graph("zachary")
  hrg <- fit_hrg(g)
  expect_snapshot({
    summary(as.hclust(hrg))
  })
})

test_that("sample_hrg() checks its argument", {
  expect_snapshot(error = TRUE, {
    sample_hrg(make_ring(10))
  })
})


test_that("hrg_tree() checks its argument", {
  expect_snapshot(error = TRUE, {
    hrg_tree(make_ring(10))
  })
})

test_that("print.igrapHRG() works", {
  withr::local_seed(42)

  small_g <- sample_gnp(10, p = 1 / 2) + sample_gnp(10, p = 1 / 2)
  small_g <- fit_hrg(small_g)

  # auto, tree because small
  expect_output(print(small_g), "- ")

  expect_output(print(small_g, type = "plain"), "->")

  # big_g <- sample_gnp(110, p = 1 / 2) + sample_gnp(110, p = 1 / 2)
  # big_g <- fit_hrg(big_g)
  big_hrg <- list(
    left = c(
      -24, 57, -68, -72, 112, -45, -142, 29, 66, -65, -93, -29, -51, -187, -113,
      -175, -91, 122, -197, -138, 158, -36, -89, -210, 188, -74, -125, -39, -41, 5,
      -66, -123, 67, -49, -59, -122, -19, -136, -92, -146, 118, -132, 144, -104,
      -161, 180, -158, 72, -196, -26, -108, 168, -218, 71, 14, 8, -207, -5, -87,
      -81, -4, 27, -183, 19, -111, -181, 117, -77, 37, -141, -20, 115, -162, -212,
      -156, 46, -95, 6, -86, 190, -35, 148, -157, 68, -44, 10, 116, -90, -176, 123,
      -11, -180, -6, -137, 111, -8, 156, -64, 134, 114, -204, 113, -143, -165, -128,
      28, -199, -194, -148, 189, -129, -54, -159, 0, -34, -185, -67, -94, 64, -178,
      -200, 45, -171, -106, -15, -61, 23, -40, -70, -55, -116, -38, 3, 39, 152,
      -193, -57, -114, 2, -18, -149, 124, -16, -14, -189, -99, -131, -85, -154, -42,
      -163, -32, 119, -103, -152, -50, -201, -28, 121, -23, -3, 110, -177, 12, 9,
      -7, 127, -219, 133, 36, -56, -173, -208, -153, -192, -73, -12, 20, -130, 1, 4,
      151, -139, -150, -63, -96, -47, 198, -205, -82, 69, -102, 131, -117, -53,
      -198, -118, -133, -145, -206, 154, -211, 163, -37, -155, -168, 11, -115, -140,
      -71, 85, -30, 159, -60, -134, 136, 143, -160, -79
    ),
    right = c(
      -172, 96, -126, 170, 132, 150, 147, -112, 97, 137, 129, 155, -151, 26, 128,
      181, -10, 213, 107, -147, 174, -76, 171, -195, 201, 74, -25, 61, -46, -121,
      59, -48, 73, 47, -80, 52, 32, 176, 58, -216, -209, 161, 157, 93, 214, 191,
      -107, 103, -31, 34, 205, 173, -169, 101, 87, -179, -33, 120, 169, -217, 195,
      33, 56, 44, -214, 18, 139, 182, -22, -105, 16, 217, -100, 31, 102, 92, -88,
      76, 22, 196, 162, -52, 185, 81, -2, 38, 172, 211, 135, 126, -203, -101, 210,
      43, 165, 108, 184, -170, 175, 212, 17, 149, 183, 89, -188, 65, 105, 125, -124,
      202, 130, 80, -166, 41, 91, -75, -190, 30, 75, 106, -119, 48, 35, 79, 177,
      215, 99, 193, 207, -215, 70, 208, -120, 51, -21, 146, 77, -144, 54, 153, 138,
      167, 145, 82, 15, 178, 21, -84, 194, 209, -27, 98, 166, -135, -164, -62, 179,
      24, -184, 200, -58, 199, -213, -98, 78, 204, 192, 49, 140, -69, -186, -17, 95,
      -167, 142, -174, -43, 88, 25, 83, -202, -83, -78, 186, -191, 40, 7, 206, 63,
      -182, 109, 203, 197, 141, -13, 42, 50, 13, 100, -9, 219, 104, 187, 62, 55,
      -127, 53, -109, 218, 60, 90, 86, 160, -110, 94, -97, 164, 216, 84
    ),
    prob = c(
      0.22866071428571427, 0, 0.966666666666667, 0, 1, 0.26666666666666666, 0.5,
      1, 0, 0.48484848484848486, 0.470588235294117641, 0.8571428571428571,
      0.477453580901856744, 0.44, 0.3076923076923077, 0, 0.5352941176470588, 0,
      0.125, 0.47156084656084657, 1, 0.6666666666666666, 0.6666666666666666, 0, 1,
      0.35714285714285715, 0.6333333333333333, 0.8, 0.2, 1, 0, 0.6428571428571429,
      0, 0.16666666666666666, 0.3333333333333333, 0, 0.7777777777777778, 0, 1, 0, 0,
      0, 0, 1, 0.7142857142857143, 1, 0.41544117647058826, 0, 0.5833333333333334, 1,
      0.9166666666666666, 1, 0.7083333333333334, 0, 1, 0.6666666666666666, 0.75, 1,
      0.5, 0.75, 0, 1, 0.25, 1, 0.5130434782608696, 0.5, 0, 0, 1,
      0.4351851851851852, 0.5609756097560976, 0, 1, 0.6153846153846154,
      0.8888888888888888, 1, 0.16666666666666666, 0, 0.5, 0, 1, 1, 1, 1, 0.375, 1,
      1, 1, 0.5, 1, 0.3888888888888889, 0.4166666666666667, 0.5625, 0, 0, 0, 1,
      0.8571428571428571, 1, 1, 0.5454545454545454, 1, 1, 1, 0.8571428571428571, 0,
      0.5806451612903226, 0.5454545454545454, 0.125, 0, 0.7272727272727273, 0.5,
      0.4444444444444444, 1, 0.461538461538461564, 0.6015037593984962, 1, 0.5, 1, 0,
      0, 0, 1, 0.5, 0.9285714285714286, 1, 0, 0.3333333333333333,
      0.47619047619047616, 0, 0.6923076923076923, 1, 0.3333333333333333, 1, 1, 1,
      0.5, 0.5961538461538461, 1, 1, 1, 1, 0, 0.372549019607843,
      0.6206896551724138, 1, 0.7407407407407407, 0.5, 1, 0.8333333333333334,
      0.6519607843137255, 0.5, 1, 0, 0.5235294117647059, 0.4375, 1, 0.875, 0.25,
      0.1, 0.181818181818181823, 1, 0.75, 0, 0, 0, 1, 0.5, 0, 0, 0.6666666666666666,
      0, 0.56, 0.75, 1, 0.25, 0.25, 0, 1, 1, 0, 1, 1, 0.14285714285714285, 0.8, 0.4,
      0.6326530612244898, 0, 0.5714285714285714, 0.6, 1, 0, 1, 0.5,
      0.4387755102040816, 0.6, 1, 1, 0.13333333333333333, 0.6428571428571429, 1, 1,
      1, 1, 0.7407407407407407, 0.3, 0, 0.5454545454545454, 0.3333333333333333,
      0.4819277108433735, 0, 0.16666666666666666, 1, 0.625, 0, 0, 1,
      0.090909090909090912, 0.3333333333333333
    ),
    edges = c(
      2561, 0, 29, 0, 1, 4, 1, 3, 0, 16, 8, 6, 180, 22, 4, 0, 364, 0, 1, 713, 1, 4,
      6, 0, 1, 5, 19, 12, 2, 11, 0, 18, 0, 2, 2, 0, 7, 0, 14, 0, 0, 0, 0, 3, 10, 1,
      226, 0, 21, 15, 11, 1, 17, 0, 1, 4, 3, 2, 1, 9, 0, 1, 1, 1, 118, 2, 0, 0, 5,
      47, 46, 0, 4, 8, 16, 1, 1, 0, 1, 0, 5, 2, 3, 1, 3, 1, 1, 2, 4, 1, 14, 10, 9,
      0, 0, 0, 1, 12, 1, 1, 6, 1, 6, 2, 12, 0, 18, 6, 3, 0, 16, 1, 16, 1, 6, 80, 16,
      3, 1, 0, 0, 0, 13, 1, 13, 4, 0, 2, 10, 0, 18, 4, 1, 1, 2, 2, 2, 62, 1, 2, 11,
      1, 0, 19, 18, 2, 20, 6, 10, 5, 133, 8, 1, 0, 89, 14, 2, 14, 2, 1, 6, 1, 15, 0,
      0, 0, 1, 2, 0, 0, 28, 0, 14, 3, 3, 4, 4, 0, 5, 1, 0, 4, 4, 1, 8, 2, 31, 0, 16,
      9, 1, 0, 1, 5, 258, 3, 7, 4, 4, 9, 1, 2, 1, 10, 20, 3, 0, 84, 1, 40, 0, 2, 1,
      10, 0, 0, 1, 1, 1
    ),
    vertices = c(
      220, 2, 11, 3, 2, 16, 3, 4, 2, 34, 18, 8, 42, 51, 14, 5, 54, 2, 9, 82, 2, 5,
      10, 140, 2, 15, 17, 16, 7, 12, 6, 16, 2, 13, 5, 3, 10, 4, 15, 6, 5, 6, 2, 4,
      15, 2, 49, 2, 12, 16, 13, 2, 14, 2, 2, 7, 4, 3, 3, 8, 4, 2, 5, 2, 33, 5, 2, 6,
      6, 21, 83, 2, 4, 14, 19, 2, 5, 2, 3, 2, 6, 3, 4, 2, 6, 2, 2, 3, 9, 2, 20, 14,
      17, 6, 2, 5, 2, 9, 2, 2, 12, 2, 7, 3, 9, 2, 32, 12, 11, 2, 23, 3, 13, 2, 14,
      26, 10, 7, 2, 3, 11, 2, 14, 3, 15, 5, 2, 7, 22, 5, 27, 5, 4, 2, 3, 3, 5, 54,
      2, 3, 12, 2, 6, 52, 30, 3, 28, 8, 11, 7, 29, 17, 2, 10, 27, 18, 3, 17, 9, 11,
      14, 2, 12, 10, 2, 4, 2, 5, 2, 7, 13, 80, 26, 4, 4, 8, 10, 2, 6, 2, 4, 5, 4, 8,
      7, 6, 50, 2, 29, 8, 2, 3, 2, 11, 56, 6, 8, 5, 31, 9, 2, 3, 2, 11, 28, 7, 2,
      25, 4, 84, 2, 13, 2, 10, 3, 3, 2, 12, 4
    )
  ) |>
    structure(class = "igraphHRG")

  # auto, plain because not small
  expect_output(print(big_hrg), "->")

  expect_output(print(big_hrg, type = "tree"), "- ")
})

Try the igraph package in your browser

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

igraph documentation built on Feb. 12, 2026, 5:08 p.m.