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);
        }
Exemplo n.º 2
0
        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);
        }