tests/testthat/test-xpose-default-plots.R

# Define plots to be tested -----------------------------------------------

# General tests
p1 <- xplot_scatter(xpdb = xpdb_ex_pk, aes(x = .data[["PRED"]], y = .data[["DV"]]), guide = TRUE, type = 'plst',
                    title = '@run-title', subtitle = '@run-subtitle', caption = '@run-caption',
                    tag = '@run-tag', point_color = 'red', line_color = 'blue', 
                    smooth_color = 'green', text_color = 'yellow', quiet = TRUE)
d1 <- xplot_distrib(xpdb = xpdb_ex_pk, aes(x = .data[["PRED"]]), guide = FALSE, type = 'dhr',
                    title = '@run-title', subtitle = '@run-subtitle', caption = '@run-caption',
                    tag = '@run-tag', histogram_color = 'red', density_color = 'blue',
                    rug_color = 'yellow', quiet = TRUE)
q1 <- xplot_qq(xpdb = xpdb_ex_pk, aes(sample = .data[["PRED"]]), guide = TRUE, type = 'p',
               title = '@run-title', subtitle = '@run-subtitle', caption = '@run-caption',
               tag = '@run-tag', point_color = 'red', guide_color = 'blue', quiet = TRUE)

# Facet wrap
p2 <- xplot_scatter(xpdb = xpdb_ex_pk, aes(x = .data[["PRED"]], y = .data[["DV"]]), 
                    facets = c('MED2', 'SEX'), quiet = TRUE)
d2 <- xplot_distrib(xpdb = xpdb_ex_pk, aes(x = .data[["PRED"]]), 
                    facets = c('MED2', 'SEX'), quiet = TRUE, page = 1, ncol = 1, nrow = 1)
q2 <- xplot_qq(xpdb = xpdb_ex_pk, aes(sample = .data[["PRED"]]), 
               facets = c('MED2', 'SEX'), quiet = TRUE, page = 1:2, ncol = 1, nrow = 1)

# Facet grid
p3 <- xplot_scatter(xpdb = xpdb_ex_pk, aes(x = .data[["PRED"]], y = .data[["DV"]]), 
                    facets = MED2~SEX, quiet = TRUE, page = 1, ncol = 1, nrow = 1)
d3 <- xplot_distrib(xpdb = xpdb_ex_pk, aes(x = .data[["PRED"]]), 
                    facets = MED2~SEX, quiet = TRUE)
q3 <- xplot_qq(xpdb = xpdb_ex_pk, aes(sample = .data[["PRED"]]), 
               facets = MED2~SEX, quiet = TRUE, page = 1:2, ncol = 1, nrow = 1)


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

test_that('errors are returned for missing or bad xpdb', {
  expect_error(xplot_scatter())
  expect_error(xplot_distrib())
  expect_error(xplot_qq())
  
  expect_error(xplot_scatter(xpdb = 1), regexp = 'Bad input')
  expect_error(xplot_distrib(xpdb = 1), regexp = 'Bad input')
  expect_error(xplot_qq(xpdb = 1), regexp = 'Bad input')
})

test_that('xpose plot objects are returned with appropriate xpdb', {
  # Check class
  expect_true(is.xpose.plot(p1))
  expect_true(is.xpose.plot(d1))
  expect_true(is.xpose.plot(q1))
  
  # Check metadata
  expect_equal(p1$xpose$fun, 'scatter_plot')
  expect_equal(p1$xpose$summary, xpdb_ex_pk$summary)
  expect_equal(p1$xpose$problem, 1)
  expect_true(p1$xpose$quiet)
  
  expect_equal(d1$xpose$fun, 'density_plot')
  expect_equal(d1$xpose$summary, xpdb_ex_pk$summary)
  expect_equal(d1$xpose$problem, 1)
  expect_true(d1$xpose$quiet)
  
  expect_equal(q1$xpose$fun, 'qq_plot')
  expect_equal(q1$xpose$summary, xpdb_ex_pk$summary)
  expect_equal(q1$xpose$problem, 1)
  expect_true(q1$xpose$quiet)
})

test_that('layers of xplot_scatter', {
  expect_equal(class(p1$layers[[1]]$geom)[1], 'GeomLine')
  expect_equal(class(p1$layers[[2]]$geom)[1], 'GeomPoint')
  expect_equal(class(p1$layers[[3]]$geom)[1], 'GeomText')
  expect_equal(class(p1$layers[[4]]$geom)[1], 'GeomAbline')
  expect_equal(class(p1$layers[[5]]$geom)[1], 'GeomSmooth')
})

test_that('layers of xplot_density', {
  expect_equal(class(d1$layers[[1]]$geom)[1], 'GeomBar')
  expect_equal(class(d1$layers[[2]]$geom)[1], 'GeomDensity')
  expect_equal(class(d1$layers[[3]]$geom)[1], 'GeomRug')
})

test_that('layers of xplot_qq', {
  expect_equal(class(q1$layers[[1]]$geom)[1], 'GeomPoint')
  expect_equal(class(q1$layers[[2]]$geom)[1], 'GeomPath')
})


test_that('faceting works properly', {
  expect_true(is.null(p1$facet$params$facets))
  expect_true(is.null(d1$facet$params$facets))
  expect_true(is.null(q1$facet$params$facets))
  
  expect_true(is.list(p2$facet$params$facets))
  expect_true(is.list(d2$facet$params$facets))
  expect_true(is.list(q2$facet$params$facets))
  
  expect_equal(rlang::quo_name(p3$facet$params$cols[[1]]), 'SEX')
  expect_equal(rlang::quo_name(p3$facet$params$rows[[1]]), 'MED2')
  expect_equal(rlang::quo_name(d3$facet$params$cols[[1]]), 'SEX')
  expect_equal(rlang::quo_name(d3$facet$params$rows[[1]]), 'MED2')
  expect_equal(rlang::quo_name(q3$facet$params$cols[[1]]), 'SEX')
  expect_equal(rlang::quo_name(q3$facet$params$rows[[1]]), 'MED2')
})

test_that('xpose_geom mapping works properly', {
  expect_equal(p1$layers[[2]]$aes_params$colour, 'red')
  expect_equal(p1$layers[[3]]$aes_params$colour, 'yellow')
  expect_equal(p1$layers[[4]]$aes_params$colour, 'grey70')
  expect_equal(p1$layers[[5]]$aes_params$colour, 'green')
  
  expect_equal(d1$layers[[1]]$aes_params$colour, 'red')
  expect_equal(d1$layers[[2]]$aes_params$colour, 'blue')
  expect_equal(d1$layers[[3]]$aes_params$colour, 'yellow')
  
  expect_equal(q1$layers[[1]]$aes_params$colour, 'red')
  expect_equal(q1$layers[[2]]$aes_params$colour, 'blue')
})
guiastrennec/xpose documentation built on Feb. 16, 2024, 8:14 p.m.