Ejemplo n.º 1
0
        public void CanConvertParameterToConstructorParameter()
        {
            var rules = new List <ParameterConversionRule>()
            {
                new ParameterConversionRule(info => info.ParameterType == typeof(int), nfo => new ParameterConversion()
                {
                    ToConstructor = true
                })
            };

            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }), new DelegateToTypeWrapperOptions()
            {
                ConversionRules = rules
            });

            Assert.Single(result.GetConstructors());
            Assert.Single(result.GetConstructors().Single().GetParameters());
        }
Ejemplo n.º 2
0
        public void CanConvertDelegateToType()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }));
        }
Ejemplo n.º 3
0
        public void GeneratedTypeWorks()
        {
            var converter = new DelegateToTypeWrapper();

            var type = converter.CreateType(new Func <int, bool>(i =>
            {
                System.Console.WriteLine($"Hello from delegate. I is {i}");

                return(true);
            }));

            dynamic instance = Activator.CreateInstance(type);
            var     result   = instance.Run(25);
        }
Ejemplo n.º 4
0
        public void ByDefaultGeneratedTypeName()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }));

            Assert.Equal("GeneratedType", result.Name);
        }
Ejemplo n.º 5
0
        public void CanConvertMultipleParametersToConstructorAndPropertyParameters()
        {
            var rules = new List <ParameterConversionRule>()
            {
                new ParameterConversionRule(info => info.ParameterType == typeof(int), nfo => new ParameterConversion()
                {
                    ToConstructor = true
                }),
                new ParameterConversionRule(info => info.ParameterType == typeof(string), nfo => new ParameterConversion()
                {
                    ToPublicProperty = true
                }),
                new ParameterConversionRule(info => info.ParameterType == typeof(bool), nfo => new ParameterConversion()
                {
                    ToPublicProperty = true
                }),
                new ParameterConversionRule(info => info.ParameterType == typeof(decimal), nfo => new ParameterConversion()
                {
                    ToConstructor = true
                }),
            };

            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, string, bool, decimal, char, bool>((i, s, arg3, arg4, c) =>
            {
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }), new DelegateToTypeWrapperOptions()
            {
                ConversionRules = rules
            });

            Assert.Single(result.GetConstructors());
            Assert.Equal(2, result.GetConstructors().Single().GetParameters().Length);

            Assert.Equal(2, result.GetProperties().Length);

            dynamic obj = Activator.CreateInstance(result, new object[] { 30, new decimal(22) });

            obj.S    = "hello";
            obj.Arg3 = true;

            var res = obj.Run('g');

            Assert.True(res);
        }
Ejemplo n.º 6
0
        public void ByDefaultNoProperties()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }));

            var type = result;

            Assert.Empty(type.GetProperties());
        }
Ejemplo n.º 7
0
        public void DelegatesAssemblyContainsVersionInfo()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }));

            var versionInfo = FileVersionInfo.GetVersionInfo(result.Assembly.Location);
            var fileVersion = versionInfo.FileVersion;

            Assert.NotNull(fileVersion);
        }
Ejemplo n.º 8
0
        public void CanConfigureTypenameUsinGenerator()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }), new DelegateToTypeWrapperOptions()
            {
                TypeNameGenerator = options => "GeneratorTypeName"
            });

            Assert.Equal("GeneratorTypeName", result.Name);
        }
Ejemplo n.º 9
0
        public void CanConfigureNamespace()
        {
            var converter = new DelegateToTypeWrapper();

            var type = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }), new DelegateToTypeWrapperOptions()
            {
                NamespaceName = "HelloThereNs"
            });

            Assert.Equal("HelloThereNs", type.Namespace);
        }
Ejemplo n.º 10
0
        public void ByDefaultRunMethod()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }));

            var type        = result;
            var methodInfos = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);

            Assert.Single(methodInfos);
            Assert.Equal("Run", methodInfos.Single().Name);
        }
Ejemplo n.º 11
0
        public void ByDefaultNoConstructorParameters()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }));

            Assert.Single(result.GetConstructors());

            foreach (var constructorInfo in result.GetConstructors())
            {
                Assert.Empty(constructorInfo.GetParameters());
            }
        }
Ejemplo n.º 12
0
        public void CanConfigureGeneratedMethodNameUsingGenerator()
        {
            var converter = new DelegateToTypeWrapper();

            var result = converter.CreateType(new Func <int, Task <bool> >(async i =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(100));
                _testOutputHelper.WriteLine("Hello from test");

                return(true);
            }), new DelegateToTypeWrapperOptions()
            {
                MethodNameGenerator = catalogOptions => "MethodGeneratorName"
            });

            var method = result.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).Single();

            Assert.Equal("MethodGeneratorName", method.Name);
        }