public void NotSupportedCases(Type clrType)
        {
            // arrange
            var factory = new DotNetTypeInfoFactory();

            // act
            bool success = factory.TryCreate(clrType, out TypeInfo typeInfo);

            // assert
            Assert.False(success);
        }
        public void CreateTypeInfoFromValueType(Type nativeType, string expectedTypeName)
        {
            // arrange
            DotNetTypeInfoFactory factory = new DotNetTypeInfoFactory();

            // act
            bool success = factory.TryCreate(nativeType, out TypeInfo typeInfo);

            // assert
            Assert.True(success);
            Assert.Equal(expectedTypeName, typeInfo.TypeFactory(new IntType()).Visualize());
        }
        public void MixedTypes(Type clrType, string expectedTypeName)
        {
            // arrange
            var factory = new DotNetTypeInfoFactory();

            // act
            bool success = factory.TryCreate(clrType, out TypeInfo typeInfo);

            // assert
            Assert.True(success);
            Assert.Equal(expectedTypeName,
                         typeInfo.TypeFactory(new StringType()).Visualize());
        }
        public void Create_TypeInfo_From_RewrittenType()
        {
            // arrange
            Type type    = typeof(ListType <NonNullType <NativeType <string> > >);
            var  factory = new DotNetTypeInfoFactory();

            // act
            bool success = factory.TryCreate(type, out TypeInfo typeInfo);

            // assert
            Assert.True(success);

            Assert.Collection(typeInfo.Components,
                              t => Assert.Equal(typeof(ListType <NonNullType <NativeType <string> > >), t),
                              t => Assert.Equal(typeof(NonNullType <NativeType <string> >), t),
                              t => Assert.Equal(typeof(string), t));

            IType schemaType = typeInfo.TypeFactory(new StringType());

            Assert.IsType <StringType>(
                Assert.IsType <NonNullType>(
                    Assert.IsType <ListType>(schemaType).ElementType).Type);
        }