diff --git a/XmlSchemaClassGenerator.Tests/XmlTests.cs b/XmlSchemaClassGenerator.Tests/XmlTests.cs index b32f931a..a88926c5 100644 --- a/XmlSchemaClassGenerator.Tests/XmlTests.cs +++ b/XmlSchemaClassGenerator.Tests/XmlTests.cs @@ -766,6 +766,39 @@ public void DecimalSeparatorTest() Assert.Contains("private decimal _someAttr = 1.5m;", content); } + [Fact] + public void BoolTest() + { + // see https://github.com/mganss/XmlSchemaClassGenerator/issues/103 + + const string xsd = @" + + + + + + + +"; + + var generator = new Generator + { + NamespaceProvider = new NamespaceProvider + { + GenerateNamespace = key => "Test", + }, + GenerateInterfaces = true, + AssemblyVisible = true + }; + var contents = ConvertXml(nameof(ComplexTypeWithAttributeGroupExtension), xsd, generator); + var content = Assert.Single(contents); + + Assert.Contains("private bool _b0 = false;", content); + Assert.Contains("private bool _b1 = true;", content); + Assert.Contains("private bool _bf = false;", content); + Assert.Contains("private bool _bt = true;", content); + } + private static void CompareOutput(string expected, string actual) { string Normalize(string input) => Regex.Replace(input, @"[ \t]*\r\n", "\n"); diff --git a/XmlSchemaClassGenerator/TypeModel.cs b/XmlSchemaClassGenerator/TypeModel.cs index 6028dca3..ad6247d1 100644 --- a/XmlSchemaClassGenerator/TypeModel.cs +++ b/XmlSchemaClassGenerator/TypeModel.cs @@ -1274,19 +1274,17 @@ public override CodeExpression GetDefaultValueFor(string defaultString, bool att { var rv = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(typeof(DateTime)), "Parse", new CodePrimitiveExpression(defaultString)); return rv; - } - else if (type == typeof(Boolean) && !String.IsNullOrEmpty(defaultString) && !String.IsNullOrWhiteSpace(defaultString)) { - if (defaultString == "0") { - //alternate false + } + else if (type == typeof(bool) && !string.IsNullOrWhiteSpace(defaultString)) + { + if (defaultString == "0") return new CodePrimitiveExpression(false); - } else if (defaultString == "1") { + else if (defaultString == "1") return new CodePrimitiveExpression(true); - } else { + else return new CodePrimitiveExpression(Convert.ChangeType(defaultString, ValueType)); - } } - return new CodePrimitiveExpression(Convert.ChangeType(defaultString, ValueType, CultureInfo.InvariantCulture)); }