tests/testthat/test-xpose_save.R

# Inspired from ggplot2 ggsave tests
# Define plots to be tested -----------------------------------------------

plot <- dv_vs_ipred(xpdb = xpdb_ex_pk, type = "p", quiet = TRUE)

plot_multiple <- dv_vs_ipred(xpdb = xpdb_ex_pk, type = "p", quiet = TRUE, facets = c('SEX', 'MED1'), ncol = 1, nrow = 1, page = 1:2)

# Tests start here --------------------------------------------------------

test_that('errors are returned for bad plot input', {
  expect_error(xpose_save(plot = NULL), regexp = 'Argument `plot` required')
})

test_that('errors are returned for bad filename input', {
  local_edition(3)
  local_reproducible_output()

  paths_1 <- file.path(tempdir(), paste0('test_plot', c('.abcd', '.bcde', '', '.pdf', '.png')))
  on.exit(unlink(paths_1), add = TRUE)

  # Missing filename
  expect_snapshot(xpose_save(plot = plot), error = TRUE)

  # Unrecognized extension
  expect_snapshot(xpose_save(plot = plot, file = paths_1[1]), error = TRUE)

  # Missing extension
  expect_snapshot(xpose_save(plot = plot, file = paths_1[3]), error = TRUE)

  # Length filename > 1
  # Note: No longer an error
  # expect_warning(xpose_save(plot = plot, file = paths_1[4:5]),
  #              regexp = 'Only the first')
})


test_that('common graphical device work properly', {
  paths_2 <- file.path(tempdir(), paste0('test_plot.', c('pdf', 'jpeg', 'png')))
  on.exit(unlink(paths_2))
  
  expect_false(any(file.exists(paths_2)))
  
  # Test pdf
  xpose_save(plot = plot, file = paths_2[1])
  expect_true(file.exists(paths_2[1]))
  
  # Test jpeg
  if (capabilities('jpeg')) {
    xpose_save(plot = plot, file = paths_2[2], dpi = 20) # jpeg
    expect_true(file.exists(paths_2[2]))
  }
  
  # Test png
  if (capabilities('png')) {
    xpose_save(plot = plot, file = paths_2[3], dpi = 20) # png
    expect_true(file.exists(paths_2[3]))
  }
})

test_that('template filenames and auto file extension work properly', {
  paths_3 <- file.path(tempdir(), 'run001_dv_vs_ipred.pdf') 
  on.exit(unlink(paths_3))
  
  expect_false(file.exists(paths_3))
  
  xpose_save(plot = plot, 
             file = '@run_@plotfun',
             dir = tempdir(),
             device = 'pdf')
  expect_true(file.exists(paths_3))
})

test_that('mutlitple pages are properly saved', {
  paths_4 <- file.path(tempdir(), 'run001_dv_vs_ipred.pdf') 
  on.exit(unlink(paths_4))
  
  expect_false(file.exists(paths_4))
  
  xpose_save(plot = plot_multiple, 
             file = '@run_@plotfun',
             dir = tempdir(),
             device = 'pdf')
  expect_true(file.exists(paths_4))
})
UUPharmacometrics/xpose documentation built on Feb. 4, 2024, 7:21 a.m.