public void GeneratedAssemblyBuilderWithAssemblyInfoSucceeds()
        {
            var builder = new GeneratedAssemblyBuilder();

            builder.WithAssemblyName(Guid.NewGuid().ToString("N"))
            .WithAssemblyInfo("company", "productName", "1.0.0.0", "description")
            .InCurrentDirectory()
            .WithClass("TestClassActivator").InNamespace("PRI.Activators")
            .ImplementsInterface <ISimple>()
            .WithMethod("SimpleMethod")
            .WithReturnType(typeof(void))
            .WithInstruction(new NullaryInstruction(OpCodes.Ret))
            .CommitMethod()
            .WithMethod("Create")
            .WithReturnType(typeof(Customer))
            .WithInstruction(new UnaryInstruction(OpCodes.Newobj, typeof(Customer).GetConstructor(Type.EmptyTypes)))
            .WithLocal(typeof(Customer))
            .WithInstruction(new NullaryInstruction(OpCodes.Stloc_0))
            .WithInstruction(new NullaryInstruction(OpCodes.Ldloc_0))
            .WithInstruction(new NullaryInstruction(OpCodes.Ret))
            .WithParameter()
            .WithType(typeof(int))
            .CommitParameter()
            .CommitMethod()
            .CommitType()
            .SaveAssembly();
            var results = new List <ValidationResult>();

            builder.TryValidate(results);
            var filePath = Path.Combine(builder.Directory, builder.Name + ".dll");

            Assert.True(File.Exists(filePath));
            File.Delete(filePath);
        }
        public void GeneratedAssemblyBuilderTypeInRootNamespaceSucceeds()
        {
            /*builder.WithAssemblyName(.WithUniqueName)
             * .InDirectory
             * .WithAssemblyInfo
             * .WithClass(name)
             *  .Public
             *  .InterfaceImplementations.Add
             *  .BaseClass
             */
            var builder = new GeneratedAssemblyBuilder();

            builder.WithAssemblyName(Guid.NewGuid().ToString("N"))
            .InCurrentDirectory()
            .WithClass("TestClassActivator")
            .WithMethod("Create")
            .WithReturnType(typeof(Customer))
            .WithInstruction(new UnaryInstruction(OpCodes.Newobj, typeof(Customer).GetConstructor(Type.EmptyTypes)))
            .WithLocal(typeof(Customer))
            .WithInstruction(new NullaryInstruction(OpCodes.Stloc_0))
            .WithInstruction(new NullaryInstruction(OpCodes.Ldloc_0))
            .WithInstruction(new NullaryInstruction(OpCodes.Ret))
            .WithParameter("number")
            .WithType(typeof(int))
            .CommitParameter()
            .CommitMethod()
            .CommitType().SaveAssembly();
            var results = new List <ValidationResult>();

            builder.TryValidate(results);
            var filePath = Path.Combine(builder.Directory, builder.Name + ".dll");

            Assert.True(File.Exists(filePath));
            File.Delete(filePath);
        }
Пример #3
0
        public UsingGenerateMethodParameterBuilder()
        {
            var assemblyBuilder = new GeneratedAssemblyBuilder();
            var classBuilder    = new GeneratedClassBuilder(assemblyBuilder, "Name");
            var methodBuilder   = classBuilder.WithMethod("Method");

            _generatedMethodParameterBuilder = methodBuilder.WithParameter();
        }
        public void WithNullDirectoryThrows()
        {
            var builder = new GeneratedAssemblyBuilder();
            var ex      = Assert.Throws <ValidationException>(() => builder.WithAssemblyName(Guid.NewGuid().ToString("N"))
                                                              .SaveAssembly()
                                                              );

            Assert.Equal("Directory is null.", ex.Message);
        }
        public void WithNullNameThrows()
        {
            var builder = new GeneratedAssemblyBuilder();
            var ex      = Assert.Throws <ValidationException>(() =>
            {
                builder
                .InCurrentDirectory()
                .SaveAssembly();
            });

            Assert.Equal("Assembly name is null.", ex.Message);
        }
        public void WithNonExistantDirectoryPathThrows()
        {
            var builder = new GeneratedAssemblyBuilder();
            var ex      = Assert.Throws <ValidationException>(() =>
            {
                builder
                .WithUniqueAssemblyName()
                .InDirectory(@".\bleah")
                .SaveAssembly();
            });

            Assert.Equal(@"Directory .\bleah does not exist.", ex.Message);
        }
        public void WithBadNameThrows()
        {
            var builder = new GeneratedAssemblyBuilder();
            var path    = $"x{Path.GetInvalidFileNameChars()[0]}x";
            var ex      = Assert.Throws <ValidationException>(() =>
            {
                builder
                .WithAssemblyName(path)
                .InCurrentDirectory()
                .SaveAssembly();
            });

            Assert.Equal($"Assembly name {path} contains invalid characters.", ex.Message);
        }
        public void WithBadDirectoryPathThrows()
        {
            var builder = new GeneratedAssemblyBuilder();
            var path    = $"x{Path.GetInvalidPathChars()[0]}x";
            var ex      = Assert.Throws <ValidationException>(() =>
            {
                builder
                .WithUniqueAssemblyName()
                .InDirectory(path)
                .SaveAssembly();
            });

            Assert.Equal($"Directory {path} contains invalid characters.", ex.Message);
        }
        public void WithInvalidClassThrows()
        {
            var builder = new GeneratedAssemblyBuilder();
            var ex      = Assert.Throws <ValidationException>(() =>
            {
                builder
                .WithUniqueAssemblyName()
                .InCurrentDirectory()
                .WithClass("Program").CommitType()
                .WithClass("\"").CommitType()
                .SaveAssembly();
            });

            Assert.Equal("\" is not a valid class name.", ex.Message);
        }
 public UsingGeneratedClassBuilder()
 {
     _assemblyBuilder       = new GeneratedAssemblyBuilder();
     _generatedClassBuilder = new GeneratedClassBuilder(_assemblyBuilder, "Name");
 }
        public void TryValidateWithNullListThrows()
        {
            var builder = new GeneratedAssemblyBuilder();

            Assert.Throws <ArgumentNullException>(() => builder.TryValidate(null));
        }
 public UsingGenerateMethodBuilder()
 {
     _assemblyBuilder        = new GeneratedAssemblyBuilder();
     _classBuilder           = new GeneratedClassBuilder(_assemblyBuilder, "Name");
     _generatedMethodBuilder = _classBuilder.WithMethod("Method");
 }