tests/testthat/test-jss2711.R

#R

context("jss2711")

test_that("reproducibility check for recmapGA using a 4x4 checkerboard (Figure 7)", {
  #skip_on_os(os='mac')
  
  seeds <- c(1, 1, 2, 2, 3, 3)
  
  res <- lapply(seeds, function(seed){
    
    set.seed(seed);
    
    res <- recmapGA(V = checkerboard(4), 
                    pmutation = 0.25, 
                    parallel = FALSE)
    res$seed <- seed
    res})
  
  # extract best solution for each run
  solutions <- lapply(res, function(x){x$GA@solution[1,]})
  
  # solution must be identical on the same platform
  expect_identical(solutions[[1]], solutions[[2]])
  expect_identical(solutions[[3]], solutions[[4]])
  expect_identical(solutions[[5]], solutions[[6]])
})

test_that("cross-platform reproducibility check of Figures 11 (Switzerland))", {
  skip_on_cran()
  
  data(jss2711)
  Switzerland.recmap <- recmap(Switzerland$Map)

  expect_equal(Switzerland.recmap[, 'x'], Switzerland$Cartogram[, 'x'], tolerance = 0.001)
  expect_equal(Switzerland.recmap[, 'y'], Switzerland$Cartogram[, 'y'], tolerance = 0.001)
  expect_equal(Switzerland.recmap[, 'dx'], Switzerland$Cartogram[, 'dx'], tolerance = 0.001)
  expect_equal(Switzerland.recmap[, 'dy'], Switzerland$Cartogram[, 'dy'], tolerance = 0.001)
  
})

test_that("cross-platform reproducibility check of Figures 12 (SBB))", {
  
  data(jss2711)
  SBB.recmap <- recmap(SBB$Map)

  expect_equal(SBB.recmap[, 'x'], SBB$Cartogram[, 'x'], tolerance = 0.001)
  expect_equal(SBB.recmap[, 'y'], SBB$Cartogram[, 'y'], tolerance = 0.001)
  expect_equal(SBB.recmap[, 'dx'], SBB$Cartogram[, 'dx'], tolerance = 0.001)
  expect_equal(SBB.recmap[, 'dy'], SBB$Cartogram[, 'dy'], tolerance = 0.001)
  
})

test_that("cross-platform reproducibility check of Figures 13 (UK))", {
 

  data(jss2711)

  # note: map idx is in best solution order
  UK.recmap <- recmap(UK$Map)

  expect_equal(UK.recmap[, 'x'], UK$Cartogram[, 'x'], tolerance = 0.001)
  expect_equal(UK.recmap[, 'y'], UK$Cartogram[, 'y'], tolerance = 0.001)
  expect_equal(UK.recmap[, 'dx'], UK$Cartogram[, 'dx'], tolerance = 0.001)
  expect_equal(UK.recmap[, 'dy'], UK$Cartogram[, 'dy'], tolerance = 0.001)
  
})
cpanse/recmap documentation built on Jan. 3, 2024, 11:45 p.m.