Scaffold v1.0.0

This commit is contained in:
T. R. Bernstein
2026-04-17 01:08:29 +02:00
commit b49d642dfd
22 changed files with 983 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
import Testing
@testable import EmbedderTool
@Suite("IdentifierSanitizer") struct IdentifierSanitizerTests {
@Test("converts a simple filename with extension to lowerCamelCase")
func simpleFilename() {
#expect(IdentifierSanitizer.propertyName(fromFilename: "welcome.html") == "welcomeHtml")
#expect(IdentifierSanitizer.propertyName(fromFilename: "config.json") == "configJson")
}
@Test("normalizes uppercase and mixed case extensions")
func uppercaseExtension() {
#expect(IdentifierSanitizer.propertyName(fromFilename: "welcome.HTML") == "welcomeHtml")
#expect(IdentifierSanitizer.propertyName(fromFilename: "Data.Yaml") == "dataYaml")
}
@Test("splits snake_case, kebab-case and camelCase into words")
func splitWords() {
#expect(IdentifierSanitizer.propertyName(fromFilename: "user_profile.json") == "userProfileJson")
#expect(IdentifierSanitizer.propertyName(fromFilename: "email-template.eml") == "emailTemplateEml")
#expect(IdentifierSanitizer.propertyName(fromFilename: "fooBar.json") == "fooBarJson")
}
@Test("prefixes an underscore when a filename starts with a digit")
func digitPrefix() {
#expect(IdentifierSanitizer.propertyName(fromFilename: "404.html") == "_404Html")
}
@Test("escapes Swift reserved keywords with backticks")
func reservedKeyword() {
#expect(IdentifierSanitizer.propertyName(fromFilename: "class") == "`class`")
#expect(IdentifierSanitizer.propertyName(fromFilename: "return") == "`return`")
}
@Test("collapses runs of non-alphanumeric characters")
func multipleSeparators() {
#expect(IdentifierSanitizer.propertyName(fromFilename: "user--profile__v2.json") == "userProfileV2Json")
}
@Test("produces UpperCamelCase type names for directories")
func typeNames() {
#expect(IdentifierSanitizer.typeName(from: "emails") == "Emails")
#expect(IdentifierSanitizer.typeName(from: "user-templates") == "UserTemplates")
#expect(IdentifierSanitizer.typeName(from: "api_v2") == "ApiV2")
}
@Test("returns an underscore fallback when the identifier would be empty")
func emptyFallback() {
#expect(IdentifierSanitizer.propertyName(fromFilename: "---") == "_")
#expect(IdentifierSanitizer.typeName(from: "") == "_")
}
}