Exemplo n.º 1
0
        public void GetDeminifiedMethodNameFromSourceMap_HasSingleBindingNoMatchingMapping_ReturnNullMethodName()
        {
            // Arrange
            FunctionMapEntry functionMapEntry = new FunctionMapEntry
            {
                Bindings =
                    new List <BindingInformation>
                {
                    new BindingInformation
                    {
                        SourcePosition = new SourcePosition {
                            ZeroBasedLineNumber = 20, ZeroBasedColumnNumber = 15
                        }
                    }
                }
            };

            SourceMap sourceMap = MockRepository.GenerateStub <SourceMap>();

            sourceMap.Stub(x => x.GetMappingEntryForGeneratedSourcePosition(Arg <SourcePosition> .Is.Anything)).Return(null);

            // Act
            string result = FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);

            // Assert
            Assert.IsNull(result);
            sourceMap.VerifyAllExpectations();
        }
Exemplo n.º 2
0
        public void GetDeminifiedMethodNameFromSourceMap_HasSingleBindingMatchingMapping_ReturnsMethodName()
        {
            // Arrange
            FunctionMapEntry functionMapEntry = new FunctionMapEntry
            {
                Bindings =
                    new List <BindingInformation>
                {
                    new BindingInformation
                    {
                        SourcePosition = new SourcePosition {
                            ZeroBasedLineNumber = 5, ZeroBasedColumnNumber = 8
                        }
                    }
                }
            };

            SourceMap sourceMap = MockRepository.GenerateStub <SourceMap>();

            sourceMap.Stub(
                x =>
                x.GetMappingEntryForGeneratedSourcePosition(
                    Arg <SourcePosition> .Matches(y => y.ZeroBasedLineNumber == 5 && y.ZeroBasedColumnNumber == 8)))
            .Return(new MappingEntry
            {
                OriginalName = "foo",
            });

            // Act
            string result = FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);

            // Assert
            Assert.AreEqual("foo", result);
            sourceMap.VerifyAllExpectations();
        }
Exemplo n.º 3
0
        public void StackFrameDeminierDeminifyStackFrame_SourceMapParsingNull_SourceMapFailedToParseError()
        {
            // Arrange
            string           filePath = "foo";
            FunctionMapEntry wrapingFunctionMapEntry = new FunctionMapEntry {
                DeminfifiedMethodName = "DeminifiedFoo"
            };
            StackFrame stackFrame = new StackFrame {
                FilePath = filePath
            };
            IFunctionMapStore functionMapStore = MockRepository.GenerateStub <IFunctionMapStore>();

            functionMapStore.Stub(c => c.GetFunctionMapForSourceCode(filePath))
            .Return(new List <FunctionMapEntry>());
            IFunctionMapConsumer functionMapConsumer = MockRepository.GenerateStub <IFunctionMapConsumer>();

            functionMapConsumer.Stub(c => c.GetWrappingFunctionForSourceLocation(Arg <SourcePosition> .Is.Anything, Arg <List <FunctionMapEntry> > .Is.Anything))
            .Return(wrapingFunctionMapEntry);
            ISourceMapStore sourceMapStore = MockRepository.GenerateStub <ISourceMapStore>();

            sourceMapStore.Stub(c => c.GetSourceMapForUrl(Arg <string> .Is.Anything)).Return(new SourceMap());

            IStackFrameDeminifier stackFrameDeminifier = GetStackFrameDeminifierWithMockDependencies(sourceMapStore: sourceMapStore, functionMapStore: functionMapStore, functionMapConsumer: functionMapConsumer);

            // Act
            StackFrameDeminificationResult stackFrameDeminification = stackFrameDeminifier.DeminifyStackFrame(stackFrame, callerSymbolName: null);

            // Assert
            Assert.Equal(DeminificationError.SourceMapFailedToParse, stackFrameDeminification.DeminificationError);
            Assert.Equal(wrapingFunctionMapEntry.DeminfifiedMethodName, stackFrameDeminification.DeminifiedStackFrame.MethodName);
            Assert.Null(stackFrameDeminification.DeminifiedStackFrame.SourcePosition);
            Assert.Null(stackFrameDeminification.DeminifiedStackFrame.FilePath);
        }
