public void CanConvertToStringOnly()
        {
            TypeConverter c = new UniqueKeyConverter();

            Assert.IsTrue(c.CanConvertTo(typeof(string)));
            Assert.IsFalse(c.CanConvertTo(typeof(object)));
        }
        public void ConvertToEqualsToString()
        {
            object    testObject = new object();
            UniqueKey key        = UniqueKey.GetInstanceScoped(testObject, "PartialKey");

            TypeConverter c         = new UniqueKeyConverter();
            string        stringKey = (string)c.ConvertTo(key, typeof(string));

            Assert.AreEqual(key.ToString(), stringKey);
        }
        public void ConvertToAndFromAreInSync()
        {
            object    testObject  = new object();
            UniqueKey expectedKey = UniqueKey.GetInstanceScoped(testObject, "PartialKey");

            TypeConverter c         = new UniqueKeyConverter();
            string        stringKey = (string)c.ConvertTo(expectedKey, typeof(string));
            UniqueKey     key2      = (UniqueKey)c.ConvertFrom(stringKey);

            Assert.AreEqual(expectedKey, key2);
        }
        public void ConvertFromStringOrUniqueKeyOnly()
        {
            TypeConverter c   = new UniqueKeyConverter();
            UniqueKey     key = UniqueKey.GetInstanceScoped(new object(), "PartialKey");

            c.ConvertFrom(key);
            c.ConvertFrom(key.ToString());
            try
            {
                c.ConvertFrom(new object());
                Assert.Fail();
            }
            catch (NotSupportedException) {}
        }
        public void ConvertToReturnsNullIfInputNull()
        {
            TypeConverter c = new UniqueKeyConverter();

            Assert.IsNull(c.ConvertTo(null, typeof(string)));
        }
        public void ConvertFromReturnsNullIfInputNull()
        {
            TypeConverter c = new UniqueKeyConverter();

            Assert.IsNull(c.ConvertFrom(null));
        }