Example #1
0
        public void ComEnumeratorTest9()
        {
            SHGetPropertyStoreFromParsingName(PInvoke.Tests.AdvApi32Tests.fn, null, GETPROPERTYSTOREFLAGS.GPS_DEFAULT,
                                              typeof(IPropertyStore).GUID, out IPropertyStore ps);
            Assert.That(ps, Is.Not.Null);

            // Test IEnumerable
            var e = new IEnumFromIndexer <PROPERTYKEY>(ps.GetCount, i => ps.GetAt(i), 0);
            var c = 0;

            foreach (var pd in e)
            {
                Assert.IsInstanceOf <PROPERTYKEY>(pd);
                TestContext.WriteLine(pd);
                c++;
            }
            Assert.That(c, Is.EqualTo(ps.GetCount()));

            // Test IEnumerator
            var g = e.GetEnumerator();

            g.Reset();
            Assert.That(g.MoveNext(), Is.True);
            g.Dispose();
            Assert.That(g.MoveNext(), Is.False);
        }
Example #2
0
        public void ComEnumeratorTest7()
        {
            var pidls = new[]
            {
                KNOWNFOLDERID.FOLDERID_Documents.PIDL(), KNOWNFOLDERID.FOLDERID_Pictures.PIDL(),
                KNOWNFOLDERID.FOLDERID_Videos.PIDL()
            }.Select(p => (IntPtr)p).ToArray();
            var hr = SHCreateShellItemArrayFromIDLists((uint)pidls.Length, pidls, out IShellItemArray iarr);

            Assert.That(hr, Is.EqualTo((HRESULT)HRESULT.S_OK));

            // Test IEnumerable
            var e = new IEnumFromIndexer <IShellItem>(iarr.GetCount, i => iarr.GetItemAt(i), 0);
            var c = 0;

            foreach (var pd in e)
            {
                Assert.IsInstanceOf <IShellItem>(pd);
                TestContext.WriteLine(pd.GetDisplayName(SIGDN.SIGDN_PARENTRELATIVE));
                c++;
            }
            Assert.That(c, Is.EqualTo(iarr.GetCount()));

            // Test IEnumerator
            var g = e.GetEnumerator();

            g.Reset();
            Assert.That(g.MoveNext(), Is.True);
            g.Dispose();
            Assert.That(g.MoveNext(), Is.False);
        }
Example #3
0
        public void ComEnumeratorTest8()
        {
            var oc = new IObjectCollection();

            SHCreateItemFromParsingName(PInvoke.Tests.AdvApi32Tests.fn, null, typeof(IShellItem).GUID, out object ppv);
            Assert.That(ppv, Is.Not.Null);
            Assert.That(oc.GetCount(), Is.Zero);
            oc.AddObject(ppv);
            var oa = (IObjectArray)oc;

            // Test IEnumerable
            var e = new IEnumFromIndexer <IShellItem>(oa.GetCount, i => (IShellItem)oa.GetAt(i, typeof(IShellItem).GUID), 0);
            var c = 0;

            foreach (var pd in e)
            {
                Assert.IsInstanceOf <IShellItem>(pd);
                TestContext.WriteLine(pd.GetDisplayName(SIGDN.SIGDN_PARENTRELATIVE));
                c++;
            }
            Assert.That(c, Is.EqualTo(oa.GetCount()));

            // Test IEnumerator
            var g = e.GetEnumerator();

            g.Reset();
            Assert.That(g.MoveNext(), Is.True);
            g.Dispose();
            Assert.That(g.MoveNext(), Is.False);
        }
Example #4
0
        public void ComEnumeratorTest4()
        {
            // Test Get based interfaces with PIDLs
            SHCreateItemFromParsingName(PInvoke.Tests.AdvApi32Tests.fn, null, typeof(IShellItem2).GUID, out object ppv);
            Assert.That(ppv, Is.Not.Null);
            var si2    = (IShellItem2)ppv;
            var pk     = PROPERTYKEY.System.PropList.FullDetails;
            var pdl    = si2.GetPropertyDescriptionList(ref pk, typeof(IPropertyDescriptionList).GUID);
            var pdRiid = typeof(IPropertyDescription).GUID;

            // Test IEnumerable
            var e = new IEnumFromIndexer <IPropertyDescription>(pdl.GetCount, i => pdl.GetAt(i, pdRiid), 0);
            var c = 0;
            var l = new List <string>();

            foreach (var pd in e)
            {
                Assert.IsInstanceOf <IPropertyDescription>(pd);
                pd.GetDisplayName(out var s);
                l.Add(s);
                TestContext.WriteLine(s);
                c++;
            }
            Assert.That(c, Is.EqualTo(e.Count));
            Assert.That(l[0], Is.EqualTo(e[0]));
            Assert.That(l[c - 1], Is.EqualTo(e[c - 1]));

            // Test IEnumerator
            var g = e.GetEnumerator();

            g.Reset();
            Assert.That(g.MoveNext(), Is.True);
            g.Dispose();
            Assert.That(g.MoveNext(), Is.False);
        }