コード例 #1
0
 public void IsSingleton_NotSingletonObject_ReturnsFalse()
 {
     SingletonTester
     .IsSingleton(() => new object())
     .Should()
     .BeFalse();
 }
コード例 #2
0
        public void IsSingleton_PassASingleton_ReturnsTrue()
        {
            var isSingleton = SingletonTester.IsSingleton(
                SingletonTesterData.GetSingletonObject);

            Assert.That(isSingleton, Is.EqualTo(true));
        }
コード例 #3
0
 public void IsSingleton_SingletonObject_ReturnsTrue()
 {
     SingletonTester
     .IsSingleton(() => SafeSingleton.Instance)
     .Should()
     .BeTrue();
 }
コード例 #4
0
        public void IsSingleton_PassANonSingleton_ReturnsFalse()
        {
            var isSingleton = SingletonTester.IsSingleton(
                SingletonTesterData.GetNonSingletonObject);

            Assert.That(isSingleton, Is.EqualTo(false));
        }
コード例 #5
0
            public void Test()
            {
                var obj = new object();

                Assert.IsTrue(SingletonTester.IsSingleton(() => obj));
                Assert.IsFalse(SingletonTester.IsSingleton(() => new object()));
            }
コード例 #6
0
        public async Task SingletonConcurrenctCloseOpenTests()
        {
            var createTcs = new TaskCompletionSource <object>();
            var closeTcs  = new TaskCompletionSource <object>();

            var singleton = new SingletonTester(createTcs.Task, closeTcs.Task);

            var creating = singleton.GetOrCreateAsync(TimeSpan.FromDays(1000));
            var closing  = singleton.CloseAsync();

            closeTcs.SetResult(new object());
            await closing;

            createTcs.SetResult(new object());
            await creating;

            try
            {
                await singleton.GetOrCreateAsync(TimeSpan.FromDays(1000));

                Assert.Fail("Singleton should throw an ObjectDisposedException");
            }
            catch (ObjectDisposedException) { }

            var createdObj = GetInternalProperty <object>(singleton, "Value");

            createdObj.Should().BeNull("A closed Singleton shouldn't have a value!");
        }
コード例 #7
0
        public void IsSingletonTest()
        {
            // Arrange

            // Act
            var actual = SingletonTester.IsSingleton(() => SingletonDatabase.Instance);

            // Assert
            Assert.IsTrue(actual);
        }
コード例 #8
0
        public async Task SingletonConcurrentCloseOpenTests()
        {
            var createTcs = new TaskCompletionSource <object>();
            var closeTcs  = new TaskCompletionSource <object>();

            var singleton = new SingletonTester(createTcs.Task, closeTcs.Task);

            var creating = singleton.GetOrCreateAsync(TimeSpan.FromSeconds(1));
            var closing  = singleton.CloseAsync();

            closeTcs.SetResult(new object());
            await closing;

            createTcs.SetResult(new object());
            await creating;

            await Assert.ThrowsAsync <ObjectDisposedException>(() => singleton.GetOrCreateAsync(TimeSpan.FromSeconds(1)));

            var createdObj = GetInternalProperty <object>(singleton, "Value");

            Assert.Null(createdObj);
        }
コード例 #9
0
 static void Main(string[] args)
 {
     Console.WriteLine(SingletonTester.IsSingleton(CreateNonSingletonPerson));
     Console.WriteLine(SingletonTester.IsSingleton(CreateSingletonPerson));
 }
コード例 #10
0
 static void Main(string[] args)
 {
     Console.WriteLine(SingletonTester.IsSingleton(() => { return(new List <string>()); }));
 }