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));
        }
Example #4
0
 /// <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
 };
Example #5
0
        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);
        }