private void ThrowsServiceDefinitionException(string definition, string message) { var parser = new FsdParser(); var service = parser.ParseDefinition(new ServiceDefinitionText("TestApi.fsd", definition)); var generator = new CSharpGenerator { GeneratorName = "CodeGenTests" }; Action action = () => generator.GenerateOutput(service); action.Should().Throw <ServiceDefinitionException>().WithMessage(message); }
private CodeGenFile GetGeneratedFile(string definition, string fileName) { var parser = new FsdParser(); var service = parser.ParseDefinition(new ServiceDefinitionText("TestApi.fsd", definition)); var generator = new CSharpGenerator { GeneratorName = nameof(CSharpGeneratorTests) }; var output = generator.GenerateOutput(service); return(output.Files.First(x => x.Name == fileName)); }
public void GenerateExampleApiTypeScript_IncludesEnums() { ServiceInfo service; const string fileName = "Facility.CodeGen.JavaScript.UnitTests.ExampleApi.fsd"; var parser = new FsdParser(); var stream = GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName) !; Assert.IsNotNull(stream); using (var reader = new StreamReader(stream)) service = parser.ParseDefinition(new ServiceDefinitionText(Path.GetFileName(fileName), reader.ReadToEnd())); var generator = new JavaScriptGenerator { GeneratorName = "JavaScriptGeneratorTests", TypeScript = true, NewLine = "\n", }; var result = generator.GenerateOutput(service); Assert.IsNotNull(result); var typesFile = result.Files.Single(f => f.Name == "exampleApiTypes.ts"); const string expectedEnums = @" /** Identifies a widget field. */ export enum WidgetField { /** The 'id' field. */ id = 'id', /** The 'name' field. */ name = 'name', /** * The 'weight' field. * @deprecated */ weight = 'weight', } /** * An obsolete enum. * @deprecated */ export enum ObsoleteEnum { unused = 'unused', }"; Assert.That(typesFile.Text, Contains.Substring(expectedEnums)); const string expectedEnumUsage = @"widgetField?: WidgetField;"; Assert.That(typesFile.Text, Contains.Substring(expectedEnumUsage)); }
public void GenerateEdgeCases() { string fileName = Path.Combine(TestUtility.GetSolutionDirectory(), "tools", "EdgeCases.fsd"); var parser = new FsdParser(); var service = parser.ParseDefinition( new ServiceDefinitionText(Path.GetFileName(fileName), File.ReadAllText(fileName))); var generator = new CSharpGenerator { GeneratorName = nameof(CSharpGeneratorTests) }; generator.GenerateOutput(service); }
public void GenerateConformanceApi() { string fileName = Path.Combine(TestUtility.GetSolutionDirectory(), "conformance", "ConformanceApi.fsd"); var parser = new FsdParser(); var service = parser.ParseDefinition( new ServiceDefinitionText(Path.GetFileName(fileName), File.ReadAllText(fileName))); var generator = new CSharpGenerator { GeneratorName = "CodeGenTests" }; var output = generator.GenerateOutput(service); output.Files.Count(x => x.Name == "IConformanceApi.g.cs").Should().Be(1); }
public void GenerateEdgeCases() { string fsdText; using (var fsdTextReader = new StreamReader(GetType().Assembly.GetManifestResourceStream("Facility.CodeGen.CSharp.UnitTests.EdgeCases.fsd") !)) fsdText = fsdTextReader.ReadToEnd(); var parser = new FsdParser(); var service = parser.ParseDefinition(new ServiceDefinitionText("EdgeCases.fsd", fsdText)); var generator = new CSharpGenerator { GeneratorName = nameof(CSharpGeneratorTests) }; generator.GenerateOutput(service); }
public void OverrideNamespace() { var definition = "[csharp(namespace: DefinitionNamespace)] service TestApi { method do {}: {} }"; var parser = new FsdParser(); var service = parser.ParseDefinition(new ServiceDefinitionText("TestApi.fsd", definition)); var generator = new CSharpGenerator { GeneratorName = nameof(CSharpGeneratorTests), NamespaceName = "OverrideNamespace" }; var output = generator.GenerateOutput(service); foreach (var file in output.Files) { StringAssert.Contains("namespace OverrideNamespace", file.Text); StringAssert.DoesNotContain("DefinitionNamespace", file.Text); } }
public void GenerateExampleApiSuccess() { ServiceInfo service; const string fileName = "Facility.CodeGen.CSharp.UnitTests.ExampleApi.fsd"; var parser = new FsdParser(); using (var reader = new StreamReader(GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName))) service = parser.ParseDefinition(new NamedText(Path.GetFileName(fileName), reader.ReadToEnd())); var generator = new CSharpGenerator { GeneratorName = "CSharpGeneratorTests", }; generator.GenerateOutput(service); }
public void GenerateConformanceApi() { string fsdText; using (var fsdTextReader = new StreamReader(GetType().Assembly.GetManifestResourceStream("Facility.ConformanceApi.UnitTests.ConformanceApi.fsd") !)) fsdText = fsdTextReader.ReadToEnd(); var parser = new FsdParser(); var service = parser.ParseDefinition( new ServiceDefinitionText("ConformanceApi.fsd", fsdText)); var generator = new CSharpGenerator { GeneratorName = "CodeGenTests" }; var output = generator.GenerateOutput(service); output.Files.Count(x => x.Name == "IConformanceApi.g.cs").Should().Be(1); }
public void GenerateConformanceApiSuccess() { ServiceInfo service; const string fileName = "Facility.CodeGen.AspNet.UnitTests.ConformanceApi.fsd"; var parser = new FsdParser(); var stream = GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName); Assert.IsNotNull(stream); using (var reader = new StreamReader(stream)) service = parser.ParseDefinition(new ServiceDefinitionText(Path.GetFileName(fileName), reader.ReadToEnd())); var generator = new AspNetGenerator { GeneratorName = "AspNetGeneratorTests", }; generator.GenerateOutput(service); }
public void GenerateEnumStringConstants() { const string definition = "[csharp] service TestApi { enum Answer { yes, no, maybe } }"; var parser = new FsdParser(); var service = parser.ParseDefinition(new ServiceDefinitionText("TestApi.fsd", definition)); var generator = new CSharpGenerator { GeneratorName = nameof(CSharpGeneratorTests) }; var output = generator.GenerateOutput(service); var file = output.Files.First(x => x.Name == "Answer.g.cs"); StringAssert.Contains("public static class Strings", file.Text); StringAssert.Contains("public const string Yes = \"yes\";", file.Text); StringAssert.Contains("public const string No = \"no\";", file.Text); StringAssert.Contains("public const string Maybe = \"maybe\";", file.Text); }
public void GenerateExampleApiSuccess(bool typeScript) { ServiceInfo service; const string fileName = "Facility.CodeGen.JavaScript.UnitTests.ExampleApi.fsd"; var parser = new FsdParser(); var stream = GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName); Assert.IsNotNull(stream); using (var reader = new StreamReader(stream)) service = parser.ParseDefinition(new NamedText(Path.GetFileName(fileName), reader.ReadToEnd())); var generator = new JavaScriptGenerator { GeneratorName = "JavaScriptGeneratorTests", TypeScript = typeScript, }; generator.GenerateOutput(service); }