Exemplo n.º 1
0
        /// <summary>
        /// Create a new key collection with some keys added/removed. This
        /// does not modify the current collection.
        /// </summary>
        /// <param name="toAdd">Keys to add.</param>
        /// <param name="toRemove">Keys to remove</param>
        /// <returns>A new key set with keys added/removed. If both add/remove
        /// key sets are empty, this returns the current instance.</returns>
        public Keys Alter(Keys toAdd, Keys toRemove)
        {
            if (toAdd.IsEmpty && toRemove.IsEmpty)
            {
                return this;
            }
            else
            {
                Keys keys = new Keys(this);

                keys.Add(toAdd);
                keys.remove(toRemove);

                return keys;
            }
        }
Exemplo n.º 2
0
        public void addRemoveSets()
        {
            Keys keys1 = new Keys();
            Keys keys2 = new Keys();
            Keys keys3 = new Keys();

            keys1.Add(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Producer, new Key("dual key prod 1"));
            keys1.Add(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Consumer, new Key("dual key cons 1"));
            keys1.Add(KeyScheme.Sha1Producer, new Key("producer key 1.1"));
            keys1.Add(KeyScheme.Sha1Producer, new Key("producer key 1.2"));

            keys2.Add(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Producer, new Key("dual key prod 2"));
            keys2.Add(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Consumer, new Key("dual key cons 2"));
            keys2.Add(KeyScheme.Sha1Consumer, new Key("consumer key 1"));

            // add keys in bulk to keys3
            keys3.Add(keys1);

            Assert.AreEqual(1, keys3.KeysetFor(KeyScheme.Sha1Dual).ConsumerKeys.Count);
            Assert.AreEqual(1, keys3.KeysetFor(KeyScheme.Sha1Dual).ProducerKeys.Count);
            Assert.AreEqual(2, keys3.KeysetFor(KeyScheme.Sha1Producer).Count);
            Assert.AreEqual(0, keys3.KeysetFor(KeyScheme.Sha1Consumer).Count);

            keys3.Add(keys2);
            Assert.AreEqual(2, keys3.KeysetFor(KeyScheme.Sha1Dual).ConsumerKeys.Count);
            Assert.AreEqual(2, keys3.KeysetFor(KeyScheme.Sha1Dual).ProducerKeys.Count);
            Assert.AreEqual(2, keys3.KeysetFor(KeyScheme.Sha1Producer).Count);
            Assert.AreEqual(1, keys3.KeysetFor(KeyScheme.Sha1Consumer).Count);

            keys3.remove(keys1);
            Assert.AreEqual(1, keys3.KeysetFor(KeyScheme.Sha1Dual).ConsumerKeys.Count);
            Assert.AreEqual(1, keys3.KeysetFor(KeyScheme.Sha1Dual).ProducerKeys.Count);
            Assert.AreEqual(0, keys3.KeysetFor(KeyScheme.Sha1Producer).Count);
            Assert.AreEqual(1, keys3.KeysetFor(KeyScheme.Sha1Consumer).Count);

            keys3.remove(keys2);

            Assert.IsTrue(keys3.IsEmpty);
        }