public void GeneratorForObject() { JsonSchema expected = new JsonSchemaBuilder() .Type(SchemaValueType.Object) .Properties( ("Integer", new JsonSchemaBuilder() .Type(SchemaValueType.Integer) .Minimum(5) .ExclusiveMinimum(4) .Maximum(10) .ExclusiveMaximum(11) .MultipleOf(1.5m) ), ("String", new JsonSchemaBuilder() .Type(SchemaValueType.String) .MaxLength(10) .Pattern("^[a-z0-9_]$") ), ("ListOfBool", new JsonSchemaBuilder() .Type(SchemaValueType.Array) .Items(new JsonSchemaBuilder().Type(SchemaValueType.Boolean)) .MinItems(5) .MaxItems(10) ), ("ListOfString", new JsonSchemaBuilder() .Type(SchemaValueType.Array) .Items(new JsonSchemaBuilder() .Type(SchemaValueType.String) .MinLength(5)) .UniqueItems(true) .Deprecated(true) ), ("Duplicated1", new JsonSchemaBuilder() .Ref("#/$defs/integer") ), ("Duplicated2", new JsonSchemaBuilder() .Ref("#/$defs/integer") ), ("Target", JsonSchemaBuilder.RefRoot()), ("rename-this", new JsonSchemaBuilder().Type(SchemaValueType.String)) ) .Required(nameof(GenerationTarget.Integer)) .Defs( ("integer", new JsonSchemaBuilder() .Type(SchemaValueType.Integer) .Maximum(100) ) ); JsonSchema actual = new JsonSchemaBuilder().FromType <GenerationTarget>(); Console.WriteLine(JsonSerializer.Serialize(expected, new JsonSerializerOptions { WriteIndented = true })); Console.WriteLine(JsonSerializer.Serialize(actual, new JsonSerializerOptions { WriteIndented = true })); Assert.AreEqual(expected, actual); }
public void GeneratorForObject() { JsonSchema expected = new JsonSchemaBuilder() .Type(SchemaValueType.Object) .Properties( ("_value", new JsonSchemaBuilder().Type(SchemaValueType.Integer)), ("Integer", new JsonSchemaBuilder() .Type(SchemaValueType.Integer) .Minimum(5) .ExclusiveMinimum(4) .Maximum(10) .ExclusiveMaximum(11) .MultipleOf(1.5m) ), ("String", new JsonSchemaBuilder() .Type(SchemaValueType.String) .MaxLength(10) .Pattern("^[a-z0-9_]$") ), ("RequiredString", new JsonSchemaBuilder() .Type(SchemaValueType.String) ), ("rename-this-required-string", new JsonSchemaBuilder() .Type(SchemaValueType.String) ), ("ListOfBool", new JsonSchemaBuilder() .Type(SchemaValueType.Array) .Items(new JsonSchemaBuilder().Type(SchemaValueType.Boolean)) .MinItems(5) .MaxItems(10) ), ("ListOfString", new JsonSchemaBuilder() .Type(SchemaValueType.Array) .Items(new JsonSchemaBuilder() .Type(SchemaValueType.String) .MinLength(5)) .UniqueItems(true) .Deprecated(true) ), ("Duplicated1", new JsonSchemaBuilder() .Ref("#/$defs/integer") ), ("Duplicated2", new JsonSchemaBuilder() .Ref("#/$defs/integer") ), ("Target", JsonSchemaBuilder.RefRoot()), ("rename-this", new JsonSchemaBuilder().Type(SchemaValueType.String)), ("StrictNumber", new JsonSchemaBuilder().Type(SchemaValueType.Number)), ("OtherStrictNumber", new JsonSchemaBuilder().Type(SchemaValueType.Number)), ("ReadOnlyNumber", new JsonSchemaBuilder() .Type(SchemaValueType.Number) .ReadOnly(true) ), ("WriteOnlyNumber", new JsonSchemaBuilder() .Type(SchemaValueType.Number) .WriteOnly(true) ), ("StringyNumber", new JsonSchemaBuilder().Type(SchemaValueType.String | SchemaValueType.Number)), ("NotANumber", new JsonSchemaBuilder() .AnyOf(new JsonSchemaBuilder().Type(SchemaValueType.Number), new JsonSchemaBuilder().Enum("NaN", "Infinity", "-Infinity") ) ), ("StringyNotANumber", new JsonSchemaBuilder() .AnyOf(new JsonSchemaBuilder().Type(SchemaValueType.String | SchemaValueType.Number), new JsonSchemaBuilder().Enum("NaN", "Infinity", "-Infinity") ) ), ("Metadata", new JsonSchemaBuilder() .Type(SchemaValueType.String) .Title("title") .Description("description") ) ) .Required(nameof(GenerationTarget.Integer), "RequiredString", "rename-this-required-string") .Defs( ("integer", new JsonSchemaBuilder() .Type(SchemaValueType.Integer) .Maximum(100) ) ); JsonSchema actual = new JsonSchemaBuilder().FromType <GenerationTarget>(); AssertEqual(expected, actual); }