RicoSuter/NJsonSchema
View on GitHubCSharpGenerator fails for byte, double and decimal properties with default values
Open
#460 opened on Sep 6, 2017
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': {