Some checks failed
/ Build and Test Library Snapshot (pull_request) Failing after 43s
59 lines
1.7 KiB
Scala
59 lines
1.7 KiB
Scala
package gs.slug.v0
|
|
|
|
class SlugTests extends munit.FunSuite:
|
|
|
|
test("should instantiate valid slugs") {
|
|
('a' to 'z').foreach(c => assertValidSlug(c.toString()))
|
|
('0' to '9').foreach(c => assertValidSlug(c.toString()))
|
|
(1 to 10).foreach(parts => assertValidSlug(segmented(parts)))
|
|
}
|
|
|
|
test("should reject invalid slugs") {
|
|
('A' to 'Z').foreach(c => assertInvalidSlug(c.toString()))
|
|
assertInvalidSlug("-")
|
|
assertInvalidSlug("_")
|
|
assertInvalidSlug("a--z")
|
|
assertInvalidSlug("-a")
|
|
assertInvalidSlug("a-")
|
|
assertInvalidSlug("a_z")
|
|
assertInvalidSlug("a-b-c--d")
|
|
assertInvalidSlug("1--2")
|
|
assertInvalidSlug("!")
|
|
assertInvalidSlug("@")
|
|
assertInvalidSlug("#")
|
|
assertInvalidSlug("$")
|
|
assertInvalidSlug("%")
|
|
assertInvalidSlug("^")
|
|
assertInvalidSlug("&")
|
|
assertInvalidSlug("*")
|
|
assertInvalidSlug("(")
|
|
assertInvalidSlug(")")
|
|
assertInvalidSlug("=")
|
|
assertInvalidSlug("+")
|
|
assertInvalidSlug(";")
|
|
assertInvalidSlug(":")
|
|
assertInvalidSlug(",")
|
|
assertInvalidSlug(".")
|
|
assertInvalidSlug("<")
|
|
assertInvalidSlug(">")
|
|
assertInvalidSlug("/")
|
|
assertInvalidSlug("?")
|
|
assertInvalidSlug("'")
|
|
assertInvalidSlug("\"")
|
|
assertInvalidSlug("[")
|
|
assertInvalidSlug("{")
|
|
assertInvalidSlug("]")
|
|
assertInvalidSlug("}")
|
|
assertInvalidSlug("\\")
|
|
assertInvalidSlug("|")
|
|
}
|
|
|
|
private def assertValidSlug(candidate: String): Unit =
|
|
assert(Slug.validate(candidate).map(_.str()) == Some(candidate))
|
|
|
|
private def assertInvalidSlug(candidate: String): Unit =
|
|
assert(Slug.validate(candidate) == None)
|
|
|
|
private def segmented(parts: Int): String =
|
|
val segment = ('a' to 'z').mkString ++ ('0' to '9').mkString
|
|
(1 to parts).map(_ => segment).mkString("-")
|