public void Singleton_GetInstance_ShouldBeDefined() { // Setup // Perform action 'Singleton' ObjectWithIdentifier instance = ObjectWithIdentifier .Instance; // Assert that 'ShouldBeDefined' = 'GetInstance' Assert.NotNull(instance); }
public void Singleton_GetInstanceMultipleTimes_ShouldReturnSameInstance() { // Setup // Perform action 'Singleton' ObjectWithIdentifier instance = ObjectWithIdentifier .Instance; ObjectWithIdentifier instance2 = ObjectWithIdentifier .Instance; // Assert that 'ShouldReturnSameInstance' = 'GetInstanceMultipleTimes' Assert.NotNull(instance); Assert.NotNull(instance2); Assert.Equal(instance.Identifier, instance2.Identifier); }
public async Task Singleton_GetInstanceMultipleTimesAcrossThreads_ShouldReturnSameInstance() { // Setup ObjectWithIdentifier instance = null; ObjectWithIdentifier instance2 = null; // Perform action 'Singleton' var task = Task.Run(() => instance = ObjectWithIdentifier.Instance); var task2 = Task.Run(() => instance2 = ObjectWithIdentifier.Instance); await Task.WhenAll(task, task2); // Assert that 'ShouldReturnSameInstance' = 'GetInstanceMultipleTimesAcrossThreads' Assert.NotNull(instance); Assert.NotNull(instance2); Assert.Equal(instance.Identifier, instance2.Identifier); }