public void GetOrCreate_Uncached() { var sbModuleA = CreateMockSbModule(1); var sbModuleB = CreateMockSbModule(2); var debugModuleA = debugModuleCache.GetOrCreate(sbModuleA, null); var debugModuleB = debugModuleCache.GetOrCreate(sbModuleB, null); Assert.AreNotSame(debugModuleA, debugModuleB); ReceivedModuleAddedEvent(debugModuleA); ReceivedModuleAddedEvent(debugModuleB); }
public IList <IDebugModule3> GetModulesByName(string moduleName) { return(Enumerable.Range(0,NumLoadedModules) .Select(_target.GetModuleAtIndex) .Where(m => string.Equals(moduleName,m?.GetFileSpec()?.GetFilename(), StringComparison.OrdinalIgnoreCase)) .Select(m => _debugModuleCache.GetOrCreate(m, _debugProgram)) .ToList()); }
public void GetModulesByNameReturnsAllModulesWithMatchingName() { const string searchForName = "module_name"; var matchingDebugModule = Substitute.For <IDebugModule3>(); var matchingSbModule = Substitute.For <SbModule>(); matchingSbModule.GetFileSpec().GetFilename().Returns(searchForName); _debugModuleCache.GetOrCreate(matchingSbModule, _debugProgram) .Returns(matchingDebugModule); var notMatchingDebugModule = Substitute.For <IDebugModule3>(); var notMatchingSbModule = Substitute.For <SbModule>(); notMatchingSbModule.GetFileSpec().GetFilename().Returns("other_module_name"); _debugModuleCache.GetOrCreate(notMatchingSbModule, _debugProgram) .Returns(notMatchingDebugModule); var sbModules = new List <SbModule>() { matchingSbModule, notMatchingSbModule, matchingSbModule, notMatchingSbModule, }; _target.GetNumModules().Returns(sbModules.Count); for (int i = 0; i < sbModules.Count; i++) { _target.GetModuleAtIndex(i).Returns(sbModules[i]); } IDebugModule3[] modules = _attachedProgram.GetModulesByName(searchForName).ToArray(); Assert.That(modules.Length, Is.EqualTo(2)); Assert.That(modules[0], Is.EqualTo(matchingDebugModule)); Assert.That(modules[1], Is.EqualTo(matchingDebugModule)); }
/// <summary> /// Creates an AD7 FRAMEINFO based on a FrameInfo value. /// </summary> public virtual FRAMEINFO Create(IDebugStackFrame frame, FrameInfo <SbModule> info, IGgpDebugProgram program) => new FRAMEINFO { m_addrMax = info.AddrMax, m_addrMin = info.AddrMin, m_bstrArgs = info.Args, m_bstrFuncName = info.FuncName, m_bstrLanguage = info.Language, m_bstrModule = info.ModuleName, m_bstrReturnType = info.ReturnType, m_dwFlags = info.Flags, m_dwValidFields = (enum_FRAMEINFO_FLAGS)info.ValidFields, m_fHasDebugInfo = info.HasDebugInfo, m_pModule = info.Module != null?_debugModuleCache.GetOrCreate(info.Module, program) : null, m_pFrame = (FrameInfoFlags.FIF_FRAME & info.ValidFields) != 0 ? frame : null };
public void GetModule() { var mockModule = Substitute.For <SbModule>(); mockDebuggerStackFrame.GetInfo(FrameInfoFlags.FIF_DEBUG_MODULEP).Returns( new FrameInfo <SbModule> { ValidFields = FrameInfoFlags.FIF_DEBUG_MODULEP, Module = mockModule }); var debugModule = Substitute.For <IDebugModule3>(); mockModuleCache.GetOrCreate(mockModule, mockProgram).Returns(debugModule); var info = new FRAMEINFO[1]; var fields = enum_FRAMEINFO_FLAGS.FIF_DEBUG_MODULEP; Assert.AreEqual(VSConstants.S_OK, stackFrame.GetInfo(fields, 0, info)); Assert.AreEqual(enum_FRAMEINFO_FLAGS.FIF_DEBUG_MODULEP, info[0].m_dwValidFields & enum_FRAMEINFO_FLAGS.FIF_DEBUG_MODULEP); Assert.AreEqual(debugModule, info[0].m_pModule); }