public void When_RemoveTemplate() { _mockProvider.CanUseMemoryManager = false; var TemplateCreated = 0; List <TemplatePoolAwareControl> _created = new List <TemplatePoolAwareControl>(); var dataTemplate = new DataTemplate(() => { TemplateCreated++; var b = new TemplatePoolAwareControl(); _created.Add(b); return(b); }); var SUT = new ContentControl() { ContentTemplate = dataTemplate }; var root = new Grid(); root.ForceLoaded(); root.Children.Add(SUT); Assert.AreEqual(1, TemplateCreated); SUT.ContentTemplate = null; Assert.AreEqual(1, TemplateCreated); Assert.AreEqual(1, _created.Count); Assert.AreEqual(1, _created[0].TemplateRecycled); }
public void When_RemoveTemplate_And_OutOfMemory() { _mockProvider.CanUseMemoryManager = true; _mockProvider.AppMemoryUsageLimit = 100; List <TemplatePoolAwareControl> _created = new(); var dataTemplate = new DataTemplate(() => { var b = new TemplatePoolAwareControl(); _created.Add(b); return(b); }); var SUT = new ContentControl() { ContentTemplate = dataTemplate }; var root = new Grid(); root.ForceLoaded(); root.Children.Add(SUT); Assert.AreEqual(1, _created.Count); _mockProvider.AppMemoryUsage = 81; SUT.ContentTemplate = null; Assert.AreEqual(1, _created.Count); Assert.AreEqual(0, _created[0].TemplateRecycled); Assert.IsNull(SUT.ContentTemplateRoot); _mockProvider.Now = TimeSpan.FromMinutes(2); FrameworkTemplatePool.Instance.Scavenge(false); SUT.ContentTemplate = dataTemplate; Assert.AreEqual(2, _created.Count); Assert.AreEqual(0, _created[0].TemplateRecycled); Assert.IsNotNull(SUT.ContentTemplateRoot); _mockProvider.AppMemoryUsage = 79; SUT.ContentTemplate = null; Assert.AreEqual(2, _created.Count); Assert.AreEqual(0, _created[0].TemplateRecycled); Assert.AreEqual(1, _created[1].TemplateRecycled); Assert.IsNull(SUT.ContentTemplateRoot); }