RicoSuter/NJsonSchema

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

オープン

#460 opened on 2017/09/06

 (1 件のコメント) (0 件のリアクション) (0 人の担当者)C# (549 件のフォーク)github user discovery
help wantedtype: bug

Repository metrics

Stars
 (1,581 個のスター)
PR merge metrics
 (平均マージ 39d 6h) (30d で 1 merged PR)

説明

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

コントリビューターガイド