tests/testthat/test-remove-axis.R

context("remove axes")

expect_eqNe <- function(...) expect_equal(..., check.environment = FALSE)

p <- ggplot2::ggplot(mtcars, ggplot2::aes(mpg, hp)) + geom_point()

test_that("no argument", {
  hard_res_no_arg_both <- p + ggplot2::theme(
          axis.title = ggplot2::element_blank(),
          axis.line = ggplot2::element_blank(),
          axis.ticks = ggplot2::element_blank(),
          axis.text = ggplot2::element_blank()
        )
  easy_res_no_arg_both <- p + easy_remove_axes()
  expect_eqNe(hard_res_no_arg_both, easy_res_no_arg_both)

  hard_res_no_arg_x <- p + ggplot2::theme(
    axis.title.x = ggplot2::element_blank(),
    axis.line.x = ggplot2::element_blank(),
    axis.ticks.x = ggplot2::element_blank(),
    axis.text.x = ggplot2::element_blank()
  )
  easy_res_no_arg_x <- p + easy_remove_x_axis()
  expect_eqNe(hard_res_no_arg_x, easy_res_no_arg_x)

  hard_res_no_arg_y <- p + ggplot2::theme(
    axis.title.y = ggplot2::element_blank(),
    axis.line.y = ggplot2::element_blank(),
    axis.ticks.y = ggplot2::element_blank(),
    axis.text.y = ggplot2::element_blank()
  )
  easy_res_no_arg_y <- p + easy_remove_y_axis()
  expect_eqNe(hard_res_no_arg_y, easy_res_no_arg_y)

})

test_that("explicit axis", {
  hard_res_x_all <- p + ggplot2::theme(
    axis.title.x = ggplot2::element_blank(),
    axis.line.x = ggplot2::element_blank(),
    axis.ticks.x = ggplot2::element_blank(),
    axis.text.x = ggplot2::element_blank()
  )
  easy_res_x_all <- p + easy_remove_axes("x")
  easy_res_x_all_call <- p + easy_remove_x_axis()
  expect_eqNe(hard_res_x_all, easy_res_x_all)
  expect_eqNe(hard_res_x_all, easy_res_x_all_call)

  hard_res_x_ticks <- p + ggplot2::theme(
    axis.ticks.x = ggplot2::element_blank(),
  )
  easy_res_x_ticks <- p + easy_remove_axes("x", "ticks")
  easy_res_x_ticks_call <- p + easy_remove_x_axis("ticks")
  expect_eqNe(hard_res_x_ticks, easy_res_x_ticks)
  expect_eqNe(hard_res_x_ticks, easy_res_x_ticks_call)

  hard_res_x_title <- p + ggplot2::theme(
    axis.title.x = ggplot2::element_blank(),
  )
  easy_res_x_title <- p + easy_remove_axes("x", "title")
  easy_res_x_title_call <- p + easy_remove_x_axis("title")
  expect_eqNe(hard_res_x_title, easy_res_x_title)
  expect_eqNe(hard_res_x_title, easy_res_x_title_call)

  hard_res_x_line <- p + ggplot2::theme(
    axis.line.x = ggplot2::element_blank(),
  )
  easy_res_x_line <- p + easy_remove_axes("x", "line")
  easy_res_x_line_call <- p + easy_remove_x_axis("line")
  expect_eqNe(hard_res_x_line, easy_res_x_line)
  expect_eqNe(hard_res_x_line, easy_res_x_line_call)

  hard_res_x_text <- p + ggplot2::theme(
    axis.text.x = ggplot2::element_blank(),
  )
  easy_res_x_text <- p + easy_remove_axes("x", "text")
  easy_res_x_text_call <- p + easy_remove_x_axis("text")
  expect_eqNe(hard_res_x_text, easy_res_x_text)
  expect_eqNe(hard_res_x_text, easy_res_x_text_call)

})

test_that("multiple components", {
  hard_res_x_tickstitle <- p + ggplot2::theme(
    axis.title.x = ggplot2::element_blank(),
    axis.ticks.x = ggplot2::element_blank()
  )
  easy_res_x_tickstitle <- p + easy_remove_axes("x", c("ticks", "title"))
  easy_res_x_tickstitle_call <- p + easy_remove_x_axis(c("ticks", "title"))
  expect_eqNe(hard_res_x_tickstitle, easy_res_x_tickstitle)
  expect_eqNe(hard_res_x_tickstitle, easy_res_x_tickstitle_call)

  hard_res_both_tickstitle <- p + ggplot2::theme(
    axis.title = ggplot2::element_blank(),
    axis.ticks = ggplot2::element_blank()
  )
  easy_res_both_noarg_tickstitle <- p + easy_remove_axes(what = c("ticks", "title"))
  easy_res_both_tickstitle <- p + easy_remove_axes("both", c("ticks", "title"))
  easy_res_both_tickstitle_call <- p + easy_remove_axes("both", c("ticks", "title"))
  expect_eqNe(hard_res_both_tickstitle, easy_res_both_tickstitle)
  expect_eqNe(hard_res_x_tickstitle, easy_res_x_tickstitle_call)

})

test_that("teach argument produces working code", {
  easy_res_test_teach <- easy_remove_axes(what = c("ticks", "title"))
  teach_message <- capture_messages({p + easy_remove_axes(what = c("ticks", "title"), teach = TRUE)})[2]
  teach_res <- rlang::eval_bare(rlang::parse_expr(teach_message))
  expect_eqNe(easy_res_test_teach, teach_res)

  easy_res_test_teach <- easy_remove_axes("x", what = c("ticks", "title"))
  teach_message <- capture_messages({p + easy_remove_x_axis(what = c("ticks", "title"), teach = TRUE)})[2]
  teach_res <- rlang::eval_bare(rlang::parse_expr(teach_message))
  expect_eqNe(easy_res_test_teach, teach_res)

  easy_res_test_teach <- easy_remove_axes()
  teach_message <- capture_messages({p + easy_remove_axes(teach = TRUE)})[2]
  teach_res <- rlang::eval_bare(rlang::parse_expr(teach_message))
  expect_eqNe(easy_res_test_teach, teach_res)
})
jonocarroll/ggeasy documentation built on March 17, 2023, 5:54 p.m.