Exemplo n.º 4
0
        public void GetWrappingFunctionForSourceLocation_SingleRelevantFunctionMapEntry_ReturnWrappingFunction()
        {
            // Arrange
            SourcePosition sourcePosition = new SourcePosition
            {
                ZeroBasedLineNumber   = 41,
                ZeroBasedColumnNumber = 2
            };
            FunctionMapEntry functionMapEntry = new FunctionMapEntry
            {
                StartSourcePosition = new SourcePosition {
                    ZeroBasedLineNumber = 40, ZeroBasedColumnNumber = 10
                },
                EndSourcePosition = new SourcePosition {
                    ZeroBasedLineNumber = 50, ZeroBasedColumnNumber = 10
                }
            };
            List <FunctionMapEntry> functionMap = new List <FunctionMapEntry>
            {
                functionMapEntry
            };
            IFunctionMapConsumer functionMapConsumer = new FunctionMapConsumer();

            // Act
            FunctionMapEntry wrappingFunction = functionMapConsumer.GetWrappingFunctionForSourceLocation(sourcePosition, functionMap);

            // Assert
            Assert.AreEqual(functionMapEntry, wrappingFunction);
        }
Exemplo n.º 5
0
        public void StackFrameDeminierDeminifyStackFrame_SourceMapProviderReturnsNull_NoSourcemapProvidedError()
        {
            // Arrange
            string           filePath = "foo";
            FunctionMapEntry wrapingFunctionMapEntry = CreateFunctionMapEntry(deminifiedMethodName: "DeminifiedFoo");
            StackFrame       stackFrame = new StackFrame {
                FilePath = filePath
            };
            IFunctionMapStore functionMapStore = MockRepository.GenerateStub <IFunctionMapStore>();

            functionMapStore.Stub(c => c.GetFunctionMapForSourceCode(filePath))
            .Return(new List <FunctionMapEntry>());
            IFunctionMapConsumer functionMapConsumer = MockRepository.GenerateStub <IFunctionMapConsumer>();

            functionMapConsumer.Stub(c => c.GetWrappingFunctionForSourceLocation(Arg <SourcePosition> .Is.Anything, Arg <List <FunctionMapEntry> > .Is.Anything))
            .Return(wrapingFunctionMapEntry);

            IStackFrameDeminifier stackFrameDeminifier = GetStackFrameDeminifierWithMockDependencies(functionMapStore: functionMapStore, functionMapConsumer: functionMapConsumer);

            // Act
            StackFrameDeminificationResult stackFrameDeminification = stackFrameDeminifier.DeminifyStackFrame(stackFrame, callerSymbolName: null);

            // Assert
            Assert.Equal(DeminificationError.NoSourceMap, stackFrameDeminification.DeminificationError);
            Assert.Equal(wrapingFunctionMapEntry.DeminifiedMethodName, stackFrameDeminification.DeminifiedStackFrame.MethodName);
            Assert.Equal(SourcePosition.NotFound, stackFrameDeminification.DeminifiedStackFrame.SourcePosition);
            Assert.Null(stackFrameDeminification.DeminifiedStackFrame.FilePath);
        }
Exemplo n.º 6
0
        public void GetWrappingFunctionForSourceLocation_SingleIrrelevantFunctionMapEntry_ReturnNull()
        {
            // Arrange
            SourcePosition sourcePosition = new SourcePosition
            {
                ZeroBasedLineNumber   = 2,
                ZeroBasedColumnNumber = 3
            };
            List <FunctionMapEntry> functionMap = new List <FunctionMapEntry>
            {
                new FunctionMapEntry
                {
                    StartSourcePosition = new SourcePosition {
                        ZeroBasedLineNumber = 40, ZeroBasedColumnNumber = 10
                    },
                    EndSourcePosition = new SourcePosition {
                        ZeroBasedLineNumber = 50, ZeroBasedColumnNumber = 10
                    }
                }
            };
            IFunctionMapConsumer functionMapConsumer = new FunctionMapConsumer();

            // Act
            FunctionMapEntry wrappingFunction = functionMapConsumer.GetWrappingFunctionForSourceLocation(sourcePosition, functionMap);

            // Assert
            Assert.IsNull(wrappingFunction);
        }
