public void ExceptionThrownWhenMixingLinkWalkingAndBucketTypes()
        {
            var oldId = new RiakObjectId(Bucket, Key);
            var newId = new RiakObjectId("Type", Bucket, Key);
            
            var oldObject = new RiakObject(oldId, "value");
            var newObject = new RiakObject(newId, "value");

            const string LinkTag = "badlinktag";

#pragma warning disable 618
            Assert.Throws<RiakUnsupportedException>(
                () => oldObject.LinkTo(newId, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => oldObject.LinkTo(newObject, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => oldObject.RemoveLink(newId, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => oldObject.RemoveLink(newObject, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => oldObject.RemoveLinks(newId),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => oldObject.RemoveLinks(newObject),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => newObject.LinkTo(oldId, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => newObject.LinkTo(oldObject, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => newObject.RemoveLink(oldId, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => newObject.RemoveLink(oldObject, LinkTag),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => newObject.RemoveLinks(oldId),
                "RiakUnsupportedException was expected.");
            
            Assert.Throws<RiakUnsupportedException>(
                () => newObject.RemoveLinks(oldObject),
                "RiakUnsupportedException was expected.");

            Assert.DoesNotThrow(() => oldObject.LinkTo(oldId, LinkTag));
            Assert.DoesNotThrow(() => oldObject.LinkTo(oldObject, LinkTag));
            Assert.DoesNotThrow(() => oldObject.RemoveLink(oldId, LinkTag));
            Assert.DoesNotThrow(() => oldObject.RemoveLink(oldObject, LinkTag));
            Assert.DoesNotThrow(() => oldObject.RemoveLinks(oldId));
            Assert.DoesNotThrow(() => oldObject.RemoveLinks(oldObject));
#pragma warning restore 618
        }
        public void ExceptionThrownWhenMixingLinkWalkingAndBucketTypes()
        {
            var oldId = new RiakObjectId(Bucket, Key);
            var newId = new RiakObjectId("Type", Bucket, Key);

            var oldObject = new RiakObject(oldId, "value");
            var newObject = new RiakObject(newId, "value");

            const string LinkTag = "badlinktag";

#pragma warning disable 618
            Assert.Throws <RiakUnsupportedException>(
                () => oldObject.LinkTo(newId, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => oldObject.LinkTo(newObject, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => oldObject.RemoveLink(newId, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => oldObject.RemoveLink(newObject, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => oldObject.RemoveLinks(newId),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => oldObject.RemoveLinks(newObject),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => newObject.LinkTo(oldId, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => newObject.LinkTo(oldObject, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => newObject.RemoveLink(oldId, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => newObject.RemoveLink(oldObject, LinkTag),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => newObject.RemoveLinks(oldId),
                "RiakUnsupportedException was expected.");

            Assert.Throws <RiakUnsupportedException>(
                () => newObject.RemoveLinks(oldObject),
                "RiakUnsupportedException was expected.");

            Assert.DoesNotThrow(() => oldObject.LinkTo(oldId, LinkTag));
            Assert.DoesNotThrow(() => oldObject.LinkTo(oldObject, LinkTag));
            Assert.DoesNotThrow(() => oldObject.RemoveLink(oldId, LinkTag));
            Assert.DoesNotThrow(() => oldObject.RemoveLink(oldObject, LinkTag));
            Assert.DoesNotThrow(() => oldObject.RemoveLinks(oldId));
            Assert.DoesNotThrow(() => oldObject.RemoveLinks(oldObject));
#pragma warning restore 618
        }