123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package contentdisposition
- import (
- "net/url"
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestStemExt(t *testing.T) {
- // Test cases for stem and ext detection
- tests := []struct {
- name string
- url string
- stem string
- ext string
- fn func(StemExt) (string, string)
- }{
- {
- name: "BasicURL",
- url: "http://example.com/test.jpg",
- stem: "test",
- ext: ".jpg",
- fn: func(se StemExt) (string, string) {
- return se.StemExt()
- },
- },
- {
- name: "EmptyFilename",
- url: "http://example.com/path/to/",
- stem: "",
- ext: "",
- fn: func(se StemExt) (string, string) {
- return se.StemExt()
- },
- },
- {
- name: "EmptyFilenameWithContentType",
- url: "http://example.com/path/to/",
- stem: "",
- ext: ".png",
- fn: func(se StemExt) (string, string) {
- return (&se).SetExtFromContentTypeIfEmpty("image/png").StemExt()
- },
- },
- {
- name: "EmptyFilenameWithContentTypeAndOverride",
- url: "http://example.com/path/to/",
- stem: "example",
- ext: ".png",
- fn: func(se StemExt) (string, string) {
- return (&se).OverrideStem("example").SetExtFromContentTypeIfEmpty("image/png").StemExt()
- },
- },
- {
- name: "EmptyFilenameWithOverride",
- url: "http://example.com/path/to/",
- stem: "example",
- ext: ".jpg",
- fn: func(se StemExt) (string, string) {
- return (&se).OverrideStem("example").OverrideExt(".jpg").StemExt()
- },
- },
- {
- name: "PresentFilenameWithOverride",
- url: "http://example.com/path/to/face",
- stem: "face",
- ext: ".jpg",
- fn: func(se StemExt) (string, string) {
- return (&se).OverrideExt(".jpg").StemExt()
- },
- },
- {
- name: "PresentFilenameWithOverride",
- url: "http://example.com/path/to/123",
- stem: "face",
- ext: ".jpg",
- fn: func(se StemExt) (string, string) {
- return (&se).OverrideStem("face").OverrideExt(".jpg").StemExt()
- },
- },
- {
- name: "EmptyFilenameWithFallback",
- url: "http://example.com/path/to/",
- stem: "image",
- ext: ".png",
- fn: func(se StemExt) (string, string) {
- return (&se).SetExtFromContentTypeIfEmpty("image/png").StemExtWithFallback()
- },
- },
- }
- for _, tc := range tests {
- t.Run(tc.name, func(t *testing.T) {
- u, err := url.Parse(tc.url)
- require.NoError(t, err)
- se := FromURL(u)
- stem, ext := tc.fn(se)
- require.Equal(t, tc.stem, stem)
- require.Equal(t, tc.ext, ext)
- })
- }
- }
- func BenchmarkFromURL(b *testing.B) {
- u, _ := url.Parse("http://example.com/path/to/test.jpg")
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- se := FromURL(u)
- _, _ = se.StemExt()
- }
- }
- func BenchmarkMethodChaining(b *testing.B) {
- u, _ := url.Parse("http://example.com/path/to/")
- b.ResetTimer()
- for i := 0; i < b.N; i++ {
- se := FromURL(u)
- (&se).SetExtFromContentTypeIfEmpty("image/png").OverrideStem("example")
- _, _ = se.StemExtWithFallback()
- }
- }
|