# Tests for gather_variables
#
# Author: mjskay
###############################################################################

library(dplyr)
library(tidyr)




test_that("gather_variables works on the results of tidy_draws", {
  data(RankCorr, package = "ggdist")

  ref = RankCorr %>%
    tidy_draws() %>%
    gather(.variable, .value, -.chain, -.iteration, -.draw) %>%
    group_by_at(".variable", .add = TRUE)

  result = RankCorr %>%
    tidy_draws() %>%
    gather_variables()

  expect_equal(result, ref)
  expect_equal(group_vars(result), group_vars(ref))
})


test_that("gather_variables works on the results of spread_draws with multiple variables and dimensions", {
  data(RankCorr, package = "ggdist")

  ref = RankCorr %>%
    spread_draws(b[i, v], tau[i]) %>%
    gather(.variable, .value, -.chain, -.iteration, -.draw, -i, -v) %>%
    group_by(i, v, .variable)

  result = RankCorr %>%
    spread_draws(b[i, v], tau[i]) %>%
    gather_variables()

  expect_equal(result, ref)
  expect_equal(group_vars(result), group_vars(ref))
})
