Esempio n. 1
0
        public void BasicItemDictionary()
        {
            ItemDictionary <ProjectItemInstance> items = new ItemDictionary <ProjectItemInstance>();

            // Clearing empty collection
            items.Clear();

            // Enumeration of empty collection
            using (IEnumerator <ProjectItemInstance> enumerator = items.GetEnumerator())
            {
                Assert.Equal(false, enumerator.MoveNext());
                ObjectModelHelpers.AssertThrows(typeof(InvalidOperationException), delegate { object o = ((IEnumerator)enumerator).Current; });
                Assert.Equal(null, enumerator.Current);
            }

            List <ProjectItemInstance> list = new List <ProjectItemInstance>();

            foreach (ProjectItemInstance item in items)
            {
                list.Add(item);
            }

            Assert.Equal(0, list.Count);

            // Cause an empty list for type 'x' to be added
            ICollection <ProjectItemInstance> itemList = items["x"];

            // Enumerate empty collection, with an empty list in it
            foreach (ProjectItemInstance item in items)
            {
                list.Add(item);
            }

            Assert.Equal(0, list.Count);

            // Add and remove some items
            ProjectItemInstance item1 = GetItemInstance("i", "i1");

            Assert.Equal(false, items.Remove(item1));
            Assert.Equal(0, items["j"].Count);

            items.Add(item1);
            Assert.Equal(1, items["i"].Count);
            Assert.Equal(item1, items["i"].First());

            ProjectItemInstance item2 = GetItemInstance("i", "i2");

            items.Add(item2);
            ProjectItemInstance item3 = GetItemInstance("j", "j1");

            items.Add(item3);

            // Enumerate to verify contents
            list = new List <ProjectItemInstance>();
            foreach (ProjectItemInstance item in items)
            {
                list.Add(item);
            }

            list.Sort(ProjectItemInstanceComparer);
            Assert.Equal(item1, list[0]);
            Assert.Equal(item2, list[1]);
            Assert.Equal(item3, list[2]);

            // Direct operations on the enumerator
            using (IEnumerator <ProjectItemInstance> enumerator = items.GetEnumerator())
            {
                Assert.Equal(null, enumerator.Current);
                Assert.Equal(true, enumerator.MoveNext());
                Assert.NotNull(enumerator.Current);
                enumerator.Reset();
                Assert.Equal(null, enumerator.Current);
                Assert.Equal(true, enumerator.MoveNext());
                Assert.NotNull(enumerator.Current);
            }
        }