public void DoesntRaiseExceptionWhenRemovingTheSameObjectTwice()
        {
            var object1 = new object();

            var holder = new UriResolvedObjectHolder();

            holder.Add(object1, this._uriResolvedMetadata);

            holder.Remove(object1);
            holder.Remove(object1);
        }
        public void ReuseIdAfterObjectRemoving()
        {
            var object1 = new object();
            var object2 = new object();

            var objects = Enumerable
                          .Range(ShellUriBuilder.MinResolvedId, UriResolvedObjectHolderTests.ValidIdCount - 2)
                          .Select(_ => new object())
                          .Concat(Enumerable.Repeat(object1, 1))
                          .Concat(Enumerable.Repeat(object2, 1));

            var holder = new UriResolvedObjectHolder();

            foreach (var obj in objects)
            {
                holder.Add(obj, this._uriResolvedMetadata);
            }

            var id1 = holder.GetMetadata(object1).ResolvedId;
            var id2 = holder.GetMetadata(object2).ResolvedId;

            holder.Remove(object1);
            holder.Remove(object2);

            var object3 = new object();

            holder.Add(object3, this._uriResolvedMetadata);

            var id3 = holder.GetMetadata(object3).ResolvedId;

            Assert.IsTrue(id3 == id1 || id3 == id2);

            var object4 = new object();

            holder.Add(object4, this._uriResolvedMetadata);

            var id4 = holder.GetMetadata(object4).ResolvedId;

            Assert.AreNotEqual(id3, id4);
            Assert.IsTrue(id4 == id1 || id4 == id2);
        }
        public void ContainsReturnsFalseForRemovedObjects()
        {
            var object1 = new object();
            var object2 = new object();

            var holder = new UriResolvedObjectHolder();

            holder.Add(object1, this._uriResolvedMetadata);
            holder.Remove(object1);

            Assert.IsFalse(holder.Contains(object1));
        }
        public void RemovesObjectFromHolder()
        {
            var object1 = new object();
            var object2 = new object();

            var holder = new UriResolvedObjectHolder();

            holder.Add(object1, this._uriResolvedMetadata);
            holder.Add(object2, this._uriResolvedMetadata);

            holder.Remove(object1);

            CollectionAssert.AreEquivalent(new[] { object2 }, holder.ToArray());
        }