public void ShouldSupportMultiActivation() { // Given using var scope1 = new Scope(new LockObject(), 1); // When using var token1 = scope1.Activate(); using var token2 = scope1.Activate(); using var token3 = scope1.Activate(); // Then Scope.Current.ShouldBe(scope1); }
public void ShouldCreateSingleInstance() { // Given var lifetime = new ScopeSingletonLifetime(); var resolver = lifetime.Compile(() => new object()); // When object instance11; object instance12; object instance21; object instance22; using (var scope1 = new Scope(new LockObject())) using (var scope2 = new Scope(new LockObject())) { using (scope1.Activate()) { instance11 = resolver(Mock.Of <IContainer>()); using (scope2.Activate()) { instance21 = resolver(Mock.Of <IContainer>()); } instance12 = resolver(Mock.Of <IContainer>()); } using (scope2.Activate()) { instance22 = resolver(Mock.Of <IContainer>()); } } // Then instance11.ShouldBe(instance12); instance21.ShouldBe(instance22); instance11.ShouldNotBe(instance22); }
public void ActiveScopeShouldAccessibleViaCurrentProperty() { // Given using var scope1 = new Scope(new LockObject()); using var scope2 = new Scope(new LockObject()); // When using var token1 = scope1.Activate(); using var token2 = scope2.Activate(); // Then Scope.Current.ShouldBe(scope2); token2.Dispose(); Scope.Current.ShouldBe(scope1); token1.Dispose(); }