From 85289d535416b45a694ee9e42e88b93261e5e007 Mon Sep 17 00:00:00 2001 From: kronic Date: Tue, 8 Aug 2023 11:04:49 +0300 Subject: [PATCH] Add DecimalFractionDigits zero test --- .../IntegerTypeTests.cs | 182 +++++++++++++++--- 1 file changed, 153 insertions(+), 29 deletions(-) diff --git a/XmlSchemaClassGenerator.Tests/IntegerTypeTests.cs b/XmlSchemaClassGenerator.Tests/IntegerTypeTests.cs index effa751f..5e7bbed6 100644 --- a/XmlSchemaClassGenerator.Tests/IntegerTypeTests.cs +++ b/XmlSchemaClassGenerator.Tests/IntegerTypeTests.cs @@ -65,15 +65,15 @@ public void TestTotalDigits(int totalDigits, string expectedType) var xsd = @$" - - - - - - - - - + + + + + + + + + "; @@ -99,15 +99,15 @@ public void TestFallbackType(int totalDigits, bool useTypeAsFallback, string exp var xsd = @$" - - - - - - - - - + + + + + + + + + "; @@ -147,16 +147,16 @@ public void TestInclusiveRange(long minInclusive, ulong maxInclusive, string exp var xsd = @$" - - - - - - - - - - + + + + + + + + + + "; @@ -173,5 +173,129 @@ public void TestInclusiveRange(long minInclusive, ulong maxInclusive, string exp Assert.Contains(expectedProperty, generatedProperty); } - } + + [Theory] + [InlineData(2, "sbyte")] + [InlineData(4, "short")] + [InlineData(9, "int")] + [InlineData(18, "long")] + [InlineData(28, "decimal")] + [InlineData(29, "string")] + public void TestDecimalFractionDigitsZeroTotalDigits(int totalDigits, string expectedType) + { + var xsd = @$" + + + + + + + + + + + + +"; + + var generatedType = ConvertXml(nameof(TestTotalDigits), xsd, new Generator + { + NamespaceProvider = new NamespaceProvider + { + GenerateNamespace = key => "Test" + } + }); + + var expectedProperty = $"public {expectedType} SomeValue"; + Assert.Contains(expectedProperty, generatedType.First()); + } + + + [Theory] + [InlineData(4, false, "long")] + [InlineData(30, false, "long")] + [InlineData(4, true, "short")] + [InlineData(30, true, "long")] + public void TestDecimalFractionDigitsFallbackType(int totalDigits, bool useTypeAsFallback, string expectedType) + { + var xsd = @$" + + + + + + + + + + + + +"; + + var generatedType = ConvertXml(nameof(TestTotalDigits), xsd, new Generator + { + NamespaceProvider = new NamespaceProvider + { + GenerateNamespace = key => "Test" + }, + IntegerDataType = typeof(long), + UseIntegerDataTypeAsFallback = useTypeAsFallback + }); + + var expectedProperty = $"public {expectedType} SomeValue"; + Assert.Contains(expectedProperty, generatedType.First()); + } + + [Theory] + [InlineData(1, 100, "byte")] + [InlineData(byte.MinValue, byte.MaxValue, "byte")] + [InlineData(-100, 100, "sbyte")] + [InlineData(sbyte.MinValue, sbyte.MaxValue, "sbyte")] + [InlineData(1, 1000, "ushort")] + [InlineData(ushort.MinValue, ushort.MaxValue, "ushort")] + [InlineData(-1000, 1000, "short")] + [InlineData(short.MinValue, short.MaxValue, "short")] + [InlineData(1, 100000, "uint")] + [InlineData(uint.MinValue, uint.MaxValue, "uint")] + [InlineData(-100000, 100000, "int")] + [InlineData(int.MinValue, int.MaxValue, "int")] + [InlineData(1, 10000000000, "ulong")] + [InlineData(ulong.MinValue, ulong.MaxValue, "ulong")] + [InlineData(-10000000000, 10000000000, "long")] + [InlineData(long.MinValue, long.MaxValue, "long")] + public void TestDecimalFractionDigitsZeroInclusiveRange(long minInclusive, ulong maxInclusive, string expectedType) + { + var xsd = @$" + + + + + + + + + + + + + + +"; + + var generatedType = ConvertXml(nameof(TestTotalDigits), xsd, new Generator + { + NamespaceProvider = new NamespaceProvider + { + GenerateNamespace = key => "Test" + } + }); + + var expectedProperty = $"public {expectedType} SomeValue"; + var generatedProperty = generatedType.First(); + + Assert.Contains(expectedProperty, generatedProperty); + } + } + }