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); }
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()); }
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); }
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); }