RicoSuter/NJsonSchema

CSharpGenerator fails for byte, double and decimal properties with default values

Ouverte

#460 ouverte le 6 sept. 2017

 (1 commentaire) (0 réaction) (0 personne assignée)C# (550 forks)github user discovery
help wantedtype: bug

Métriques du dépôt

Stars
 (1 581 étoiles)
Métriques de merge PR
 (Merge moyen 39j 6h) (1 PR mergée en 30 j)

Description

Hmm, I'm sorry it seems that my fix in #458 only partially fixed the issue in the CSharpGenerator for defaults. Bytes, doubles and decimals still seems to fail.

diff --git a/src/NJsonSchema.CodeGeneration.Tests/CSharp/CSharpGeneratorTests.cs b/src/NJsonSchema.CodeGeneration.Tests/CSharp/CSharpGeneratorTests.cs
index 93346db..60e4c94 100644
--- a/src/NJsonSchema.CodeGeneration.Tests/CSharp/CSharpGeneratorTests.cs
+++ b/src/NJsonSchema.CodeGeneration.Tests/CSharp/CSharpGeneratorTests.cs
@@ -283,6 +283,103 @@ public string Generate(JsonSchema4 schema, string typeNameHint, IEnumerable<stri
         }
 
         [TestMethod]
+        public async Task When_property_has_byte_default_it_is_reflected_in_the_poco()
+        {
+            var data = @"{'properties': {
+                                'byteWithDefault': {      
+                                    'type': 'integer',
+                                    'format': 'byte',
+                                    'default': 5
+                                 }
+                             }}";
+
+            var schema = await JsonSchema4.FromJsonAsync(data);
+            var settings = new CSharpGeneratorSettings
+            {
+                ClassStyle = CSharpClassStyle.Poco,
+                Namespace = "ns",
+                GenerateDefaultValues = true
+            };
+            var gen = new CSharpGenerator(schema, settings);
+            var output = gen.GenerateFile("MyClass");
+
+            Assert.IsTrue(output.Contains("public byte ByteWithDefault { get; set; } = 5;"));
+        }
+
+        [TestMethod]
+        public async Task When_property_has_double_default_it_is_reflected_in_the_poco()
+        {
+            var data = @"{'properties': {
+                                'doubleWithDefault': {      
+                                    'type': 'number',
+                                    'format': 'double',
+                                    'default': 5
+                                 }
+                             }}";
+
+            var schema = await JsonSchema4.FromJsonAsync(data);
+            var settings = new CSharpGeneratorSettings
+            {
+                ClassStyle = CSharpClassStyle.Poco,
+                Namespace = "ns",
+                GenerateDefaultValues = true
+            };
+            var gen = new CSharpGenerator(schema, settings);
+            var output = gen.GenerateFile("MyClass");
+
+            Assert.IsTrue(output.Contains("public byte DoubleWithDefault { get; set; } = 5D;"));
+        }
+
+
+        [TestMethod]
+        public async Task When_property_has_decimal_default_it_is_reflected_in_the_poco()
+        {
+            var data = @"{'properties': {
+                                'decimalWithDefault': {      
+                                    'type': 'number',
+                                    'format': 'decimal',
+                                    'default': 5
+                                 }
+                             }}";
+
+            var schema = await JsonSchema4.FromJsonAsync(data);
+            var settings = new CSharpGeneratorSettings
+            {
+                ClassStyle = CSharpClassStyle.Poco,
+                Namespace = "ns",
+                GenerateDefaultValues = true
+            };
+            var gen = new CSharpGenerator(schema, settings);
+            var output = gen.GenerateFile("MyClass");
+
+            Assert.IsTrue(output.Contains("public decimal DecimalWithDefault { get; set; } = 5M;"));
+        }
+
+        [TestMethod]
+        public async Task When_property_has_long_default_it_is_reflected_in_the_poco()
+        {
+            var data = @"{'properties': {
+                                'longWithDefault': {      
+                                    'type': 'integer',
+                                    'format': 'int64',
+                                    'default': 5
+                                 }
+                             }}";
+
+            var schema = await JsonSchema4.FromJsonAsync(data);
+            var settings = new CSharpGeneratorSettings
+            {
+                ClassStyle = CSharpClassStyle.Poco,
+                Namespace = "ns",
+                GenerateDefaultValues = true
+            };
+            var gen = new CSharpGenerator(schema, settings);
+            var output = gen.GenerateFile("MyClass");
+
+            Assert.IsTrue(output.Contains("public long LongWithDefault { get; set; } = 5L;"));
+        }
+
+        [TestMethod]
         public async Task When_property_has_boolean_default_it_is_reflected_in_the_poco()
         {
             var data = @"{'properties': {

Guide contributeur