Esempio n. 1
0
        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));
    }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        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);
    }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        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);
        }