tests/testthat/test-stat-referent.r

# disjoint data sets with common columns
df1 <- mtcars[seq(6), c("hp", "wt")]
df2 <- mtcars[seq(7, 10), c("hp", "wt")]

test_that("only inherited data influences plotting window", {
  p1 <- ggplot(df1, aes(x = hp/100, y = wt)) +
    coord_equal() +
    geom_point()
  p1r2 <- ggplot(df1, aes(x = hp/100, y = wt)) +
    coord_equal() +
    stat_referent(referent = df2)
  p12 <- ggplot(rbind(df1, df2), aes(x = hp/100, y = wt)) +
    coord_equal() +
    geom_point()
  
  # different inherited data results in different ranges
  expect_false(isTRUE(all.equal(
    layer_scales(p1)$x$range$range,
    layer_scales(p12)$x$range$range
  )))
  expect_false(isTRUE(all.equal(
    layer_scales(p1)$y$range$range,
    layer_scales(p12)$y$range$range
  )))
  # new referent data results in same ranges
  expect_equal(layer_scales(p1)$x$range$range, layer_scales(p1r2)$x$range$range)
  expect_equal(layer_scales(p1)$y$range$range, layer_scales(p1r2)$y$range$range)
})

test_that("reference data does not affect computation in base layer", {
  expect_equal(
    StatReferent$compute_group(df1) |> head(n = 2),
    StatReferent$compute_group(df1, referent = df2) |> head(n = 2)
  )
})

test_that("mapping and referent parameters together yield new plotting data", {
  df2_setup <- StatReferent$setup_params(
    df1,
    list(mapping = aes(x = hp/100, y = wt), referent = df2)
  )$referent
  expect_equal(names(df2_setup), c("x", "y"))
  expect_equal(nrow(df2_setup), 4L)
})
corybrunson/ordr documentation built on Feb. 24, 2025, 6:34 a.m.