From 3e47041820ed019e8361a4e16b1ed89e8d57c41d Mon Sep 17 00:00:00 2001 From: David Sparer Date: Wed, 5 Oct 2016 12:43:27 -0600 Subject: [PATCH] Fixed minor bug where ProtocolList.Clear() would trigger a CollectionChanged event even when no items were removed (list already empty) --- .../Connection/Protocol/ProtocolListTests.cs | 17 ++++++++++++++--- mRemoteV1/Connection/Protocol/ProtocolList.cs | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/mRemoteNGTests/Connection/Protocol/ProtocolListTests.cs b/mRemoteNGTests/Connection/Protocol/ProtocolListTests.cs index c1bc42a85..492bb1062 100644 --- a/mRemoteNGTests/Connection/Protocol/ProtocolListTests.cs +++ b/mRemoteNGTests/Connection/Protocol/ProtocolListTests.cs @@ -159,12 +159,22 @@ namespace mRemoteNGTests.Connection.Protocol } [Test] - public void ClearRaisesCollectionChangedEventWithCorrectAction() + public void ClearRaisesCollectionChangedEvent() + { + var eventWasCalled = false; + _protocolList.Add(_protocol1); + _protocolList.CollectionChanged += (sender, args) => eventWasCalled = true; + _protocolList.Clear(); + Assert.That(eventWasCalled); + } + + [Test] + public void ClearDoesntRaiseCollectionChangedEventWhenNoObjectsRemoved() { var eventWasCalled = false; _protocolList.CollectionChanged += (sender, args) => eventWasCalled = true; _protocolList.Clear(); - Assert.That(eventWasCalled); + Assert.That(eventWasCalled == false); } [Test] @@ -199,9 +209,10 @@ namespace mRemoteNGTests.Connection.Protocol public void ClearCollectionChangedEventHasCorrectAction() { NotifyCollectionChangedAction collectionChangedAction = NotifyCollectionChangedAction.Move; + _protocolList.Add(_protocol1); _protocolList.CollectionChanged += (sender, args) => collectionChangedAction = args.Action; _protocolList.Clear(); - Assert.That(collectionChangedAction == NotifyCollectionChangedAction.Reset); + Assert.That(collectionChangedAction, Is.EqualTo(NotifyCollectionChangedAction.Reset)); } } } \ No newline at end of file diff --git a/mRemoteV1/Connection/Protocol/ProtocolList.cs b/mRemoteV1/Connection/Protocol/ProtocolList.cs index 179eb20d8..87497b158 100644 --- a/mRemoteV1/Connection/Protocol/ProtocolList.cs +++ b/mRemoteV1/Connection/Protocol/ProtocolList.cs @@ -52,6 +52,7 @@ namespace mRemoteNG.Connection.Protocol public new void Clear() { + if (Count == 0) return; List.Clear(); RaiseCollectionChangedEvent(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); }