Reorganize project into standard root layout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
package webterm
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var validSlugPattern = regexp.MustCompile(`^[a-z0-9_-]*$`)
|
||||
|
||||
func TestSlugifyBasic(t *testing.T) {
|
||||
cases := []struct {
|
||||
in, want string
|
||||
}{
|
||||
{"Hello World", "hello-world"},
|
||||
{"My App 2.0!", "my-app-20"},
|
||||
{"---padded---", "padded"},
|
||||
{"", ""},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
got := Slugify(tc.in)
|
||||
if got != tc.want {
|
||||
t.Errorf("Slugify(%q) = %q, want %q", tc.in, got, tc.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func FuzzSlugify(f *testing.F) {
|
||||
f.Add("Hello World")
|
||||
f.Add("My App 2.0!")
|
||||
f.Add("---padded---")
|
||||
f.Add("")
|
||||
f.Add("café résumé")
|
||||
f.Add("日本語テスト")
|
||||
f.Add("a" + string([]byte{0x00, 0x01}) + "b")
|
||||
f.Add(string(make([]byte, 1024)))
|
||||
|
||||
f.Fuzz(func(t *testing.T, input string) {
|
||||
result := Slugify(input)
|
||||
// Result must only contain lowercase alphanumeric and hyphens
|
||||
if !validSlugPattern.MatchString(result) {
|
||||
t.Errorf("Slugify(%q) = %q contains invalid characters", input, result)
|
||||
}
|
||||
// Result must not start or end with hyphen/underscore
|
||||
if len(result) > 0 {
|
||||
if result[0] == '-' || result[0] == '_' {
|
||||
t.Errorf("Slugify(%q) = %q starts with separator", input, result)
|
||||
}
|
||||
if result[len(result)-1] == '-' || result[len(result)-1] == '_' {
|
||||
t.Errorf("Slugify(%q) = %q ends with separator", input, result)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user