public void Adding_Duplicate()
        {
            var topics = new TopicManager();

            Assert.AreEqual(0, topics.GetPeers("alpha").Count());

            topics.AddInterest("alpha", a);
            Assert.AreEqual(1, topics.GetPeers("alpha").Count());

            topics.AddInterest("alpha", a);
            Assert.AreEqual(1, topics.GetPeers("alpha").Count());

            topics.AddInterest("alpha", b);
            Assert.AreEqual(2, topics.GetPeers("alpha").Count());
        }
        public void Adding()
        {
            var topics = new TopicManager();

            Assert.AreEqual(0, topics.GetPeers("alpha").Count());

            topics.AddInterest("alpha", a);
            Assert.AreEqual(a, topics.GetPeers("alpha").First());

            topics.AddInterest("alpha", b);
            var peers = topics.GetPeers("alpha").ToArray();

            CollectionAssert.Contains(peers, a);
            CollectionAssert.Contains(peers, b);
        }
        public void PeerTopics()
        {
            var tm = new TopicManager();

            tm.AddInterest("alpha", a);
            CollectionAssert.AreEquivalent(new[] { "alpha" }, tm.GetTopics(a).ToArray());
            CollectionAssert.AreEquivalent(new string[0], tm.GetTopics(b).ToArray());

            tm.AddInterest("beta", a);
            CollectionAssert.AreEquivalent(new[] { "alpha", "beta" }, tm.GetTopics(a).ToArray());
            CollectionAssert.AreEquivalent(new string[0], tm.GetTopics(b).ToArray());

            tm.AddInterest("beta", b);
            CollectionAssert.AreEquivalent(new[] { "alpha", "beta" }, tm.GetTopics(a).ToArray());
            CollectionAssert.AreEquivalent(new[] { "beta" }, tm.GetTopics(b).ToArray());
        }
        public void Clearing()
        {
            var topics = new TopicManager();

            Assert.AreEqual(0, topics.GetPeers("alpha").Count());
            Assert.AreEqual(0, topics.GetPeers("beta").Count());

            topics.AddInterest("alpha", a);
            topics.AddInterest("beta", b);
            Assert.AreEqual(1, topics.GetPeers("alpha").Count());
            Assert.AreEqual(1, topics.GetPeers("beta").Count());

            topics.Clear();
            Assert.AreEqual(0, topics.GetPeers("alpha").Count());
            Assert.AreEqual(0, topics.GetPeers("beta").Count());
        }
        public void Removing()
        {
            var topics = new TopicManager();

            Assert.AreEqual(0, topics.GetPeers("alpha").Count());

            topics.AddInterest("alpha", a);
            topics.AddInterest("alpha", b);
            Assert.AreEqual(2, topics.GetPeers("alpha").Count());

            topics.RemoveInterest("alpha", a);
            Assert.AreEqual(b, topics.GetPeers("alpha").First());
            Assert.AreEqual(1, topics.GetPeers("alpha").Count());

            topics.RemoveInterest("alpha", a);
            Assert.AreEqual(b, topics.GetPeers("alpha").First());
            Assert.AreEqual(1, topics.GetPeers("alpha").Count());

            topics.RemoveInterest("alpha", b);
            Assert.AreEqual(0, topics.GetPeers("alpha").Count());

            topics.RemoveInterest("beta", b);
            Assert.AreEqual(0, topics.GetPeers("beta").Count());
        }