public void OnBreakpointChanged(BreakpointEventType eventType) { IPendingBreakpoint[] breakpoints = { GetBreakpointSubstitute(1), GetBreakpointSubstitute(2), GetBreakpointSubstitute(3) }; _breakpointManager.GetPendingBreakpointById(Arg.Any <int>(), out IPendingBreakpoint _) .Returns(x => { x[1] = breakpoints.First(b => b.GetId() == (int)x[0]); return(true); }); SbEvent evnt = Substitute.For <SbEvent>(); IEventBreakpointData breakpointData = Substitute.For <IEventBreakpointData>(); evnt.IsBreakpointEvent.Returns(true); evnt.BreakpointData.Returns(breakpointData); breakpointData.BreakpointId.Returns(2); breakpointData.EventType.Returns(eventType); _attachedProgram.Start(Substitute.For <IDebugEngine2>()); _listenerSubscriber.BreakpointChanged += Raise.EventWith(null, new BreakpointChangedEventArgs(evnt)); breakpoints[0].DidNotReceive().UpdateLocations(); breakpoints[1].Received(1).UpdateLocations(); breakpoints[2].DidNotReceive().UpdateLocations(); }
/// <summary> /// If a remote breakpoint gets bound, binds local breakpoint as well. /// </summary> void OnBreakpointChanged(object sender, BreakpointChangedEventArgs args) { IEventBreakpointData breakpointData = args.Event.BreakpointData; if (breakpointData.EventType.HasFlag(BreakpointEventType.LOCATIONS_ADDED) || breakpointData.EventType.HasFlag(BreakpointEventType.LOCATIONS_REMOVED)) { if (_breakpointManager.GetPendingBreakpointById( breakpointData.BreakpointId, out IPendingBreakpoint pendingBreakpoint)) { pendingBreakpoint.UpdateLocations(); } } }