public async Task AdapterDoesNotPreventRegionFromBeingGarbageCollected()
        {
            await ExecuteOnUIThread(() =>
                {
                    var selector = new ListBox();
                    object model = new object();
                    IRegionAdapter adapter = new SelectorRegionAdapter(null);

                    var region = adapter.Initialize(selector, "Region1");
                    region.Add(model);

                    WeakReference regionWeakReference = new WeakReference(region);
                    WeakReference controlWeakReference = new WeakReference(selector);
                    Assert.IsTrue(regionWeakReference.IsAlive);
                    Assert.IsTrue(controlWeakReference.IsAlive);

                    region = null;
                    selector = null;
                    GC.Collect();
                    GC.Collect();

                    Assert.IsFalse(regionWeakReference.IsAlive);
                    Assert.IsFalse(controlWeakReference.IsAlive);
                });
        }
        public void DeactivatingTheSelectedViewShouldUpdateTheSelectedItem()
        {
            var selector = new ListBox();
            var view1 = new object();
            IRegionAdapter adapter = new SelectorRegionAdapter(null);
            var region = adapter.Initialize(selector, "Region1");
            region.Add(view1);

            region.Activate(view1);

            Assert.AreEqual(view1, selector.SelectedItem);

            region.Deactivate(view1);

            Assert.AreNotEqual(view1, selector.SelectedItem);
        }
示例#3
0
        public void DeactivatingTheSelectedViewShouldUpdateTheSelectedItem()
        {
            var            selector = new ListBox();
            var            view1    = new object();
            IRegionAdapter adapter  = new SelectorRegionAdapter(null);
            var            region   = adapter.Initialize(selector, "Region1");

            region.Add(view1);

            region.Activate(view1);

            Assert.Equal(view1, selector.SelectedItem);

            region.Deactivate(view1);

            Assert.NotEqual(view1, selector.SelectedItem);
        }
        public void DeactivatingTheSelectedViewShouldUpdateTheSelectedItem()
        {
            TabControl     tabControl = new TabControl();
            var            view1      = new object();
            IRegionAdapter adapter    = new SelectorRegionAdapter();
            var            region     = adapter.Initialize(tabControl);

            region.Add(view1);

            region.Activate(view1);

            Assert.AreEqual(view1, tabControl.SelectedItem);

            region.Deactivate(view1);

            Assert.AreNotEqual(view1, tabControl.SelectedItem);
        }
        public void RegionDoesNotGetUpdatedIfTheItemsSourceWasManuallyChanged()
        {
            TabControl     tabControl = new TabControl();
            object         model      = new object();
            IRegionAdapter adapter    = new SelectorRegionAdapter();

            var region = adapter.Initialize(tabControl);

            region.Add(model);

            tabControl.ItemsSource = null;
            tabControl.Items.Add(model);
            Assert.IsFalse(region.ActiveViews.Contains(model));

            tabControl.SelectedItem = model;

            Assert.IsFalse(region.ActiveViews.Contains(model), "The region should not be updated");
        }
        public void AdapterDoesNotPreventControlFromBeingGarbageCollectedWhenSettingItemsSourceToNull()
        {
            TabControl     tabControl = new TabControl();
            object         model      = new object();
            IRegionAdapter adapter    = new SelectorRegionAdapter();

            var region = adapter.Initialize(tabControl);

            region.Add(model);

            WeakReference controlWeakReference = new WeakReference(tabControl);

            Assert.IsTrue(controlWeakReference.IsAlive);

            tabControl.ItemsSource = null;
            tabControl             = null;
            GC.Collect();
            GC.Collect();

            Assert.IsFalse(controlWeakReference.IsAlive);
        }
