expect_equal(
  mtcars %>% relocate(drat),
  mtcars[, c("drat", colnames(mtcars)[!colnames(mtcars) %in% "drat"])],
  info = "Test default relocate() moves column to the start of the data.frame"
)

expect_equal(
  mtcars %>% relocate(drat, .before = cyl),
  mtcars[, c("mpg", "drat", "cyl", "disp", "hp", "wt", "qsec", "vs", "am", "gear", "carb")],
  info = "Test .before functionality for single variable"
)

expect_equal(
  mtcars %>% relocate(drat, .after = cyl),
  mtcars[, c("mpg", "cyl", "drat", "disp", "hp", "wt", "qsec", "vs", "am", "gear", "carb")],
  info = "Test .after functionality for single variable"
)

expect_equal(
  mtcars %>% relocate(drat, gear, .after = cyl),
  mtcars[, c("mpg", "cyl", "drat", "gear", "disp", "hp", "wt", "qsec", "vs", "am", "carb")],
  info = "Test .after functionality for multiple variables"
)

expect_equal(
  iris %>% relocate(contains("Petal"), .after = Species),
  iris[, c("Sepal.Length", "Sepal.Width", "Species", "Petal.Length", "Petal.Width")],
  info = "Test .after works when .after is the last column"
)

expect_equal(
  mtcars %>% relocate(gear, .before = 1),
  mtcars[, c("gear", "mpg", "cyl", "disp", "hp", "drat", "wt", "qsec", "vs", "am", "carb")],
  info = ".before works with a numeric value"
)

expect_equal(
  mtcars %>% relocate(gear, .after = 1),
  mtcars[, c("mpg", "gear", "cyl", "disp", "hp", "drat", "wt", "qsec", "vs", "am", "carb")],
  info = ".after works with a numeric value"
)

expect_error(
  mtcars %>% relocate(gear, .after = mpg, .before = cyl),
  info = "relocate() fails when .after and .before are both given"
)
