public void IteratorWithoutDependenciesUnsubscribesFromAllSourceEventsWhenDisposed() { var sourceCollection = With.Inputs(Mike, Tom, Jack); var contactIterator = new SimpleIterator <Contact>(sourceCollection); Assert.IsFalse(Mike.HasPropertyChangedSubscribers); Assert.IsFalse(Tom.HasPropertyChangedSubscribers); Assert.IsFalse(Jack.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasCollectionChangedSubscribers); contactIterator.GetEnumerator(); Assert.IsFalse(Mike.HasPropertyChangedSubscribers); Assert.IsFalse(Tom.HasPropertyChangedSubscribers); Assert.IsFalse(Jack.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasCollectionChangedSubscribers); contactIterator.Dispose(); Assert.IsFalse(Mike.HasPropertyChangedSubscribers); Assert.IsFalse(Tom.HasPropertyChangedSubscribers); Assert.IsFalse(Jack.HasPropertyChangedSubscribers); // TODO: Assert.IsFalse(sourceCollection.HasPropertyChangedSubscribers); // TODO: Assert.IsFalse(sourceCollection.HasCollectionChangedSubscribers); }
private static void DoesNotForceLoad(ObservableCollection <Contact> contacts, Func <SimpleIterator <Contact>, object> action) { var sourceCollection = new SourceCollection(contacts); Assert.AreEqual(0, sourceCollection.GetEnumeratorCalls); var contactIterator = new SimpleIterator <Contact>(sourceCollection.AsBindable()); Assert.AreEqual(0, sourceCollection.GetEnumeratorCalls); action(contactIterator); Assert.AreEqual(0, sourceCollection.GetEnumeratorCalls); contactIterator.Dispose(); Assert.AreEqual(0, sourceCollection.GetEnumeratorCalls); }
public void IteratorWithDepenedenciesDoesNotEnumerateSourceUntilResultIsEnumerated() { var sourceCollection = new SourceCollection(With.Inputs(Tom, Tim, Jack)); Assert.AreEqual(0, sourceCollection.GetEnumeratorCalls); var contactIterator = new SimpleIterator <Contact>(sourceCollection.AsBindable()); Assert.AreEqual(0, sourceCollection.GetEnumeratorCalls); contactIterator.AcceptDependency(new ItemDependencyDefinition("Name")); Assert.AreEqual(0, sourceCollection.GetEnumeratorCalls); foreach (var c in contactIterator) { } Assert.AreEqual(1, sourceCollection.GetEnumeratorCalls); contactIterator.Dispose(); Assert.AreEqual(1, sourceCollection.GetEnumeratorCalls); }
static void Main(string[] args) { ICustomCollection <Hero> zone1List = generateZone1(); ICustomCollection <Hero> zone2List = generateZone2(); ICustomCollection <Hero> zone3List = generateZone3(); var zone1Iterator = new SimpleIterator <Hero>(zone1List); var zone2Iterator = new SimpleIterator <Hero>(zone2List); var zone3Iterator = new SimpleIterator <Hero>(zone3List); //displayCollection<Hero>(zone1Iterator, 1); //displayCollection<Hero>(zone2Iterator, 2); //displayCollection<Hero>(zone3Iterator, 3); //displayPvPPairs<Hero>(zone1Iterator, 1); //displayPvPPairs<Hero>(zone2Iterator, 2); //displayPvPPairs<Hero>(zone3Iterator, 3); var filterZone1Iterator = new FilterIterator <Hero>(zone1List, 'S'); displayCollection <Hero>(filterZone1Iterator, 1); }
public void IteratorUnsubscribesFromItemWhenRemoved() { var sourceCollection = With.Inputs(Mike, Tom, Jack); var contactIterator = new SimpleIterator <Contact>(sourceCollection); Assert.IsFalse(Mike.HasPropertyChangedSubscribers); Assert.IsFalse(Tom.HasPropertyChangedSubscribers); Assert.IsFalse(Jack.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasCollectionChangedSubscribers); contactIterator.AcceptDependency(new ItemDependencyDefinition("Name")); foreach (var c in contactIterator) { } Assert.IsTrue(Mike.HasPropertyChangedSubscribers); Assert.IsTrue(Tom.HasPropertyChangedSubscribers); Assert.IsTrue(Jack.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasCollectionChangedSubscribers); sourceCollection.Remove(Tom); Assert.IsTrue(Mike.HasPropertyChangedSubscribers); Assert.IsFalse(Tom.HasPropertyChangedSubscribers); Assert.IsTrue(Jack.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasPropertyChangedSubscribers); // TODO: Assert.IsTrue(sourceCollection.HasCollectionChangedSubscribers); contactIterator.Dispose(); Assert.IsFalse(Mike.HasPropertyChangedSubscribers); Assert.IsFalse(Tom.HasPropertyChangedSubscribers); Assert.IsFalse(Jack.HasPropertyChangedSubscribers); // TODO: Assert.IsFalse(sourceCollection.HasPropertyChangedSubscribers); // TODO: Assert.IsFalse(sourceCollection.HasCollectionChangedSubscribers); }
static void RunIterator() { // 对象的一个集合 ConcreteAggregate a = new ConcreteAggregate(); a[0] = "Item A"; a[1] = "Item B"; a[2] = "Item C"; a[3] = "Item D"; // Create Iterator and provide aggregate SimpleIterator i = a.CreateIterator(); Console.WriteLine("Iterating over collection:"); object item = i.First(); while (item != null) { Console.WriteLine(item); item = i.Next(); } }