context("hungarianAlgorithm") test_that("HungarianAlgorithm provides the correct answer on various inputs", { for (n in c(2,3,10,50)) { for (repetition in 1:3) { # Generate a random vector, and permute it: # we expect the algorithm to retrieve the permutation v <- runif(n, min=-1, max=1) permutation <- sample(1:n) v_p <- v[permutation] # v is reference, v_p is v after permutation # distances[i,j] = distance between i-th component of v # and j-th component of v_p # "in rows : reference; in columns: after permutation" # "permutation" contains order on v to match v_p as closely as possible distances <- sapply(v_p, function(elt) ( abs(elt - v) ) ) assignment <- .hungarianAlgorithm(distances) expect_equal(assignment, permutation) } } })