/*************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. This code is licensed under the Visual Studio SDK license terms. THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. ***************************************************************************/ using System.Collections.Generic; using Microsoft.VisualStudio; using Microsoft.VisualStudio.Shell.Interop; namespace Microsoft.Samples.VisualStudio.SourceControlIntegration.SccProvider.UnitTests { class MockEnumHierarchies : IEnumHierarchies { List _projects; int _next = 0; public MockEnumHierarchies(IEnumerable projects) { _projects = new List(projects); } #region IEnumHierarchies Members public int Clone(out IEnumHierarchies ppenum) { ppenum = new MockEnumHierarchies(_projects); return VSConstants.S_OK; } public int Next(uint celt, IVsHierarchy[] rgelt, out uint pceltFetched) { pceltFetched = 0; while (pceltFetched < celt && _next < _projects.Count) { rgelt[pceltFetched] = _projects[_next]; pceltFetched++; ++_next; } if (pceltFetched == celt) { return VSConstants.S_OK; } else { return VSConstants.S_FALSE; } } public int Reset() { _next = 0; return VSConstants.S_OK; } public int Skip(uint celt) { IVsHierarchy[] items = new IVsHierarchy[celt]; uint fetched; return Next(celt, items, out fetched); } #endregion } }