public void RegionDoesNotGetAddedTwiceWhenUpdatingRegions() { var regionManager = new MockRegionManager(); var control = new MockFrameworkElement(); var regionScopeControl = new ContentControl(); var accessor = new MockRegionManagerAccessor { GetRegionManager = d => d == regionScopeControl ? regionManager : null }; var behavior = new RegionManagerRegistrationBehavior() { RegionManagerAccessor = accessor, Region = new MockPresentationRegion() { Name = "myRegionName" }, HostControl = control }; behavior.Attach(); Assert.IsFalse(regionManager.MockRegionCollection.AddCalled); regionScopeControl.Content = control; accessor.UpdateRegions(); Assert.IsTrue(regionManager.MockRegionCollection.AddCalled); regionManager.MockRegionCollection.AddCalled = false; accessor.UpdateRegions(); Assert.IsFalse(regionManager.MockRegionCollection.AddCalled); }
public void BehaviorDoesNotPreventRegionManagerFromBeingGarbageCollected() { var control = new MockFrameworkElement(); var regionManager = new MockRegionManager(); var regionManagerWeakReference = new WeakReference(regionManager); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName", GetRegionManager = d => regionManager }; var behavior = new RegionManagerRegistrationBehavior() { RegionManagerAccessor = accessor, Region = new MockPresentationRegion(), HostControl = control }; behavior.Attach(); Assert.IsTrue(regionManagerWeakReference.IsAlive); GC.KeepAlive(regionManager); regionManager = null; GC.Collect(); Assert.IsFalse(regionManagerWeakReference.IsAlive); }
public void RegionWillNotGetCreatedTwiceWhenThereAreMoreRegions() { var control1 = new MockFrameworkElement(); var control2 = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => d == control1 ? "Region1" : "Region2" }; var adapter = new MockRegionAdapter(); adapter.Accessor = accessor; var behavior1 = this.GetBehavior(control1, accessor, adapter); var behavior2 = this.GetBehavior(control2, accessor, adapter); behavior1.Attach(); behavior2.Attach(); accessor.UpdateRegions(); Assert.IsTrue(adapter.CreatedRegions.Contains("Region1")); Assert.IsTrue(adapter.CreatedRegions.Contains("Region2")); Assert.AreEqual(1, adapter.CreatedRegions.Count((name) => name == "Region2")); }
public void CanAttachBeforeSettingName() { var control = new ItemsControl(); var regionManager = new MockRegionManager(); var accessor = new MockRegionManagerAccessor { GetRegionManager = d => regionManager }; var region = new MockPresentationRegion() { Name = null }; var behavior = new RegionManagerRegistrationBehavior() { RegionManagerAccessor = accessor, Region = region, HostControl = control }; behavior.Attach(); Assert.IsFalse(regionManager.MockRegionCollection.AddCalled); region.Name = "myRegionName"; Assert.IsTrue(regionManager.MockRegionCollection.AddCalled); Assert.AreSame(region, regionManager.MockRegionCollection.AddArgument); }
public void RegionGetsRemovedFromRegionManagerWhenRemovedFromScope() { var regionManager = new MockRegionManager(); var control = new MockFrameworkElement(); var regionScopeControl = new ContentControl(); var accessor = new MockRegionManagerAccessor { GetRegionManager = d => d == regionScopeControl ? regionManager : null }; var region = new MockPresentationRegion() { Name = "myRegionName" }; var behavior = new RegionManagerRegistrationBehavior() { RegionManagerAccessor = accessor, Region = region, HostControl = control }; behavior.Attach(); regionScopeControl.Content = control; accessor.UpdateRegions(); Assert.IsTrue(regionManager.MockRegionCollection.AddCalled); Assert.AreSame(region, regionManager.MockRegionCollection.AddArgument); regionScopeControl.Content = null; accessor.UpdateRegions(); Assert.IsTrue(regionManager.MockRegionCollection.RemoveCalled); }
private DelayedRegionCreationBehavior GetBehavior(DependencyObject control, MockRegionManagerAccessor accessor, MockRegionAdapter adapter) { var mappings = new RegionAdapterMappings(); mappings.RegisterMapping(control.GetType(), adapter); var behavior = new DelayedRegionCreationBehavior(mappings); behavior.RegionManagerAccessor = accessor; behavior.TargetElement = control; return(behavior); }
public void InvalidControlThrowsDuringAttach() { var control = new DependencyObject(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); }
public void DoesNotFailIfRegionManagerIsNotSet() { var control = new ItemsControl(); var accessor = new MockRegionManagerAccessor(); var behavior = new RegionManagerRegistrationBehavior() { RegionManagerAccessor = accessor, Region = new MockPresentationRegion() { Name = "myRegionWithoutManager" }, HostControl = control }; behavior.Attach(); }
public void BehaviorShouldUnhookEventWhenDetaching() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName", }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); int startingCount = accessor.GetSubscribersCount(); behavior.Detach(); Assert.AreEqual <int>(startingCount - 1, accessor.GetSubscribersCount()); }
public void RegionGetsCreatedWhenAccessingRegions() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); Assert.IsNotNull(RegionManager.GetObservableRegion(control).Value); Assert.IsInstanceOfType(RegionManager.GetObservableRegion(control).Value, typeof(IRegion)); }
public void RegionDoesNotGetCreatedTwiceWhenUpdatingRegions() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); IRegion region = RegionManager.GetObservableRegion(control).Value; accessor.UpdateRegions(); Assert.AreSame(region, RegionManager.GetObservableRegion(control).Value); }
public void BehaviorDoesNotPreventControlFromBeingGarbageCollected() { var control = new MockFrameworkElement(); WeakReference controlWeakReference = new WeakReference(control); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); Assert.IsTrue(controlWeakReference.IsAlive); GC.KeepAlive(control); control = null; GC.Collect(); Assert.IsFalse(controlWeakReference.IsAlive); }
public void ShouldCleanupBehaviorOnceRegionIsCreated() { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); WeakReference behaviorWeakReference = new WeakReference(behavior); behavior.Attach(); accessor.UpdateRegions(); Assert.IsTrue(behaviorWeakReference.IsAlive); GC.KeepAlive(behavior); behavior = null; GC.Collect(); Assert.IsFalse(behaviorWeakReference.IsAlive); }
public void ShouldRegisterRegionIfRegionManagerIsSet() { var control = new ItemsControl(); var regionManager = new MockRegionManager(); var accessor = new MockRegionManagerAccessor { GetRegionManager = d => regionManager }; var region = new MockPresentationRegion() { Name = "myRegionName" }; var behavior = new RegionManagerRegistrationBehavior() { RegionManagerAccessor = accessor, Region = region, HostControl = control }; behavior.Attach(); Assert.IsTrue(regionManager.MockRegionCollection.AddCalled); Assert.AreSame(region, regionManager.MockRegionCollection.AddArgument); }
public void RegionGetsCreatedWhenAccessingRegions() { var control1 = new MockFrameworkElement(); var control2 = new MockFrameworkContentElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior1 = this.GetBehavior(control1, accessor); behavior1.Attach(); var behavior2 = this.GetBehavior(control2, accessor); behavior2.Attach(); accessor.UpdateRegions(); Assert.NotNull(RegionManager.GetObservableRegion(control1).Value); Assert.IsAssignableFrom <IRegion>(RegionManager.GetObservableRegion(control1).Value); Assert.NotNull(RegionManager.GetObservableRegion(control2).Value); Assert.IsAssignableFrom <IRegion>(RegionManager.GetObservableRegion(control2).Value); }
private DelayedRegionCreationBehavior GetBehavior(DependencyObject control, MockRegionManagerAccessor accessor) { return(GetBehavior(control, accessor, new MockRegionAdapter())); }