diff --git a/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs b/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs index acf9ab6e..0b4034dc 100644 --- a/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs +++ b/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs @@ -449,5 +449,54 @@ namespace Newtonsoft.Json.Tests.Schema } }", json); } + + public enum SortTypeFlag + { + No = 0, + Asc = 1, + Desc = -1 + } + + public class X + { + public SortTypeFlag x; + } + + [Test] + public void GenerateSchemaWithNegativeEnum() + { + JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator(); + JsonSchema schema = jsonSchemaGenerator.Generate(typeof(X)); + + string json = schema.ToString(); + + Assert.AreEqual(@"{ + ""type"": ""object"", + ""properties"": { + ""x"": { + ""type"": ""integer"", + ""enum"": [ + 0, + 1, + -1 + ], + ""options"": [ + { + ""value"": 0, + ""value"": ""No"" + }, + { + ""value"": 1, + ""value"": ""Asc"" + }, + { + ""value"": -1, + ""value"": ""Desc"" + } + ] + } } -} +}", json); + } + } +} \ No newline at end of file diff --git a/Src/Newtonsoft.Json/Schema/JsonSchemaGenerator.cs b/Src/Newtonsoft.Json/Schema/JsonSchemaGenerator.cs index 7876bac9..45f5ac9b 100644 --- a/Src/Newtonsoft.Json/Schema/JsonSchemaGenerator.cs +++ b/Src/Newtonsoft.Json/Schema/JsonSchemaGenerator.cs @@ -311,8 +311,8 @@ namespace Newtonsoft.Json.Schema CurrentSchema.Enum = new List(); CurrentSchema.Options = new Dictionary(); - EnumValues enumValues = EnumUtils.GetNamesAndValues(type); - foreach (EnumValue enumValue in enumValues) + EnumValues enumValues = EnumUtils.GetNamesAndValues(type); + foreach (EnumValue enumValue in enumValues) { JToken value = JToken.FromObject(enumValue.Value);