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"));
        }
        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);
        }