public void Create() { var result = ExpiringDataStoreFactory.Create(_expirationPolicy, _comparer); Assert.That(result, Is.TypeOf(typeof(ExpiringDataStore <string, object, DateTime, DateTime>))); var expirationPolicy = PrivateInvoke.GetNonPublicField(result, "_expirationPolicy"); Assert.That(expirationPolicy, Is.SameAs(_expirationPolicy)); var innerDataStore = PrivateInvoke.GetNonPublicField(result, "_innerDataStore"); Assert.That(innerDataStore, Is.TypeOf(typeof(SimpleDataStore <string, Tuple <object, DateTime> >))); Assert.That(((SimpleDataStore <string, Tuple <object, DateTime> >)innerDataStore).Comparer, Is.SameAs(_comparer)); }
public void CreateWithLazyLocking() { var policy = MockRepository.GenerateStub <IExpirationPolicy <DoubleCheckedLockingContainer <LazyLockingDataStoreAdapter <string, object> .Wrapper>, DateTime, DateTime> > (); var result = ExpiringDataStoreFactory.CreateWithLazyLocking(policy, _comparer); Assert.That(result, Is.TypeOf(typeof(LazyLockingDataStoreAdapter <string, object>))); var innerDataStore = PrivateInvoke.GetNonPublicField(result, "_innerDataStore"); Assert.That(innerDataStore, Is.TypeOf(typeof(LockingDataStoreDecorator <string, DoubleCheckedLockingContainer <LazyLockingDataStoreAdapter <string, object> .Wrapper> >))); var innerStore = PrivateInvoke.GetNonPublicField(innerDataStore, "_innerStore"); Assert.That(innerStore, Is.TypeOf(typeof(ExpiringDataStore <string, DoubleCheckedLockingContainer <LazyLockingDataStoreAdapter <string, object> .Wrapper>, DateTime, DateTime>))); var expirationPolicy = PrivateInvoke.GetNonPublicField(innerStore, "_expirationPolicy"); Assert.That(expirationPolicy, Is.SameAs(expirationPolicy)); var innerInnerDataStore = PrivateInvoke.GetNonPublicField(innerStore, "_innerDataStore"); Assert.That(innerInnerDataStore, Is.TypeOf(typeof(SimpleDataStore <string, Tuple <DoubleCheckedLockingContainer <LazyLockingDataStoreAdapter <string, object> .Wrapper>, DateTime> >))); Assert.That(((SimpleDataStore <string, Tuple <DoubleCheckedLockingContainer <LazyLockingDataStoreAdapter <string, object> .Wrapper>, DateTime> >)innerInnerDataStore).Comparer, Is.SameAs(_comparer)); }