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); }
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); }
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); }
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); }