RicoSuter/NJsonSchema

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

Aperta

#460 aperta il 6 set 2017

 (1 commento) (0 reazioni) (0 assegnatari)C# (549 fork)github user discovery
help wantedtype: bug

Metriche repository

Star
 (1581 stelle)
Metriche merge PR
 (Merge medio 39g 6h) (1 PR mergiata in 30 g)

Descrizione

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': {

Guida contributor