public void StaticMethodConversionStrategyTest()
        {
            var strategy = new StaticMethodConversionStrategy();

            Assert.IsFalse(strategy.CanConvert(typeof(object), typeof(object)));
            Assert.IsTrue(strategy.CanConvert(typeof(ConvertTest), typeof(int)));
            Assert.IsTrue(strategy.CanConvert(typeof(int), typeof(ConvertTest)));
            Assert.IsFalse(strategy.CanConvert(typeof(ConvertTest), typeof(string)));
            Assert.IsFalse(strategy.CanConvert(typeof(string), typeof(ConvertTest)));

            var val = strategy.Convert(typeof(ConvertTest), typeof(int), new ConvertTest(42), null);

            Assert.AreEqual(42, val);

            var cval = strategy.Convert(typeof(int), typeof(ConvertTest), 42, null) as ConvertTest;

            Assert.IsNotNull(cval);
            Assert.AreEqual(42, cval.Value);

            val = strategy.Convert(typeof(ConvertTest2), typeof(int), new ConvertTest2(42), null);
            Assert.AreEqual(42, val);

            var cval2 = strategy.Convert(typeof(int), typeof(ConvertTest2), 42, null) as ConvertTest2;

            Assert.IsNotNull(cval2);
            Assert.AreEqual(42, cval2.Value);
        }
        public void StaticMethodConversionStrategyTest()
        {
            var    strategy = new StaticMethodConversionStrategy();
            object newValue;

            Assert.IsFalse(strategy.TryConvert(new ConvertTest(42), typeof(DateTime), out newValue));

            // Tests cast operator
            Assert.IsTrue(strategy.TryConvert(new ConvertTest(42), typeof(int), out newValue));
            Assert.AreEqual(42, newValue);

            // Tests cast operator
            Assert.IsTrue(strategy.TryConvert(42, typeof(ConvertTest), out newValue));
            var cval = newValue as ConvertTest;

            Assert.IsNotNull(cval);
            Assert.AreEqual(42, cval.Value);

            Assert.IsTrue(strategy.TryConvert(new ConvertTest2(42), typeof(int), out newValue));
            Assert.AreEqual(42, newValue);

            Assert.IsTrue(strategy.TryConvert(42, typeof(ConvertTest2), out newValue));
            var cval2 = newValue as ConvertTest2;

            Assert.IsNotNull(cval2);
            Assert.AreEqual(42, cval2.Value);
        }