Files
photoprism/pkg/txt/clip_test.go
2025-11-13 08:54:42 +01:00

59 lines
1.4 KiB
Go

package txt
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestClip(t *testing.T) {
t.Run("ASCII", func(t *testing.T) {
assert.Equal(t, "ASCI", Clip("ASCII", 4))
})
t.Run("ShortEnough", func(t *testing.T) {
assert.Equal(t, "I'm ä lazy BRoWN fox!", Clip("I'm ä lazy BRoWN fox!", 128))
})
t.Run("Clip", func(t *testing.T) {
assert.Equal(t, "I'm ä", Clip("I'm ä lazy BRoWN fox!", 6))
assert.Equal(t, "I'm ä l", Clip("I'm ä lazy BRoWN fox!", 7))
})
t.Run("TrimSpace", func(t *testing.T) {
assert.Equal(t, "abc", Clip(" abc ty3q5y4y46uy", 4))
})
t.Run("Empty", func(t *testing.T) {
assert.Equal(t, "", Clip("", -1))
})
}
func BenchmarkClipRunesASCII(b *testing.B) {
s := strings.Repeat("abc def ghi ", 20) // ASCII
b.ReportAllocs()
for b.Loop() {
_ = Clip(s, 50)
}
}
func BenchmarkClipRunesUTF8(b *testing.B) {
s := strings.Repeat("Grüße 世", 20) // non-ASCII runes
b.ReportAllocs()
for b.Loop() {
_ = Clip(s, 50)
}
}
func TestShorten(t *testing.T) {
t.Run("ShortEnough", func(t *testing.T) {
assert.Equal(t, "fox!", Shorten("fox!", 6, "..."))
})
t.Run("CustomSuffix", func(t *testing.T) {
assert.Equal(t, "I'm ä...", Shorten("I'm ä lazy BRoWN fox!", 8, "..."))
})
t.Run("DefaultSuffix", func(t *testing.T) {
assert.Equal(t, "I'm…", Shorten("I'm ä lazy BRoWN fox!", 7, ""))
})
t.Run("Empty", func(t *testing.T) {
assert.Equal(t, "", Shorten("", -1, ""))
})
}