@@ -202,12 +202,44 @@ func testCacheErrorReader(t *testing.T, factory CacheFactory) {
202202
203203func TestCommonFunctions (t * testing.T ) {
204204 t .Run ("NewCacheFromURL" , func (t * testing.T ) {
205- c , err := NewCacheFromURL ("memory://?max_capacity=10" )
205+ // 1. Memory with parameters
206+ c1 , err := NewCacheFromURL ("memory://?max_capacity=100&cleanup_interval=1m" )
206207 assert .NoError (t , err )
207- c .Close ()
208+ assert .NotNil (t , c1 )
209+ _ = c1 .Close ()
208210
209- _ , err = NewCacheFromURL ("invalid://" )
210- assert .Error (t , err )
211+ // 2. Memory with defaults
212+ c2 , err := NewCacheFromURL ("mem://" )
213+ assert .NoError (t , err )
214+ assert .NotNil (t , c2 )
215+ _ = c2 .Close ()
216+
217+ // 3. Redis (basic parsing)
218+ c3 , err := NewCacheFromURL ("redis://localhost:6379/0?prefix=test:" )
219+ if err == nil {
220+ assert .NotNil (t , c3 )
221+ _ = c3 .Close ()
222+ }
223+
224+ // 4. Error cases
225+ testCases := []struct {
226+ name string
227+ url string
228+ }{
229+ {"InvalidURL" , ":%" },
230+ {"UnsupportedScheme" , "unknown://" },
231+ {"InvalidCapacity" , "memory://?max_capacity=-1" },
232+ {"ZeroCapacity" , "memory://?max_capacity=0" },
233+ {"NonIntCapacity" , "memory://?max_capacity=abc" },
234+ {"InvalidInterval" , "memory://?cleanup_interval=invalid" },
235+ }
236+
237+ for _ , tc := range testCases {
238+ t .Run (tc .name , func (t * testing.T ) {
239+ _ , err := NewCacheFromURL (tc .url )
240+ assert .Error (t , err )
241+ })
242+ }
211243 })
212244
213245 t .Run ("ReadToString" , func (t * testing.T ) {
0 commit comments