dwww Home | Show directory contents | Find package

context("shortest_paths")

test_that("shortest_paths works", {

  library(igraph)

  edges <- matrix(c("s", "a", 2,
                    "s", "b", 4,
                    "a", "t", 4,
                    "b", "t", 2,
                    "a", "1", 1,
                    "a", "2", 1,
                    "a", "3", 2,
                    "1", "b", 1,
                    "2", "b", 2,
                    "3", "b", 1),
                  byrow=TRUE, ncol=3,
                  dimnames=list(NULL, c("from", "to", "weight")))
  edges <- as.data.frame(edges)
  edges[[3]] <- as.numeric(as.character(edges[[3]]))

  g <- graph_from_data_frame(as.data.frame(edges))

  all1 <- all_shortest_paths(g, "s", "t", weights=NA)$res
  all2 <- all_shortest_paths(g, "s", "t")$res

  s1 <- shortest_paths(g, "s", "t", weights=NA)
  s2 <- get.shortest.paths(g, "s", "t")

  expect_true(s1$vpath %in% all1) 
  expect_true(s2$vpath %in% all2)

})

test_that("shortest_paths can handle negative weights", {
  g <- make_tree(7)
  E(g)$weight <- -1
  sps <- shortest_paths(g, 2)$vpath

  expect_true(length(sps) == 7)
  expect_equivalent(as.vector(sps[[1]]), integer(0))
  expect_equivalent(as.vector(sps[[2]]), c(2))
  expect_equivalent(as.vector(sps[[3]]), integer(0))
  expect_equivalent(as.vector(sps[[4]]), c(2, 4))
  expect_equivalent(as.vector(sps[[5]]), c(2, 5))
  expect_equivalent(as.vector(sps[[6]]), integer(0))
  expect_equivalent(as.vector(sps[[7]]), integer(0))
})

Generated by dwww version 1.15 on Sun Jun 16 11:35:25 CEST 2024.