public void Clear_ReturnsRemovedNodes()
        {
            // Arrange

            var node1 = CreateMockNode(CreateEndpoint(1)).Object;
            var node2 = CreateMockNode(CreateEndpoint(2)).Object;

            var nodes = new ClusterNodeCollection
            {
                node1,
                node2
            };

            Assert.Equal(2, nodes.Count);

            // Act

            var result = nodes.Clear();

            // Assert

            Assert.Equal(2, result.Count);
            Assert.Contains(node1, result);
            Assert.Contains(node2, result);
        }
        public void Clear_UnregistersEvents()
        {
            // Arrange

            var node1 = CreateMockNode(CreateEndpoint(1));
            var node2 = CreateMockNode(CreateEndpoint(2));

            var nodes = new ClusterNodeCollection
            {
                node1.Object,
                node2.Object
            };

            Assert.Equal(2, nodes.Count);

            // Act

            nodes.Clear();

            // Assert

            node1.VerifyRemove(m => m.KeyEndPointsChanged -= It.IsAny <NotifyCollectionChangedEventHandler>(), Times.AtLeastOnce);
            node2.VerifyRemove(m => m.KeyEndPointsChanged -= It.IsAny <NotifyCollectionChangedEventHandler>(), Times.AtLeastOnce);
        }
        public void Clear_RemovesFromLookup()
        {
            // Arrange

            var node1 = CreateMockNode(CreateEndpoint(1)).Object;
            var node2 = CreateMockNode(CreateEndpoint(2)).Object;

            var nodes = new ClusterNodeCollection
            {
                node1,
                node2
            };

            Assert.Equal(2, nodes.Count);

            // Act

            nodes.Clear();

            // Assert

            Assert.False(nodes.TryGet(CreateEndpoint(1), out _));
            Assert.False(nodes.TryGet(CreateEndpoint(2), out _));
        }