Index: test/Common/DelftTools.Tests/Controls/Swf/TreeViewControls/TreeViewNodePresenterBaseTest.cs =================================================================== diff -u -r046989902e6c0c0f6f8cc821aaf097c377d7dccb -r6ddaa0a0f90fb8a5033b54988fe4fbe2dca6232b --- test/Common/DelftTools.Tests/Controls/Swf/TreeViewControls/TreeViewNodePresenterBaseTest.cs (.../TreeViewNodePresenterBaseTest.cs) (revision 046989902e6c0c0f6f8cc821aaf097c377d7dccb) +++ test/Common/DelftTools.Tests/Controls/Swf/TreeViewControls/TreeViewNodePresenterBaseTest.cs (.../TreeViewNodePresenterBaseTest.cs) (revision 6ddaa0a0f90fb8a5033b54988fe4fbe2dca6232b) @@ -3,11 +3,9 @@ using System.Linq; using DelftTools.Controls; using DelftTools.Controls.Swf.TreeViewControls; +using DelftTools.Shell.Core; using DelftTools.TestUtils; using DelftTools.Utils.Aop; -using DelftTools.Utils.Aop.Markers; -using DelftTools.Utils.Collections; -using DelftTools.Utils.Collections.Generic; using NUnit.Framework; namespace DelftTools.Tests.Controls.Swf.TreeViewControls @@ -59,9 +57,8 @@ Assert.AreEqual(3, GetAllNodes(treeView.Nodes).Count()); group.Children.Remove(child1); + group.NotifyObservers(); - treeView.WaitUntilAllEventsAreProcessed(); - Assert.AreEqual(2, GetAllNodes(treeView.Nodes).Count()); WindowsFormsTestHelper.CloseAll(); @@ -90,15 +87,13 @@ WindowsFormsTestHelper.Show(treeView); group.Children.Remove(child1); + group.NotifyObservers(); - treeView.WaitUntilAllEventsAreProcessed(); - Assert.AreEqual(false, groupNode.HasChildren); group.Children.Add(child1); + group.NotifyObservers(); - treeView.WaitUntilAllEventsAreProcessed(); - Assert.AreEqual(true, groupNode.HasChildren); WindowsFormsTestHelper.CloseAll(); @@ -131,9 +126,8 @@ Assert.AreEqual(3, GetAllNodes(treeView.Nodes).Count()); group.Children.Remove(child1); + group.NotifyObservers(); - treeView.WaitUntilAllEventsAreProcessed(); - Assert.AreEqual(2, GetAllNodes(treeView.Nodes).Count()); WindowsFormsTestHelper.CloseAll(); @@ -191,13 +185,12 @@ WindowsFormsTestHelper.Show(treeView); group.Children.Add(child1); + group.NotifyObservers(); - treeView.WaitUntilAllEventsAreProcessed(); - Assert.AreEqual(2, GetAllNodes(treeView.Nodes).Count()); group.Children.Add(child2); - treeView.WaitUntilAllEventsAreProcessed(); + group.NotifyObservers(); Assert.AreEqual(3, GetAllNodes(treeView.Nodes).Count()); @@ -229,12 +222,12 @@ Assert.AreEqual(1, GetAllNodes(treeView.Nodes).Count()); group.Children.Add(child1); - treeView.WaitUntilAllEventsAreProcessed(); + group.NotifyObservers(); Assert.AreEqual(2, GetAllNodes(treeView.Nodes).Count()); group.Children.Add(child2); - treeView.WaitUntilAllEventsAreProcessed(); + group.NotifyObservers(); Assert.AreEqual(3, GetAllNodes(treeView.Nodes).Count()); @@ -247,40 +240,71 @@ #region Test Classes [Entity(FireOnCollectionChange = false)] - private class TestPerson + private class TestPerson : IObservable { + private readonly IList observers = new List(); public string Name { get; set; } - [NoNotifyPropertyChange] public TestGroup TestGroup { get; set; } + + #region IObservable + + public void Attach(IObserver observer) + { + observers.Add(observer); + } + + public void Detach(IObserver observer) + { + observers.Remove(observer); + } + + public void NotifyObservers() + { + foreach (var observer in observers) + { + observer.UpdateObserver(); + } + } + + #endregion } [Entity] - private class TestGroup + private class TestGroup : IObservable { + private readonly IList observers = new List(); public TestGroup() { - Children = new EventedList(); - Children.CollectionChanged += CollectionChanged; - Adults = new EventedList(); - Adults.CollectionChanged += CollectionChanged; + Children = new ObservableList(); + Adults = new ObservableList(); } public string Name { get; set; } - public IEventedList Children { get; set; } - public IEventedList Adults { get; set; } + public ObservableList Children { get; set; } + public ObservableList Adults { get; set; } - private void CollectionChanged(object sender, NotifyCollectionChangingEventArgs e) + #region IObservable + + public void Attach(IObserver observer) { - if (e.Action == NotifyCollectionChangeAction.Add) + observers.Add(observer); + } + + public void Detach(IObserver observer) + { + observers.Remove(observer); + } + + public void NotifyObservers() + { + foreach (var observer in observers) { - ((TestPerson) e.Item).TestGroup = this; + observer.UpdateObserver(); } - else if (e.Action == NotifyCollectionChangeAction.Remove) - { - ((TestPerson) e.Item).TestGroup = null; - } } + + #endregion } private class GroupNodePresenterUsingCollection : TreeViewNodePresenterBase Index: test/Common/DelftTools.Tests/TestObjects/Parent.cs =================================================================== diff -u -r616892066b6752b40088bb870b4d577a2ac24ac3 -r6ddaa0a0f90fb8a5033b54988fe4fbe2dca6232b --- test/Common/DelftTools.Tests/TestObjects/Parent.cs (.../Parent.cs) (revision 616892066b6752b40088bb870b4d577a2ac24ac3) +++ test/Common/DelftTools.Tests/TestObjects/Parent.cs (.../Parent.cs) (revision 6ddaa0a0f90fb8a5033b54988fe4fbe2dca6232b) @@ -1,10 +1,34 @@ using System.Collections.Generic; +using DelftTools.Shell.Core; namespace DelftTools.Tests.TestObjects { - public class Parent + public class Parent : IObservable { + private readonly IList observers = new List(); public readonly IList Children = new List(); public string Name { get; set; } + + #region IObservable + + public void Attach(IObserver observer) + { + observers.Add(observer); + } + + public void Detach(IObserver observer) + { + observers.Remove(observer); + } + + public void NotifyObservers() + { + foreach (var observer in observers) + { + observer.UpdateObserver(); + } + } + + #endregion } } \ No newline at end of file