예제 #1
0
파일: TestKeys.cs 프로젝트: renber/AvisNet
        public void addRemove()
        {
            Keys keys = new Keys();

            keys.Add(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Producer, new Key("dual key 1"));
            keys.Add(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Consumer, new Key("dual key 2"));

            keys.Add(KeyScheme.Sha1Producer, new Key("producer key 1"));
            keys.Add(KeyScheme.Sha1Consumer, new Key("consumer key 1"));

            DualKeySet dualKeys = keys.KeysetFor(KeyScheme.Sha1Dual);

            Assert.AreEqual(1, dualKeys.ConsumerKeys.Count);
            Assert.AreEqual(1, dualKeys.ProducerKeys.Count);

            keys.Add(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Producer, new Key("dual key 3"));
            Assert.AreEqual(2, keys.KeysetFor(KeyScheme.Sha1Dual).ProducerKeys.Count);

            keys.Remove(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Producer, new Key("dual key 3"));
            Assert.AreEqual(1, keys.KeysetFor(KeyScheme.Sha1Dual).ProducerKeys.Count);

            keys.Remove(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Producer, new Key("dual key 1"));
            Assert.AreEqual(0, keys.KeysetFor(KeyScheme.Sha1Dual).ProducerKeys.Count);

            // remove a non-existent key, check nothing Bad happens
            keys.Remove(KeyScheme.Sha1Consumer, new Key("blah"));

            keys.Remove(KeyScheme.Sha1Dual, DualKeyScheme.Subset.Consumer, new Key("dual key 2"));
            Assert.AreEqual(0, keys.KeysetFor(KeyScheme.Sha1Dual).ConsumerKeys.Count);

            SingleKeySet consumerKeys = keys.KeysetFor(KeyScheme.Sha1Consumer);
            Assert.AreEqual(1, consumerKeys.Count);
            keys.Remove(KeyScheme.Sha1Consumer, new Key("consumer key 1"));
            Assert.AreEqual(0, consumerKeys.Count);

            SingleKeySet producerKeys = keys.KeysetFor(KeyScheme.Sha1Producer);
            Assert.AreEqual(1, producerKeys.Count);
            keys.Remove(KeyScheme.Sha1Producer, new Key("producer key 1"));
            Assert.AreEqual(0, producerKeys.Count);

            Assert.IsTrue(keys.IsEmpty);

            // remove a non-existent key, check nothing Bad happens
            keys.Remove(KeyScheme.Sha1Consumer, new Key("blah"));
        }
예제 #2
0
파일: Keys.cs 프로젝트: renber/AvisNet
        /// <summary>
        /// Remove all keys in a collection.
        /// </summary>
        /// <param name="keys">The keys to remove</param>
        public virtual void remove(Keys keys)
        {
            if (keys == this)
                throw new ArgumentException("Cannot remove key collection from itself");

            foreach (KeyScheme scheme in keys.keySets.Keys)
            {
                IKeySet myKeys;

                if (keySets.TryGetValue(scheme, out myKeys))
                {
                    myKeys.Remove(keys.KeysetFor(scheme));

                    if (myKeys.IsEmpty)
                        keySets.Remove(scheme);
                }
            }
        }
예제 #3
0
파일: Keys.cs 프로젝트: renber/AvisNet
        public bool Equals(Keys keys)
        {
            if (keySets.Count != keys.keySets.Count)
                return false;

            foreach (KeyScheme scheme in keys.keySets.Keys)
            {
                if (!KeysetFor(scheme).Equals(keys.KeysetFor(scheme)))
                    return false;
            }

            return true;
        }
예제 #4
0
파일: Keys.cs 프로젝트: renber/AvisNet
        /// <summary>
        /// Compute the changes between one key collection and another.
        /// </summary>
        /// <param name="keys">The target key collection.</param>
        /// <returns>The delta (i.e. key sets to be added and removed)
        /// required to change this collection into the target.</returns>
        public Delta DeltaFrom(Keys keys)
        {
            if (keys == this)
                return Delta.EMPTY_DELTA;

            Keys addedKeys = new Keys();
            Keys removedKeys = new Keys();

            foreach (KeyScheme scheme in KeyScheme.Schemes)
            {
                IKeySet existingKeyset = KeysetFor(scheme);
                IKeySet otherKeyset = keys.KeysetFor(scheme);

                addedKeys.Add(scheme, otherKeyset.Subtract(existingKeyset));
                removedKeys.Add(scheme, existingKeyset.Subtract(otherKeyset));
            }

            return new Delta(addedKeys, removedKeys);
        }
예제 #5
0
파일: TestKeys.cs 프로젝트: renber/AvisNet
        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);
        }