コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }