tests/testthat/test-getMadratInfo.R

test_that("getMadratInfo works without error", {
  localConfig(globalenv = FALSE, .verbose = FALSE)
  expect_message(a <- getMadratInfo(packages = "madrat", cutoff = -1, extended = TRUE), "passed")
})

test_that("getMadratInfo properly detects problems", {
  calcBla <- function() {
    type <- "TauTotal"
    calcOutput(type)
  }
  globalassign("calcBla")
  expect_warning(a <- getMadratInfo(packages = "madrat", cutoff = 1),
                 "Following functions contain read or calc statements which could not be identified: .* calcBla")
  rm("calcBla", envir = .GlobalEnv)

  expect_silent(a <- suppressMessages(getMadratInfo(packages = "madrat")))
  toolBla <- function() {
    return(calcOutput("TauTotal"))
  }
  globalassign("toolBla")
  expect_warning(a <- getMadratInfo(packages = "madrat"), "Some tool functions contain read or calc")

  calcBla2 <- function() {
    calcOutput("UnknownType")
  }
  globalassign("calcBla2")
  expect_warning(a <- getMadratInfo(packages = "madrat"),
      "Following functions could not be found in the scope of packages to be checked.: .* calcUnknownType->calcBla2")
})


test_that("bidirectional package connections are correctly detected", {
  g <- data.frame(from = c("readData1", "calcExample", "calcExample"),
                  to = c("calcExample", "calcExample2", "calcExample3"),
                  from_package = c("pkgA", "pkgB", "pkgB"),
                  to_package = c("pkgB", "pkgA", "pkgA"),
                  stringsAsFactors = FALSE)

  attr(g, "fpool") <- data.frame(type = c("Data1", "Example", "Example2", "Example3"),
                                 package = c("pkgA", "pkgB", "pkgA", "pkgA"),
                                 call = c("pkgA:::readData1", "pkgB:::calcExample",
                                          "pkgA:::calcExample2", "pkgA:::calcExample3"),
                                 fname = c("readData1", "calcExample", "calcExample2", "calcExample2"),
                                 stringsAsFactors = FALSE)

  expect_warning(a <- getMadratInfo(g), "Bidirectional package dependencies detected")
  expect_warning(b <- getMadratInfo(g, cutoff = 1), "Bidirectional package dependencies detected")
  expect_identical(a, b)
})
pik-piam/madrat documentation built on May 10, 2024, 4:37 a.m.