Exemplo n.º 7
0
        public void SimpleStackFrameDeminierDeminifyStackFrame_WrapingFunctionFound_NoDeminificationError()
        {
            // Arrange
            string           filePath = "foo";
            FunctionMapEntry wrapingFunctionMapEntry = new FunctionMapEntry {
                DeminfifiedMethodName = "DeminifiedFoo"
            };
            StackFrame stackFrame = new StackFrame {
                FilePath = filePath
            };
            IFunctionMapStore functionMapStore = MockRepository.GenerateStub <IFunctionMapStore>();

            functionMapStore.Stub(c => c.GetFunctionMapForSourceCode(filePath))
            .Return(new List <FunctionMapEntry>());
            IFunctionMapConsumer functionMapConsumer = MockRepository.GenerateStub <IFunctionMapConsumer>();

            functionMapConsumer.Stub(c => c.GetWrappingFunctionForSourceLocation(Arg <SourcePosition> .Is.Anything, Arg <List <FunctionMapEntry> > .Is.Anything))
            .Return(wrapingFunctionMapEntry);

            IStackFrameDeminifier stackFrameDeminifier = GetStackFrameDeminifierWithMockDependencies(functionMapStore: functionMapStore, functionMapConsumer: functionMapConsumer, useSimpleStackFrameDeminier: true);

            // Act
            StackFrameDeminificationResult stackFrameDeminification = stackFrameDeminifier.DeminifyStackFrame(stackFrame);

            // Assert
            Assert.Equal(DeminificationError.None, stackFrameDeminification.DeminificationError);
            Assert.Equal(wrapingFunctionMapEntry.DeminfifiedMethodName, stackFrameDeminification.DeminifiedStackFrame.MethodName);
            Assert.Null(stackFrameDeminification.DeminifiedStackFrame.SourcePosition);
            Assert.Null(stackFrameDeminification.DeminifiedStackFrame.FilePath);
        }
Exemplo n.º 8
0
        public void GetDeminifiedMethodNameFromSourceMap_NullSourceMap_ThrowsException()
        {
            // Arrange
            FunctionMapEntry functionMapEntry = new FunctionMapEntry();
            SourceMap        sourceMap        = null;

            // Act
            FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);
        }
Exemplo n.º 9
0
        public void GetDeminifiedMethodNameFromSourceMap_NullFunctionMapEntry_ThrowsException()
        {
            // Arrange
            FunctionMapEntry functionMapEntry = null;
            SourceMap        sourceMap        = MockRepository.GenerateStub <SourceMap>();

            // Act
            FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);
        }
        public void GetDeminifiedMethodNameFromSourceMap_NullSourceMap_ThrowsException()
        {
            // Arrange
            FunctionMapEntry functionMapEntry = new FunctionMapEntry();
            SourceMap        sourceMap        = null;

            // Act
            Assert.Throws <ArgumentNullException>(() => FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap));
        }
Exemplo n.º 11
0
        public void GetDeminifiedMethodNameFromSourceMap_NoBinding_ReturnNullMethodName()
        {
            // Arrange
            FunctionMapEntry functionMapEntry = new FunctionMapEntry();
            SourceMap        sourceMap        = MockRepository.GenerateStub <SourceMap>();

            // Act
            string result = FunctionMapGenerator.GetDeminifiedMethodNameFromSourceMap(functionMapEntry, sourceMap);

            // Assert
            Assert.IsNull(result);
            sourceMap.VerifyAllExpectations();
        }
Exemplo n.º 12
0
        public void GetWrappingFunctionForSourceLocation_EmptyFunctionMap_ReturnNull()
        {
            // Arrange
            SourcePosition sourcePosition = new SourcePosition(
                zeroBasedLineNumber: 2,
                zeroBasedColumnNumber: 3);
            List <FunctionMapEntry> functionMap         = new List <FunctionMapEntry>();
            IFunctionMapConsumer    functionMapConsumer = new FunctionMapConsumer();

            // Act
            FunctionMapEntry wrappingFunction = functionMapConsumer.GetWrappingFunctionForSourceLocation(sourcePosition, functionMap);

            // Assert
            Assert.Null(wrappingFunction);
        }
