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 async Task RegionWillNotGetCreatedTwiceWhenThereAreMoreRegions() { await ExecuteOnUIThread(() => { var control1 = new MockFrameworkElement(); var control2 = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => d == control1 ? "Region1" : "Region2" }; var adapter = new MockRegionAdapter() { Accessor = accessor }; var behavior1 = DelayedRegionCreationBehaviorFixture.GetBehavior(control1, accessor, adapter); var behavior2 = DelayedRegionCreationBehaviorFixture.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 IRegion Initialize(object regionTarget, string regionName) { CreatedRegions.Add(regionName); var region = new MockPresentationRegion(); RegionManager.GetObservableRegion(regionTarget as DependencyObject).Value = region; // Fire update regions again. This also happens if a region is created and added to the regionmanager if (this.Accessor != null) { Accessor.UpdateRegions(); } return(region); }
public async Task RegionDoesNotGetCreatedTwiceWhenUpdatingRegions() { await ExecuteOnUIThread(() => { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = DelayedRegionCreationBehaviorFixture.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); IRegion region = RegionManager.GetObservableRegion(control).Value; accessor.UpdateRegions(); Assert.AreSame(region, RegionManager.GetObservableRegion(control).Value); }); }
public async Task RegionGetsCreatedWhenAccessingRegions() { await ExecuteOnUIThread(() => { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = DelayedRegionCreationBehaviorFixture.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); Assert.IsNotNull(RegionManager.GetObservableRegion(control).Value); Assert.IsInstanceOfType(RegionManager.GetObservableRegion(control).Value, typeof(IRegion)); }); }
public async Task ShouldCleanupBehaviorOnceRegionIsCreated() { await ExecuteOnUIThread(() => { var control = new MockFrameworkElement(); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = DelayedRegionCreationBehaviorFixture.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 async Task BehaviorDoesNotPreventControlFromBeingGarbageCollectedWhenRegionWasCreated() { await ExecuteOnUIThread(() => { var control = new MockFrameworkElement(); WeakReference controlWeakReference = new WeakReference(control); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = DelayedRegionCreationBehaviorFixture.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); Assert.IsTrue(controlWeakReference.IsAlive); GC.KeepAlive(control); control = null; GC.Collect(); Assert.IsFalse(controlWeakReference.IsAlive); }); }
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 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 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 BehaviorDoesNotPreventControlFromBeingGarbageCollectedWhenRegionWasCreated() { var control = new MockFrameworkElement(); WeakReference controlWeakReference = new WeakReference(control); var accessor = new MockRegionManagerAccessor { GetRegionName = d => "myRegionName" }; var behavior = this.GetBehavior(control, accessor); behavior.Attach(); accessor.UpdateRegions(); Assert.IsTrue(controlWeakReference.IsAlive); GC.KeepAlive(control); control = null; GC.Collect(); Assert.IsFalse(controlWeakReference.IsAlive); }