test_that("SGM works", { local_rng_version("3.5.0") withr::local_seed(42) vc <- 10 nos <- 3 g1 <- erdos.renyi.game(vc, .5) randperm <- c(1:nos, nos + sample(vc - nos)) g2 <- sample_correlated_gnp(g1, corr = .7, p = g1$p, permutation = randperm) P <- match_vertices(g1[], g2[], m = nos, start = matrix(1 / (vc - nos), vc - nos, vc - nos), iteration = 20 ) expect_that(c(1:nos, P$corr[, 2]), equals(randperm)) expect_that(apply(P$P != 0, 1, which), equals(randperm)) expect_that( apply(P$D != 0, 1, which), equals(randperm[(nos + 1):vc] - nos) ) ## Slightly bigger withr::local_seed(42) vc <- 100 nos <- 10 g1 <- erdos.renyi.game(vc, .1) perm <- c(1:nos, sample(vc - nos) + nos) g2 <- sample_correlated_gnp(g1, corr = 1, p = g1$p, permutation = perm) P <- match_vertices(g1[], g2[], m = nos, start = matrix(1 / (vc - nos), vc - nos, vc - nos), iteration = 20 ) expect_that(P$corr[, 2], equals(perm[(nos + 1):vc])) expect_that(apply(P$P != 0, 1, which), equals(perm)) expect_that( apply(P$D != 0, 1, which), equals(perm[(nos + 1):vc] - nos) ) }) test_that("LSAP does not change input matrix", { x <- matrix(c(5, 1, 4, 3, 5, 2, 2, 4, 4), nrow = 3) solve_LSAP(x) expect_equal(x, matrix(c(5, 1, 4, 3, 5, 2, 2, 4, 4), nrow = 3)) })