Exemplo n.º 13
0
        public override bool Deserialize()
        {
            var result = base.Deserialize();

            _unknown = Data.ReadInt32(); // Not always zero, looks like flags or mask?

            ProbeMask  = Data.ReadInt32();
            IgnoreMask = Data.ReadInt64();

            LabelTableOffset = Data.ReadInt16();

            // This can't be processed here unless the bytecode is also processed for virtual address space

            /*if (LabelTableOffset >= 0)
             * {
             *  LabelTable = new List<LabelTableEntry>();
             *  var tableReader = new ObjectReader(ByteScript);
             *  tableReader.ReadRawData(LabelTableOffset);
             *
             *  var NameRef = tableReader.ReadNameRef();
             *  var Offset = tableReader.ReadUInt32();
             *  while (Offset != 0x0000FFFF)
             *  {
             *      var entry = new LabelTableEntry();
             *      entry.NameRef = NameRef;
             *      entry.Name = PCC.GetName(NameRef);
             *      entry.Offset = Offset;
             *      LabelTable.Add(entry);
             *
             *      NameRef = tableReader.ReadNameRef();
             *      Offset = tableReader.ReadUInt32();
             *  }
             * }*/

            StateFlags = (StateFlags)Data.ReadInt32();

            FunctionMapCount = Data.ReadInt32();
            for (int i = 0; i < FunctionMapCount; i++)
            {
                var funcEntry = new FunctionMapEntry();
                funcEntry.NameRef.Index       = Data.ReadInt32();
                funcEntry.NameRef.ModNumber   = Data.ReadInt32();
                funcEntry.FunctionObjectIndex = Data.ReadInt32();
                _FunctionMap.Add(funcEntry);
            }

            return(result);
        }
Exemplo n.º 14
0
        public override bool Deserialize()
        {
            var result = base.Deserialize();

            _unknown = Data.ReadInt32(); // Not always zero, looks like flags or mask?

            ProbeMask = Data.ReadInt32();
            IgnoreMask = Data.ReadInt64();

            LabelTableOffset = Data.ReadInt16();

            // This can't be processed here unless the bytecode is also processed for virtual address space
            /*if (LabelTableOffset >= 0)
            {
                LabelTable = new List<LabelTableEntry>();
                var tableReader = new ObjectReader(ByteScript);
                tableReader.ReadRawData(LabelTableOffset);

                var NameRef = tableReader.ReadNameRef();
                var Offset = tableReader.ReadUInt32();
                while (Offset != 0x0000FFFF)
                {
                    var entry = new LabelTableEntry();
                    entry.NameRef = NameRef;
                    entry.Name = PCC.GetName(NameRef);
                    entry.Offset = Offset;
                    LabelTable.Add(entry);

                    NameRef = tableReader.ReadNameRef();
                    Offset = tableReader.ReadUInt32();
                }
            }*/

            StateFlags = (StateFlags)Data.ReadInt32();

            FunctionMapCount = Data.ReadInt32();
            for (int i = 0; i < FunctionMapCount; i++)
            {
                var funcEntry = new FunctionMapEntry();
                funcEntry.NameRef.Index = Data.ReadInt32();
                funcEntry.NameRef.ModNumber = Data.ReadInt32();
                funcEntry.FunctionObjectIndex = Data.ReadInt32();
                _FunctionMap.Add(funcEntry);
            }

            return result;
        }
Exemplo n.º 15
0
        public void GetWrappingFunctionForSourceLocation_MultipleFunctionMapEntriesMultipleRelevantFunctionMapEntry_ReturnClosestWrappingFunction()
        {
            // Arrange
            SourcePosition sourcePosition = new SourcePosition
            {
                ZeroBasedLineNumber   = 10,
                ZeroBasedColumnNumber = 25
            };
            FunctionMapEntry functionMapEntry = new FunctionMapEntry
            {
                StartSourcePosition = new SourcePosition {
                    ZeroBasedLineNumber = 5, ZeroBasedColumnNumber = 10
                },
                EndSourcePosition = new SourcePosition {
                    ZeroBasedLineNumber = 20, ZeroBasedColumnNumber = 30
                }
            };
            FunctionMapEntry functionMapEntry2 = new FunctionMapEntry
            {
                StartSourcePosition = new SourcePosition {
                    ZeroBasedLineNumber = 9, ZeroBasedColumnNumber = 0
                },
                EndSourcePosition = new SourcePosition {
                    ZeroBasedLineNumber = 15, ZeroBasedColumnNumber = 2
                }
            };
            List <FunctionMapEntry> functionMap = new List <FunctionMapEntry>
            {
                functionMapEntry2,
                functionMapEntry
            };
            IFunctionMapConsumer functionMapConsumer = new FunctionMapConsumer();

            // Act
            FunctionMapEntry wrappingFunction = functionMapConsumer.GetWrappingFunctionForSourceLocation(sourcePosition, functionMap);

            // Assert
            Assert.AreEqual(functionMapEntry2, wrappingFunction);
        }