public void TestSerializeStringSchema() { IValueSchema<string> schema = new StringSchema {AllowNull = true, DefaultValue = "abc", MaxLength = 100, MinLength = 2, PossibleValues = new[]{"abc","def"} }; JsonSchemaSerializationVisitor visitor=new JsonSchemaSerializationVisitor(); schema.Accept(visitor); Assert.AreEqual(typeof(string),visitor.ValueType); Assert.AreEqual(typeof(StringSchema),visitor.SchemaType); Assert.IsNotNull(visitor.JsonValue); Assert.AreNotEqual(0,visitor.JsonValue.Length); }
public void TestDeserializeIntSchema() { IValueSchema<int?> schema = new IntSchema { AllowNull = false, DefaultValue = 10, MaxValue = 100, MinValue = 2, PossibleValues = new int?[] { 10, 20, 30, 100 } }; JsonSchemaSerializationVisitor visitor = new JsonSchemaSerializationVisitor(); schema.Accept(visitor); IValueSchema<object> vs = JsonSchemaDeserializer.Deserialize(visitor.SchemaType, visitor.JsonValue); Assert.IsNotNull(vs); Assert.AreEqual(typeof(int?), vs.Type); }
public void TestSerializeIntSchema() { IValueSchema<int?> schema = new IntSchema { AllowNull = false, DefaultValue = 10, MaxValue = 100, MinValue = 2, PossibleValues = new int?[] {10, 20, 30, 100} }; JsonSchemaSerializationVisitor visitor = new JsonSchemaSerializationVisitor(); schema.Accept(visitor); Assert.AreEqual(typeof(int?), visitor.ValueType); Assert.AreEqual(typeof(IntSchema), visitor.SchemaType); Assert.IsNotNull(visitor.JsonValue); Assert.AreNotEqual(0, visitor.JsonValue.Length); }
/// <summary> /// Serializes the property. /// </summary> /// <param name="name">The name.</param> /// <param name="value">The value.</param> /// <param name="schema">The schema.</param> /// <returns></returns> public PropertyElement Serialize(string name,object value,IValueSchema<object> schema) { PropertyElement element=new PropertyElement(); JsonSchemaSerializationVisitor visitor=new JsonSchemaSerializationVisitor(); schema.Accept(visitor); Action<PropertyElement, object> action; if(_setMap.TryGetValue(visitor.ValueType,out action)) { action.Invoke(element,value); } else { StringWriter writer=new StringWriter(); _serializer.Serialize(writer,value); element.ValString = writer.ToString(); } element.SchemaType = visitor.SchemaType.FullName; element.TypeOfValue = visitor.ValueType.FullName; element.SchemaBody = visitor.JsonValue; return element; }