コード例 #1
0
        public void UsesSafeContext_WithGivenKey()
        {
            object instance = new object();
            SafeContextSingleton <object> singleton = new SafeContextSingleton <object> ("test", delegate { return(null); });

            singleton.SetCurrent(instance);

            Assert.That(SafeContext.Instance.GetData("test"), Is.SameAs(instance));
        }
コード例 #2
0
        public void HasCurrent()
        {
            SafeContextSingleton <object> singleton = new SafeContextSingleton <object> ("test", delegate { return(new object()); });

            Assert.That(singleton.HasCurrent, Is.False);
            Dev.Null = singleton.Current;
            Assert.That(singleton.HasCurrent, Is.True);
            singleton.SetCurrent(null);
            Assert.That(singleton.HasCurrent, Is.False);
        }
コード例 #3
0
        public void SetCurrent()
        {
            object instance = new object();
            SafeContextSingleton <object> singleton = new SafeContextSingleton <object> ("test", delegate { return(new object()); });

            Assert.That(singleton.Current, Is.Not.SameAs(instance));
            singleton.SetCurrent(instance);
            Assert.That(singleton.Current, Is.SameAs(instance));
            singleton.SetCurrent(new object());
            Assert.That(singleton.Current, Is.Not.SameAs(instance));
        }
コード例 #4
0
        protected RevisionProviderBase()
        {
            //RM-5640: Rewrite with tests
            // Inject an invalidation object where implementations can register for an invalidation of all cached revisions.
            // While this is a potential memory leak, the revision providers are used with singleton-semantics anyway when instantiated via IoC,
            // so this shouldn't be an issue.

            _cachedRevisions = new SafeContextSingleton <SimpleDataStore <TRevisionKey, GuidRevisionValue> > (
                SafeContextKeys.SecurityManagerRevision + "_" + Guid.NewGuid().ToString(),
                () => new SimpleDataStore <TRevisionKey, GuidRevisionValue>());
        }
コード例 #5
0
        public void DifferentSingletons()
        {
            object instance1 = new object();
            object instance2 = new object();

            SafeContextSingleton <object> singleton1 = new SafeContextSingleton <object> ("test1", delegate { return(instance1); });
            SafeContextSingleton <object> singleton2 = new SafeContextSingleton <object> ("test2", delegate { return(instance2); });

            Assert.That(singleton1.Current, Is.SameAs(instance1));
            Assert.That(singleton2.Current, Is.SameAs(instance2));
            Assert.That(singleton1.Current, Is.SameAs(instance1));
            Assert.That(singleton2.Current, Is.SameAs(instance2));
        }
コード例 #6
0
        public void SingleInstance_CreatedOnDemand()
        {
            object instance = null;
            SafeContextSingleton <object> singleton = new SafeContextSingleton <object> ("test", delegate { return(instance = new object()); });

            Assert.That(instance, Is.Null);
            object current = singleton.Current;

            Assert.That(current, Is.Not.Null);
            Assert.That(instance, Is.Not.Null);
            Assert.That(current, Is.SameAs(instance));

            Assert.That(singleton.Current, Is.SameAs(current));
            Assert.That(singleton.Current, Is.SameAs(current));
            Assert.That(singleton.Current, Is.SameAs(current));
        }