@@ -381,7 +381,7 @@ public void UsesExpectedCacheKeyFormat()
381381 public void ConstructorWithoutConfigUsesDefaultCacheSettings ( )
382382 {
383383 var service = new DefaultCmabService ( ) ;
384- var cache = GetInternalCache ( service ) ;
384+ var cache = GetInternalCache ( service ) as LruCache < CmabCacheEntry > ;
385385
386386 Assert . IsNotNull ( cache ) ;
387387 Assert . AreEqual ( CmabConstants . DEFAULT_CACHE_SIZE , cache . MaxSizeForTesting ) ;
@@ -393,7 +393,7 @@ public void ConstructorAppliesCustomCacheSize()
393393 {
394394 var config = new CmabConfig ( 42 ) ;
395395 var service = new DefaultCmabService ( config , logger : _logger ) ;
396- var cache = GetInternalCache ( service ) ;
396+ var cache = GetInternalCache ( service ) as LruCache < CmabCacheEntry > ;
397397
398398 Assert . IsNotNull ( cache ) ;
399399 Assert . AreEqual ( 42 , cache . MaxSizeForTesting ) ;
@@ -406,7 +406,7 @@ public void ConstructorAppliesCustomCacheTtl()
406406 var expectedTtl = TimeSpan . FromMinutes ( 3 ) ;
407407 var config = new CmabConfig ( cacheTtl : expectedTtl ) ;
408408 var service = new DefaultCmabService ( config , logger : _logger ) ;
409- var cache = GetInternalCache ( service ) ;
409+ var cache = GetInternalCache ( service ) as LruCache < CmabCacheEntry > ;
410410
411411 Assert . IsNotNull ( cache ) ;
412412 Assert . AreEqual ( CmabConstants . DEFAULT_CACHE_SIZE , cache . MaxSizeForTesting ) ;
@@ -419,7 +419,7 @@ public void ConstructorAppliesCustomCacheSizeAndTtl()
419419 var expectedTtl = TimeSpan . FromSeconds ( 90 ) ;
420420 var config = new CmabConfig ( 5 , expectedTtl ) ;
421421 var service = new DefaultCmabService ( config , logger : _logger ) ;
422- var cache = GetInternalCache ( service ) ;
422+ var cache = GetInternalCache ( service ) as LruCache < CmabCacheEntry > ;
423423
424424 Assert . IsNotNull ( cache ) ;
425425 Assert . AreEqual ( 5 , cache . MaxSizeForTesting ) ;
@@ -438,15 +438,15 @@ public void ConstructorUsesProvidedCustomCacheInstance()
438438 }
439439
440440 [ Test ]
441- public void ConstructorThrowsWhenCustomCacheIsNotLruCache ( )
441+ public void ConstructorAcceptsAnyICacheImplementation ( )
442442 {
443- var config = new CmabConfig ( new FakeCache ( ) ) ;
443+ var fakeCache = new FakeCache ( ) ;
444+ var service = new DefaultCmabService ( new CmabConfig ( fakeCache ) , logger : _logger ) ;
445+ var cache = GetInternalCache ( service ) ;
444446
445- var exception =
446- Assert . Throws < ArgumentException > ( ( ) =>
447- new DefaultCmabService ( config , logger : _logger ) ) ;
448- Assert . AreEqual ( "CustomCache must be of type LruCache<CmabCacheEntry>." ,
449- exception . Message ) ;
447+ Assert . IsNotNull ( cache ) ;
448+ Assert . AreSame ( fakeCache , cache ) ;
449+ Assert . IsInstanceOf < ICache < CmabCacheEntry > > ( cache ) ;
450450 }
451451
452452 [ Test ]
@@ -468,9 +468,9 @@ public void ConstructorUsesProvidedClientInstance()
468468 Assert . AreSame ( mockClient , client ) ;
469469 }
470470
471- private static LruCache < CmabCacheEntry > GetInternalCache ( DefaultCmabService service )
471+ private static ICache < CmabCacheEntry > GetInternalCache ( DefaultCmabService service )
472472 {
473- return Reflection . GetFieldValue < LruCache < CmabCacheEntry > , DefaultCmabService > ( service ,
473+ return Reflection . GetFieldValue < ICache < CmabCacheEntry > , DefaultCmabService > ( service ,
474474 "_cmabCache" ) ;
475475 }
476476
@@ -490,6 +490,8 @@ public CmabCacheEntry Lookup(string key)
490490 }
491491
492492 public void Reset ( ) { }
493+
494+ public void Remove ( string key ) { }
493495 }
494496
495497 private OptimizelyUserContext CreateUserContext ( string userId ,
0 commit comments