public void GetFramesWithNoDebugInfoFrame() { _stackFramesProvider.GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(), 0, 1).Returns(new List <FRAMEINFO> { new FRAMEINFO { m_bstrFuncName = $"libFunc()", m_fHasDebugInfo = 0 } }); _stackFramesProvider.GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(), 1, 1).Returns(new List <FRAMEINFO> { new FRAMEINFO { m_bstrFuncName = $"mainFunc()", m_fHasDebugInfo = 1 } }); uint numFetched = 0; FRAMEINFO[] results = new FRAMEINFO[1]; _frameInfoEnum.Next(1, results, ref numFetched); int result = _frameInfoEnum.Next(1, results, ref numFetched); Assert.That(result, Is.EqualTo(VSConstants.S_OK)); Assert.That(numFetched, Is.EqualTo(1)); Assert.That(results[0].m_bstrFuncName, Is.EqualTo("mainFunc()")); }
public void EnumFrameInfoTest() { RemoteThread mockThread = Substitute.For <RemoteThread>(); IDebugThread debugThread = CreateDebugThread <IDebugThread>(mockThread); IList <FRAMEINFO> framesList = new List <FRAMEINFO> { new FRAMEINFO { m_bstrFuncName = "func1" }, new FRAMEINFO { m_bstrFuncName = "func2" } }; _stackFramesProvider.GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), debugThread.Self, 0, uint.MaxValue).Returns(framesList); IEnumDebugFrameInfo2 enumDebugFrameInfo2; int result = debugThread.EnumFrameInfo( enum_FRAMEINFO_FLAGS.FIF_ARGS, 10, out enumDebugFrameInfo2); _stackFramesProvider.ReceivedWithAnyArgs(0) .GetRange(Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(), Arg.Any <uint>(), Arg.Any <uint>()); Assert.That(result, Is.EqualTo(VSConstants.S_OK)); Assert.IsNotNull(enumDebugFrameInfo2); uint count; Assert.That(enumDebugFrameInfo2.GetCount(out count), Is.EqualTo(VSConstants.S_OK)); Assert.That(count, Is.EqualTo(2)); _stackFramesProvider.ReceivedWithAnyArgs(1).GetRange( Arg.Any <enum_FRAMEINFO_FLAGS>(), Arg.Any <IDebugThread>(), 0, uint.MaxValue); }
/// <summary> /// Loads all frames. /// </summary> /// <returns>True if successful, otherwise false.</returns> bool LoadAll() { if (EndOfStackReached) { return(true); } IList <FRAMEINFO> loadedFrames = _stackFramesProvider.GetRange( _fieldSpec, _debugThread, (uint)_data.Count, uint.MaxValue); if (loadedFrames == null) { return(false); } _data.AddRange(loadedFrames); _allStacksLoaded = true; return(true); }
public void GetRangeFirstFrame() { SetupActualNumberOfFrames(5); IList <FRAMEINFO> frames = _stackFramesProvider.GetRange(_fieldSpec, _debugThread, 0, 1); _remoteThread.Received(1).GetFramesWithInfo((FrameInfoFlags)_fieldSpec, 0, 1); Assert.IsNotNull(frames); Assert.That(frames.Count, Is.EqualTo(1)); Assert.That(frames[0].m_bstrFuncName, Is.EqualTo("Func0")); }