コード例 #1
0
        public void WillOverwriteExistingFileWhenContentHasChanged()
        {
            var generatedFileOriginal = new GeneratedFile("Original Content", "GeneratedFileWriterTests2.cs", TestEnvironment.TempPath);
            var generatedFileChanged  = new GeneratedFile("Changed Content", "GeneratedFileWriterTests2.cs", TestEnvironment.TempPath);

            try
            {
                var writer = new GeneratedFileWriter();

                writer.WriteFile(generatedFileOriginal);
                var originalTimeStamp = new FileInfo(generatedFileOriginal.GetFullPath()).LastWriteTime.Ticks;

                Thread.Sleep(100);

                writer.WriteFile(generatedFileChanged);
                var newTimestamp = new FileInfo(generatedFileChanged.GetFullPath()).LastWriteTime.Ticks;

                Assert.True(newTimestamp > originalTimeStamp);
            }
            finally
            {
                if (File.Exists(generatedFileOriginal.GetFullPath()))
                {
                    File.Delete(generatedFileOriginal.GetFullPath());
                }
            }
        }
コード例 #2
0
        public void WriteProjectFile(GenerateProjectFileCommand command)
        {
            var projectGenerator = new NetStandardLibraryGenerator(command.ProjectName, command.CodeLanguage);
            var generatedFile    = projectGenerator.GenerateFileContent(command.Path);

            GeneratedFileWriter.WriteFileToDisk(generatedFile);
        }
コード例 #3
0
        public void GeneratedProjectBuildsSuccessfully(CodeGenLanguage codeGenLanguage)
        {
            var context = new ProjectTestContext(GetType().Name,
                                                 $"{MethodBase.GetCurrentMethod().Name}{codeGenLanguage}");

            try
            {
                //given
                context.TargetFramework = "netstandard2.0";
                context.CreateEmptyProject();
                var fullProjectFilePath = Path.Combine(context.TargetProjectFolder,
                                                       context.ProjectName + CodeGenLanguageExt.ProjectFileExtensions[codeGenLanguage]);

                var generator = new NetStandardLibraryGenerator(fullProjectFilePath, codeGenLanguage)
                {
                    NethereumWeb3Version = Constants.NethereumWeb3Version
                };

                //when
                //code gen proj file
                var projectFile = generator.GenerateFileContent(context.TargetProjectFolder);
                GeneratedFileWriter.WriteFileToDisk(projectFile);

                //add in some code gen class files
                var contractMetaData = TestContracts.StandardContract;
                var contractABI      = new GeneratorModelABIDeserialiser().DeserialiseABI(contractMetaData.ABI);

                var contractProjectGenerator = new ContractProjectGenerator(
                    contractABI,
                    "StandardContract",
                    contractMetaData.ByteCode,
                    context.ProjectName,
                    "StandardContract.Service",
                    "StandardContract.CQS",
                    "StandardContract.DTO",
                    context.TargetProjectFolder,
                    Path.DirectorySeparatorChar.ToString(),
                    codeGenLanguage)
                {
                    AddRootNamespaceOnVbProjectsToImportStatements = false
                };

                var generatedFiles = contractProjectGenerator.GenerateAll();
                GeneratedFileWriter.WriteFilesToDisk(generatedFiles);

                context.BuildProject();

                //then
                Assert.True(context.BuildHasSucceeded());
            }
            finally
            {
                context.CleanUp();
            }
        }
コード例 #4
0
        public void WriteClasses(GenerateClassesCommand command)
        {
            var contractAbi = new GeneratorModelABIDeserialiser().DeserialiseABI(command.Abi);
            var generator   = new ContractProjectGenerator(
                contractAbi,
                command.ContractName, command.ContractByteCode, command.BaseNamespace,
                command.ServiceNamespace, command.CqsNamespace, command.DtoNamesapce, command.BasePath,
                command.PathDelimiter, command.CodeGenLanguage);
            var generatedClasses = generator.GenerateAll();

            GeneratedFileWriter.WriteFilesToDisk(generatedClasses);
        }
コード例 #5
0
        public void WillNotOutputAnEmptyFile(string content)
        {
            var generatedFile = new GeneratedFile(content, "GeneratedFileWriterTests3.cs", TestEnvironment.TempPath);

            try
            {
                var writer = new GeneratedFileWriter();
                writer.WriteFile(generatedFile);
                Assert.False(File.Exists(generatedFile.GetFullPath()));
            }
            finally
            {
                if (File.Exists(generatedFile.GetFullPath()))
                {
                    File.Delete(generatedFile.GetFullPath());
                }
            }
        }
        public void With_Single_Messages_File_Generated_Code_Builds(CodeGenLanguage codeGenLanguage)
        {
            //given
            var context = new ProjectTestContext(BaseName,
                                                 $"{MethodBase.GetCurrentMethod().Name}{codeGenLanguage}");

            try
            {
                context.CreateProject(codeGenLanguage, new[]
                {
                    new Tuple <string, string>("Nethereum.Web3", Constants.NethereumWeb3Version)
                });

                var contractMetaData = TestContracts.StandardContract;
                var contractABI      = new GeneratorModelABIDeserialiser().DeserialiseABI(contractMetaData.ABI);

                //when
                var contractProjectGenerator = new ContractProjectGenerator(
                    contractABI,
                    "StandardContract",
                    contractMetaData.ByteCode,
                    context.ProjectName,
                    "StandardContract.Service",
                    "StandardContract.CQS",
                    "StandardContract.DTO",
                    context.TargetProjectFolder,
                    Path.DirectorySeparatorChar.ToString(),
                    codeGenLanguage)
                {
                    AddRootNamespaceOnVbProjectsToImportStatements = true,
                };

                var generatedFiles = contractProjectGenerator.GenerateAllMessagesFileAndService();
                GeneratedFileWriter.WriteFilesToDisk(generatedFiles);
                context.BuildProject();

                //then
                Assert.True(context.BuildHasSucceeded());
            }
            finally
            {
                context.CleanUp();
            }
        }
コード例 #7
0
        private static void GenerateFilesForItem(ABIConfiguration item)
        {
            var generator = new ContractProjectGenerator(
                item.CreateContractABI(),
                item.ContractName,
                item.ByteCode,
                item.BaseNamespace,
                item.ServiceNamespace,
                item.CQSNamespace,
                item.DTONamespace,
                item.BaseOutputPath,
                Path.DirectorySeparatorChar.ToString(),
                item.CodeGenLanguage
                );

            var generatedFiles = generator.GenerateAll();

            GeneratedFileWriter.WriteFilesToDisk(generatedFiles);
        }
コード例 #8
0
        public void WillNotOverwriteExistingFileIfContentIsUnChanged()
        {
            const string content       = @"
using System;

namespace Tests;
public class Class1 
{
    public string Func1() 
    {
        return ""Hello"";
    }
}
";
            var          generatedFile = new GeneratedFile(content, "GeneratedFileWriterTests1.cs", TestEnvironment.TempPath);

            try
            {
                var writer = new GeneratedFileWriter();

                writer.WriteFile(generatedFile);
                var creationTimestamp = new FileInfo(generatedFile.GetFullPath()).LastWriteTime.Ticks;

                Thread.Sleep(100);

                writer.WriteFile(generatedFile);
                var lastUpdateTimestamp = new FileInfo(generatedFile.GetFullPath()).LastWriteTime.Ticks;

                Assert.Equal(creationTimestamp, lastUpdateTimestamp);
            }
            finally
            {
                if (File.Exists(generatedFile.GetFullPath()))
                {
                    File.Delete(generatedFile.GetFullPath());
                }
            }
        }