
test_that("get_zip_data", {
  on.exit(try(unlink(tmp, recursive = TRUE)), add = TRUE)
  dir.create(tmp <- tempfile())

  expect_equal(
    get_zip_data_path_recursive(tmp),
    df(paste0(tmp, "/"), normalizePath(tmp), TRUE)
  )
  expect_equal(get_zip_data_path_recursive(tmp), get_zip_data_path(tmp, TRUE))

  foobar <- file.path(tmp, "foobar")
  cat("foobar", file = foobar)

  expect_equal(
    get_zip_data_path_recursive(foobar),
    df(foobar, normalizePath(foobar), FALSE)
  )
  expect_equal(get_zip_data_path_recursive(foobar), get_zip_data_path(foobar, TRUE))

  expect_equal(
    get_zip_data_path_recursive(tmp),
    df(c(paste0(tmp, "/"), file.path(tmp, "foobar")),
       normalizePath(c(tmp, foobar)),
       c(TRUE, FALSE)
       )
  )
  expect_equal(get_zip_data_path_recursive(tmp), get_zip_data_path(tmp, TRUE))

  expect_equal(
    withr::with_dir(tmp, get_zip_data_path_recursive(".")),
    df(c("./", "./foobar"),
       normalizePath(c(tmp, foobar)),
       c(TRUE, FALSE)
       )
  )
  withr::with_dir(tmp,
    expect_equal(get_zip_data_path_recursive("."), get_zip_data_path(".", TRUE))
  )

  dir.create(file.path(tmp, "empty"))
  dir.create(file.path(tmp, "foo"))
  bar <- file.path(tmp, "foo", "bar")
  cat("bar\n", file = bar)

  data <- df(
    c(paste0(tmp, "/"),
      paste0(file.path(tmp, "empty"), "/"),
      paste0(file.path(tmp, "foo"), "/"),
      file.path(tmp, "foo", "bar"),
      file.path(tmp, "foobar")),
    normalizePath(c(
      tmp, file.path(tmp, "empty"), file.path(tmp, "foo"),
      bar, file.path(tmp, "foobar"))),
    c(TRUE, TRUE, TRUE, FALSE, FALSE)
  )
  data <- data[order(data$file), ]
  rownames(data) <- NULL

  data2 <- get_zip_data_path_recursive(tmp)
  data2  <- data2[order(data2$file), ]
  rownames(data2) <- NULL

  expect_equal(data2, data)
  expect_equal(get_zip_data_path(tmp, TRUE), data)

  expect_equal(
    get_zip_data_path(c(foobar, bar), TRUE),
    df(c(foobar, bar),
       normalizePath(c(foobar, bar)),
       c(FALSE, FALSE))
  )

  expect_equal(
    get_zip_data_path(file.path(tmp, "foo"), TRUE),
    df(c(paste0(file.path(tmp, "foo"), "/"), file.path(tmp, "foo", "bar")),
       normalizePath(c(file.path(tmp, "foo"), file.path(tmp, "foo", "bar"))),
       c(TRUE, FALSE)
       )
  )
})

test_that("get_zip_data relative paths", {

  on.exit(try(unlink(tmp, recursive = TRUE)), add = TRUE)
  dir.create(tmp <- tempfile())

  dir.create(file.path(tmp, "foo"))
  dir.create(file.path(tmp, "foo", "bar"))

  withr::with_dir(
    file.path(tmp, "foo"),
    expect_equal(
      get_zip_data_path(file.path("..", "foo"), TRUE),
      df(paste0(c(file.path("..", "foo"), file.path("..", "foo", "bar")), "/"),
         normalizePath(c(file.path(tmp, "foo"), file.path(tmp, "foo", "bar"))),
         c(TRUE, TRUE)
         )
    )
  )
})
