diff options
author | Matt Ward <matt.ward@microsoft.com> | 2022-02-15 22:03:51 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-15 22:03:51 +0300 |
commit | 3997eb9e5108bc5f96c989d2ce298d62ea1f018b (patch) | |
tree | 4b7cd200b5c3ce1594ed153e17231cb8563dbc5e | |
parent | 2bdfb15b519fc267ea06610a120e125f5a83c0b6 (diff) | |
parent | 405f5f5fca1c3cab849887023497fe89fb4f8c59 (diff) |
Merge pull request #354 from marshall-lerner/main
Fix Failing Test, Add Batch Methods for Events
3 files changed, 43 insertions, 10 deletions
diff --git a/Mono.Debugging/Mono.Debugging.Client/BreakEvent.cs b/Mono.Debugging/Mono.Debugging.Client/BreakEvent.cs index 8ebf079..0496cc1 100644 --- a/Mono.Debugging/Mono.Debugging.Client/BreakEvent.cs +++ b/Mono.Debugging/Mono.Debugging.Client/BreakEvent.cs @@ -137,9 +137,10 @@ namespace Mono.Debugging.Client set { if (store != null && store.IsReadOnly) return; + bool previous = enabled; enabled = value; if (store != null) - store.EnableBreakEvent (this, value); + store.EnableBreakEvent (this, previous, value); } } diff --git a/Mono.Debugging/Mono.Debugging.Client/BreakpointStore.cs b/Mono.Debugging/Mono.Debugging.Client/BreakpointStore.cs index 52227c4..883e169 100644 --- a/Mono.Debugging/Mono.Debugging.Client/BreakpointStore.cs +++ b/Mono.Debugging/Mono.Debugging.Client/BreakpointStore.cs @@ -255,11 +255,15 @@ namespace Mono.Debugging.Client oldEvents = SetBreakpoints (breakpoints.RemoveRange (breakEvents)); } + List<BreakEvent> breakEventsRemoved = new List<BreakEvent> (); + foreach (var bp in breakEvents) { if (oldEvents.Contains(bp)) { - OnBreakEventRemoved (bp); + breakEventsRemoved.Add (bp); } } + + OnBreakEventsRemoved (breakEventsRemoved); } } @@ -461,9 +465,7 @@ namespace Mono.Debugging.Client } // preserve behaviour by sending an event for each breakpoint that was loaded - foreach (var bp in loadedBreakpoints) { - OnBreakEventAdded (bp); - } + OnBreakEventsAdded (loadedBreakpoints); } [DllImport ("libc")] @@ -506,14 +508,16 @@ namespace Mono.Debugging.Client return PathComparer.Compare (file1, file2) == 0; } - internal bool EnableBreakEvent (BreakEvent be, bool enabled) + internal bool EnableBreakEvent (BreakEvent be, bool previouslyEnabled, bool enabled) { if (IsReadOnly) return false; - OnChanged (); - BreakEventEnableStatusChanged?.Invoke (this, new BreakEventArgs (be)); - NotifyStatusChanged (be); + if (previouslyEnabled != enabled) { + OnChanged (); + BreakEventEnableStatusChanged?.Invoke (this, new BreakEventArgs (be)); + NotifyStatusChanged (be); + } return true; } @@ -529,6 +533,20 @@ namespace Mono.Debugging.Client OnChanged (); } + void OnBreakEventsAdded (List<BreakEvent> bes) + { + foreach (BreakEvent be in bes) { + BreakEventAdded?.Invoke (this, new BreakEventArgs (be)); + if (be is Breakpoint bp) { + BreakpointAdded?.Invoke (this, new BreakpointEventArgs (bp)); + } else if (be is Catchpoint ce) { + CatchpointAdded?.Invoke (this, new CatchpointEventArgs (ce)); + } + } + + OnChanged (); + } + void OnBreakEventRemoved (BreakEvent be) { BreakEventRemoved?.Invoke (this, new BreakEventArgs (be)); @@ -540,6 +558,20 @@ namespace Mono.Debugging.Client OnChanged (); } + void OnBreakEventsRemoved (List<BreakEvent> bes) + { + foreach (BreakEvent be in bes) { + BreakEventRemoved?.Invoke (this, new BreakEventArgs (be)); + if (be is Breakpoint bp) { + BreakpointRemoved?.Invoke (this, new BreakpointEventArgs (bp)); + } else if (be is Catchpoint ce) { + CatchpointRemoved?.Invoke (this, new CatchpointEventArgs (ce)); + } + } + + OnChanged (); + } + void OnChanged () { Changed?.Invoke (this, EventArgs.Empty); diff --git a/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs b/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs index 609750d..ced8211 100644 --- a/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs +++ b/UnitTests/Mono.Debugging.Tests/Shared/BreakpointsAndSteppingTests.cs @@ -1315,7 +1315,7 @@ namespace Mono.Debugging.Tests store.FileRenamed ("fileName1.cs", "fileName2.cs"); var bps = store.GetBreakpoints (); Assert.AreEqual (1, bps.Count); - Assert.AreEqual ("fileName2.cs", bps [0].FileName); + Assert.AreEqual (Path.Combine(Environment.CurrentDirectory, "fileName2.cs"), bps [0].FileName); } } } |