RicoSuter/NJsonSchema

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

Open

#460 opened on Sep 6, 2017

View on GitHub
 (1 comment) (0 reactions) (0 assignees)C# (550 forks)github user discovery
help wantedtype: bug

Repository metrics

Stars
 (1,578 stars)
PR merge metrics
 (Avg merge 39d 6h) (1 merged PR in 30d)

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

Contributor guide