コード例 #1
0
        public void Set_Breakpoint_Correctly()
        {
            var bp      = AccessBreakpoint.Parse("rw8:abc000");
            var builder = new BreakpointFacadeBuilder();
            var facade  = builder
                          .WithSetReadAccessBreakpoint()
                          .WithSetWriteAccessBreakpoint()
                          .Build();

            bp.SetBreakpoint(facade);
            builder.Mock.Verify(breakpointFacade => breakpointFacade.SetReadAccessBreakpoint(8, 0xabc000), Times.Once);
            builder.Mock.Verify(breakpointFacade => breakpointFacade.SetWriteAccessBreakpoint(8, 0xabc000), Times.Once);
        }
コード例 #2
0
        public void Exhibit_Value_Equality()
        {
            var a1 = new AccessBreakpoint(0, 4, true, false);
            var a2 = new AccessBreakpoint(0, 4, true, false);

            a1.Equals(null).Should().BeFalse();
            a1.Equals((object)null).Should().BeFalse();
            a1.Equals(a1).Should().BeTrue();
            a1.Equals((object)a1).Should().BeTrue();
            a1.Equals(new object()).Should().BeFalse();
            a1.Equals(a2).Should().BeTrue();
            a1.Equals((object)a2).Should().BeTrue();
            a1.GetHashCode().Should().Be(a2.GetHashCode());
        }
コード例 #3
0
        public void Parse_Input_Correctly()
        {
            Action a = () => AccessBreakpoint.Parse(null);

            a.Should().Throw <ArgumentNullException>();
            a = () => AccessBreakpoint.Parse("gibberish");
            a.Should().Throw <FormatException>();
            var bp = AccessBreakpoint.Parse("rw8:abc678");

            bp.Address.Should().Be(0xabc678);
            bp.IsRead.Should().BeTrue();
            bp.IsWrite.Should().BeTrue();
            bp.Length.Should().Be(8);
        }
コード例 #4
0
        public void Set_Breakpoints_If_They_Are_Provided_In_The_Options()
        {
            // arrange
            var indexMethod  = new IndexMethod();
            var indexOptions = new IndexOptions
            {
                AccessBreakpoints = new[]
                {
                    AccessBreakpoint.Parse("r8:100"),
                    AccessBreakpoint.Parse("w8:200"),
                    AccessBreakpoint.Parse("rw4:300")
                },
                BreakpointMasks = new[]
                {
                    BreakpointMask.Parse("kernel32!createprocess*"),
                    BreakpointMask.Parse("user32!*"),
                    BreakpointMask.Parse("mycustommod!myfancyfunction")
                }
            };
            var builder = new BreakpointFacadeBuilder();

            indexMethod.BreakpointFacade = builder.Build();

            // act
            indexMethod.SetBreakpoints(indexOptions);

            // assert
            builder.Mock.Verify(proxy => proxy.SetBreakpointByMask("kernel32", "createprocess*"), Times.Once);
            builder.Mock.Verify(proxy => proxy.SetBreakpointByMask("user32", "*"), Times.Once);
            builder.Mock.Verify(proxy => proxy.SetBreakpointByMask("mycustommod", "myfancyfunction"), Times.Once);

            builder.Mock.Verify(proxy => proxy.SetReadAccessBreakpoint(0x8, 0x100), Times.Once);
            builder.Mock.Verify(proxy => proxy.SetReadAccessBreakpoint(0x4, 0x300), Times.Once);
            builder.Mock.Verify(proxy => proxy.SetWriteAccessBreakpoint(0x8, 0x200), Times.Once);
            builder.Mock.Verify(proxy => proxy.SetWriteAccessBreakpoint(0x4, 0x300), Times.Once);
        }