public void AddingRemovingItemsAdjustsCount()
        {
            var list = new SubscriptionItemCollection();
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b0" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b1" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b2" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b3" });
            Assert.AreEqual(4, list.Count);

            list.Remove("a/b0");
            Assert.AreEqual(3, list.Count);

            list.Remove("a/b2");
            Assert.AreEqual(2, list.Count);

            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b4" });
            Assert.AreEqual(3, list.Count);

            list.Remove("a/b4");
            Assert.AreEqual(2, list.Count);
        }
        public void CanRemoveLastItemInList()
        {
            var list = new SubscriptionItemCollection();
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b0" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b1" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b2" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b3" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b4" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b5" });

            list.Remove("a/b0");
            list.Remove("a/b1");
            list.Remove("a/b2");
            list.Remove("a/b3");
            list.Remove("a/b4");

            Assert.AreEqual(1, list.Count);

            list.Remove("a/b5");

            Assert.AreEqual(0, list.Count);
        }
        public void CanRetrieveIndexOfPreviouslyAddedItemsAfterRemovalOfItems()
        {
            var list = new SubscriptionItemCollection();
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b0" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b1" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b2" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b3" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b4" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b5" });
            list.Add(new SubscriptionItem() { QualityOfService = QualityOfService.AtLeastOnce, TopicName = "a/b6" });

            list.Remove("a/b0");
            list.Remove("a/b2");
            list.Remove("a/b4");
            list.Remove("a/b6");

            Assert.AreEqual(0, list.IndexOf("a/b1"));
            Assert.AreEqual(1, list.IndexOf("a/b3"));
            Assert.AreEqual(2, list.IndexOf("a/b5"));
        }