public void TypeToTypeSlimConverter_ArgumentChecks()
        {
            var converter = new TypeToTypeSlimConverter();

            AssertEx.ThrowsException <ArgumentNullException>(() => converter.Visit(type: null), ex => Assert.AreEqual(ex.ParamName, "type"));
            AssertEx.ThrowsException <ArgumentNullException>(() => converter.MapType(type: null, typeSlim: null), ex => Assert.AreEqual(ex.ParamName, "type"));
            AssertEx.ThrowsException <ArgumentNullException>(() => converter.MapType(typeof(int), typeSlim: null), ex => Assert.AreEqual(ex.ParamName, "typeSlim"));
        }
        public void TypeToTypeSlimConverter_Resolve_Success()
        {
            var visitor      = new TypeToTypeSlimConverter();
            var longTypeSlim = visitor.Visit(typeof(long));

            visitor.MapType(typeof(int), longTypeSlim);
            var intTypeSlim = visitor.Visit(typeof(int));

            Assert.AreEqual(intTypeSlim, longTypeSlim);
            visitor.MapType(typeof(int), longTypeSlim);
        }
        public void TypeToTypeSlimConverter_Resolve_ThrowsInvalidOperation()
        {
            var visitor      = new TypeToTypeSlimConverter();
            var intTypeSlim  = visitor.Visit(typeof(int));
            var longTypeSlim = visitor.Visit(typeof(long));

            Assert.ThrowsException <InvalidOperationException>(() => visitor.MapType(typeof(int), longTypeSlim));
        }