using NUnit.Framework; using System.IO; using UnityEngine; namespace UniJSON { public class SchemaTests { /// /// http://json-schema.org/examples.html /// [JsonSchema(Title="Person")] public class Person { [JsonSchema(Required = true)] public string firstName; [JsonSchema(Required = true)] public string lastName; [JsonSchema(Description = "Age in years", Minimum = 0)] public int age; } [Test] public void CreateFromClass() { var s = JsonSchema.FromType(); Assert.AreEqual("Person", s.Title); var v = s.Validator as JsonObjectValidator; Assert.AreEqual("Age in years", v.Properties["age"].Description); //Assert.AreEqual(0, s.Properties["age"].Minimum); Assert.AreEqual(new[] { "firstName", "lastName" }, v.Required); var f = new JsonFormatter(2); s.ToJson(f); Debug.Log(f.ToString()); } public enum ProjectionType { Perspective, Orthographic } class EnumStringTest { [JsonSchema(EnumSerializationType =EnumSerializationType.AsLowerString)] public ProjectionType type; } class EnumIntTest { [JsonSchema(EnumSerializationType = EnumSerializationType.AsInt)] public ProjectionType type; } [Test] public void TestEnumAsString() { var json = @" { ""type"": ""object"", ""properties"": { ""type"": { ""anyOf"": [ { ""enum"": [ ""perspective"" ] }, { ""enum"": [ ""orthographic"" ] }, { ""type"": ""string"" } ] } } } "; var fromJson = new JsonSchema(); fromJson.Parse(null, JsonParser.Parse(json), "enum test"); var fromType = JsonSchema.FromType(); Assert.AreEqual(fromJson, fromType); } [Test] public void TestEnumAsInt() { var json = @" { ""type"": ""object"", ""properties"": { ""type"": { ""anyOf"": [ { ""enum"": [ 0 ] }, { ""enum"": [ 1 ] }, { ""type"": ""integer"" } ] } } } "; var fromJson = new JsonSchema(); fromJson.Parse(null, JsonParser.Parse(json), "enum test"); var fromType = JsonSchema.FromType(); Assert.AreEqual(fromJson, fromType); } } }