public TruffleFileWrapper(string jsonDirectory, string fileName) { ContractName = System.IO.Path.GetFileNameWithoutExtension(fileName); Content = GetEmbeddedFileContent(fileName); Path = System.IO.Path.Combine(jsonDirectory, fileName); TruffleContract = JsonConvert.DeserializeObject <TruffleContract>(Content); ContractAbi = new GeneratorModelABIDeserialiser().DeserialiseABI(TruffleContract.Abi.ToString()); }
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(); } }
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); }
public void ShouldRetrieveAllStructsFromABI() { var abi = @"[{""anonymous"":false,""inputs"":[{""indexed"":false,""internalType"":""address"",""name"":""sender"",""type"":""address""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct1"",""type"":""tuple""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct2"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""indexed"":false,""internalType"":""struct Test.TestStruct"",""name"":""testStruct"",""type"":""tuple""}],""name"":""TestStructStorageChanged"",""type"":""event""},{""inputs"":[],""name"":""GetTest"",""outputs"":[{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct1"",""type"":""tuple""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct2"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.TestStruct"",""name"":""testStruct"",""type"":""tuple""},{""internalType"":""int256"",""name"":""test1"",""type"":""int256""},{""internalType"":""int256"",""name"":""test2"",""type"":""int256""}],""stateMutability"":""pure"",""type"":""function""},{""inputs"":[{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct1"",""type"":""tuple""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct2"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.TestStruct"",""name"":""testStruct"",""type"":""tuple""}],""name"":""SetStorageStruct"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct1"",""type"":""tuple""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct2"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.TestStruct"",""name"":""testScrut"",""type"":""tuple""}],""name"":""Test"",""outputs"":[],""stateMutability"":""nonpayable"",""type"":""function""},{""inputs"":[],""name"":""TestArray"",""outputs"":[{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""internalType"":""uint256"",""name"":""id2"",""type"":""uint256""}],""internalType"":""struct Test.SimpleStruct[2]"",""name"":""structArray"",""type"":""tuple[2]""}],""stateMutability"":""pure"",""type"":""function""},{""inputs"":[],""name"":""id1"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""id2"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""id3"",""outputs"":[{""internalType"":""uint256"",""name"":"""",""type"":""uint256""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""id4"",""outputs"":[{""internalType"":""string"",""name"":"""",""type"":""string""}],""stateMutability"":""view"",""type"":""function""},{""inputs"":[],""name"":""testStructStorage"",""outputs"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct1"",""type"":""tuple""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""},{""components"":[{""internalType"":""uint256"",""name"":""id"",""type"":""uint256""}],""internalType"":""struct Test.SubSubStruct"",""name"":""sub"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""internalType"":""struct Test.SubStruct"",""name"":""subStruct2"",""type"":""tuple""},{""internalType"":""string"",""name"":""id2"",""type"":""string""}],""stateMutability"":""view"",""type"":""function""}]"; var deserialiser = new GeneratorModelABIDeserialiser(); var contractAbi = deserialiser.DeserialiseABI(abi); Assert.Equal(4, contractAbi.Structs.Length); Assert.NotNull(contractAbi.Structs.FirstOrDefault(x => x.Name == "SubSubStruct")); Assert.NotNull(contractAbi.Structs.FirstOrDefault(x => x.Name == "SubStruct")); Assert.NotNull(contractAbi.Structs.FirstOrDefault(x => x.Name == "TestStruct")); Assert.NotNull(contractAbi.Structs.FirstOrDefault(x => x.Name == "SimpleStruct")); }
public ContractProjectGeneratorTests() { var contractMetaData = TestContractsUtils.StandardContract; var contractABI = new GeneratorModelABIDeserialiser().DeserialiseABI(contractMetaData.ABI); _contractProjectGenerator = new ContractProjectGenerator( contractABI, "StandardContract", contractMetaData.ByteCode, "ContractProjectGenerator.Tests", "StandardContract.Service", "StandardContract.CQS", "StandardContract.DTO", @"c:\Temp\", "\\"); }
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(); } }
public ContractProjectGenerator CreateGenerator(string defaultNamespace, string projectFolder) { SetBinPath(); var abiString = ABI ?? GeneratorConfigurationUtils.GetFileContent(projectFolder, ABIFile); var byteCode = ByteCode ?? GeneratorConfigurationUtils.GetFileContent(projectFolder, BinFile); var abi = new GeneratorModelABIDeserialiser().DeserialiseABI(abiString); return(new ContractProjectGenerator( abi, ContractName, byteCode, BaseNamespace ?? defaultNamespace, ServiceNamespace ?? $"{ContractName}.Service", CQSNamespace ?? $"{ContractName}.CQS", DTONamespace ?? $"{ContractName}.DTO", BaseOutputPath ?? projectFolder, Path.DirectorySeparatorChar.ToString(), CodeGenLanguage )); }
public ContractDefinition(string abi) { Abi = new GeneratorModelABIDeserialiser().DeserialiseABI(abi); }