test_that("generated application names do not exceed maximum length", {
  title <- "Good heavens, this title is simply enormous! I can't imagine why anyone would use such a cumbersome moniker."
  name <- generateAppName(title)
  expect_lt(nchar(name), 65)
})

test_that("empty titles are rejected", {
  title <- ""
  expect_error(generateAppName(title))
})

test_that("path is used to generate valid title if title isn't specified", {
  title <- NULL
  path <- "shiny-app-in-subdir"
  name <- generateAppName(title, path)
  expect_gt(nchar(name), 5)
})

test_that("invalid characters are removed from titles", {
  title <- "Free!* (* = With $5 Donation)"
  name <- generateAppName(title)
  expect_false(grepl("[!*=$]", name))
})

test_that("valid characters are not removed from titles", {
  title <- "inexpensive_kittens-5"
  name <- generateAppName(title)
  expect_identical(title, name)
})
