test_that("examples", {
  path <- fs::path("some", "simple", "path", "to", "a", "file.txt")
  expect_equal(
    path_select_components(path, 1:3),
    path("some", "simple", "path")
  )
  expect_equal(
    path_select_components(path, 1:3, "end"),
    path("to", "a", "file.txt")
  )
  expect_equal(
    path_select_components(path, -1, "end"),
    fs::path("some", "simple", "path", "to", "a")
  )
  expect_equal(
    path_select_components(path, 6),
    path("file.txt")
  )
})

test_that("vectorized", {
  path <- c(
    fs::path("some", "simple", "path", "to", "a", "file.txt"),
    fs::path("another", "path", "to", "file2.txt")
  )

  expect_snapshot({
    path_select_components(path, 1:3)
    path_select_components(path, 1:3, "end")
    path_select_components(path, integer())
    unclass(path_select_components(path, integer()))

    path_select_components(fs_path(character()), 1:3)
    path_select_components(fs_path(character()), 1:3, "end")
    class(path_select_components(fs_path(character()), 1:3))
    class(path_select_components(fs_path(character()), 1:3, "end"))
  })
})