示例#7
0
        public void AdapterDoesNotPreventRegionFromBeingGarbageCollected()
        {
            var            selector = new ListBox();
            object         model    = new object();
            IRegionAdapter adapter  = new SelectorRegionAdapter(null);

            var region = adapter.Initialize(selector, "Region1");

            region.Add(model);

            WeakReference regionWeakReference  = new WeakReference(region);
            WeakReference controlWeakReference = new WeakReference(selector);

            Assert.True(regionWeakReference.IsAlive);
            Assert.True(controlWeakReference.IsAlive);

            region   = null;
            selector = null;
            GC.Collect();
            GC.Collect();

            Assert.False(regionWeakReference.IsAlive);
            Assert.False(controlWeakReference.IsAlive);
        }
        public void AdapterSynchronizesSelectorSelectionWithRegion()
        {
            TabControl     tabControl = new TabControl();
            object         model1     = new object();
            object         model2     = new object();
            IRegionAdapter adapter    = new SelectorRegionAdapter();

            var region = adapter.Initialize(tabControl);

            region.Add(model1);
            region.Add(model2);

            Assert.IsFalse(region.ActiveViews.Contains(model2));

            tabControl.SelectedItem = model2;

            Assert.IsTrue(region.ActiveViews.Contains(model2));
            Assert.IsFalse(region.ActiveViews.Contains(model1));

            tabControl.SelectedItem = model1;

            Assert.IsTrue(region.ActiveViews.Contains(model1));
            Assert.IsFalse(region.ActiveViews.Contains(model2));
        }
        public void DeactivatingTheSelectedViewShouldUpdateTheSelectedItem()
        {
            TabControl tabControl = new TabControl();
            var view1 = new object();
            IRegionAdapter adapter = new SelectorRegionAdapter();
            var region = adapter.Initialize(tabControl);
            region.Add(view1);

            region.Activate(view1);

            Assert.AreEqual(view1, tabControl.SelectedItem);

            region.Deactivate(view1);

            Assert.AreNotEqual(view1, tabControl.SelectedItem);
        }
        public void RegionDoesNotGetUpdatedIfTheItemsSourceWasManuallyChanged()
        {
            TabControl tabControl = new TabControl();
            object model = new object();
            IRegionAdapter adapter = new SelectorRegionAdapter();

            var region = adapter.Initialize(tabControl);
            region.Add(model);

            tabControl.ItemsSource = null;
            tabControl.Items.Add(model);
            Assert.IsFalse(region.ActiveViews.Contains(model));

            tabControl.SelectedItem = model;

            Assert.IsFalse(region.ActiveViews.Contains(model), "The region should not be updated");
        }
        public void AdapterDoesNotPreventControlFromBeingGarbageCollectedWhenSettingItemsSourceToNull()
        {
            TabControl tabControl = new TabControl();
            object model = new object();
            IRegionAdapter adapter = new SelectorRegionAdapter();

            var region = adapter.Initialize(tabControl);
            region.Add(model);

            WeakReference controlWeakReference = new WeakReference(tabControl);
            Assert.IsTrue(controlWeakReference.IsAlive);

            tabControl.ItemsSource = null;
            tabControl = null;
            GC.Collect();
            GC.Collect();

            Assert.IsFalse(controlWeakReference.IsAlive);
        }
        public void AdapterSynchronizesSelectorSelectionWithRegion()
        {
            TabControl tabControl = new TabControl();
            object model1 = new object();
            object model2 = new object();
            IRegionAdapter adapter = new SelectorRegionAdapter();

            var region = adapter.Initialize(tabControl);
            region.Add(model1);
            region.Add(model2);

            Assert.IsFalse(region.ActiveViews.Contains(model2));

            tabControl.SelectedItem = model2;

            Assert.IsTrue(region.ActiveViews.Contains(model2));
            Assert.IsFalse(region.ActiveViews.Contains(model1));

            tabControl.SelectedItem = model1;

            Assert.IsTrue(region.ActiveViews.Contains(model1));
            Assert.IsFalse(region.ActiveViews.Contains(model2));
        }
        public async Task ActivatingTheViewShouldUpdateTheSelectedItem()
        {
            await ExecuteOnUIThread(() =>
                {
                    var selector = new ListBox();
                    var view1 = new object();
                    var view2 = new object();

                    IRegionAdapter adapter = new SelectorRegionAdapter(null);

                    var region = adapter.Initialize(selector, "Region1");
                    region.Add(view1);
                    region.Add(view2);

                    Assert.AreNotEqual(view1, selector.SelectedItem);

                    region.Activate(view1);

                    Assert.AreEqual(view1, selector.SelectedItem);

                    region.Activate(view2);

                    Assert.AreEqual(view2, selector.SelectedItem);
                });
        }