예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
파일: Program.cs 프로젝트: RNabla/OOD
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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();
            }
        }