
test_that("check_cap_arg wors", {

  expect_type(check_cap_arg(TRUE), "closure")
  expect_identical(check_cap_arg(FALSE), c(-Inf, Inf))
  expect_type(check_cap_arg("upper"), "closure")
  expect_snapshot_error(check_cap_arg(NA))
  expect_error(
    check_cap_arg(environment()),
    "not an environment"
  )

})

test_that("primitive_line works as axis line", {

  base <- ggplot(mpg, aes(displ, hwy)) +
    geom_blank() +
    theme_test() +
    theme(
      panel.background = element_rect(fill = NA, colour = "grey80"),
      panel.grid.major = element_line(colour = "grey90"),
      panel.border = element_blank(),
      axis.line = element_line()
    )

  p <- base +
    guides(
      x     = primitive_line(),
      x.sec = primitive_line(cap = "both"),
      y     = primitive_line(cap = c(15.0, 25.0, 35.0, 40.0)),
      y.sec = primitive_line(cap = function(breaks, limits) {
        c(min(breaks, na.rm = TRUE), limits[2L])
      })
    )

  vdiffr::expect_doppelganger("primitive_line cartesian", p)

  p <- base +
    coord_radial(start = 0.25 * pi, end = 1.75 * pi, inner.radius = 0.5) +
    guides(
      theta.sec = primitive_line(),
      theta     = primitive_line(cap = "both"),
      r         = primitive_line(cap = c(15.0, 25.0, 35.0, 40.0)),
      r.sec     = primitive_line(cap = function(breaks, limits) {
        c(min(breaks, na.rm = TRUE), limits[2L])
      })
    )

  vdiffr::expect_doppelganger("primitive_line radial", p)

})

test_that("primitive_line works as legend", {

  p <- ggplot(mtcars) +
    aes(
      x = disp, y = mpg,
      colour = hp,
      fill = hp
    ) +
    geom_point() +
    guides(
      colour = primitive_line(),
      fill = primitive_line(position = "bottom")
    )


  vdiffr::expect_doppelganger("primitive_line legend", p)

})
