public void TestUnrapStructPassingInvalidType() { IntSchema schema = new IntSchema { AllowNull = true, DefaultValue = 100, PossibleValues = new int?[] { 1, 2, 3 } }; IValueSchema<object> wrapper = schema.Wrap(); Assert.IsNotNull(wrapper); Assert.AreEqual(typeof(int?), wrapper.Type); wrapper.UnwrapValueType<DateTime>(); }
public virtual void TestSchemaEncodeDecodeFidelity() { var schema = IntSchema.Of(); var start = 348592040; for (var i = 0; i < 100; ++i) { var encode = schema.Encode(start + i); var decoded = schema.Decode(encode); Assert.Equal(decoded, start + i); } }
public void TestUnwrapStruct() { IntSchema schema = new IntSchema { AllowNull = true, DefaultValue = 100, PossibleValues = new int?[] { 1, 2, 3 } }; IValueSchema<object> wrapper = schema.Wrap(); Assert.IsNotNull(wrapper); Assert.AreEqual(typeof(int?), wrapper.Type); IValueSchema<int?> vs = wrapper.UnwrapValueType<int>(); Assert.IsNotNull(vs); Assert.IsTrue(vs.AllowNull); Assert.AreEqual(100,vs.DefaultValue); IntSchema intSchema = vs as IntSchema; Assert.IsNotNull(intSchema); }
/// <summary> /// Builds an int schema. /// </summary> /// <param name="resolution"> /// A type resolution. /// </param> /// <param name="cache"> /// A schema cache. /// </param> /// <returns> /// An <see cref="IntSchema" /> that matches the type resolution. /// </returns> /// <exception cref="ArgumentException"> /// Thrown when the resolution is not an <see cref="IntegerResolution" /> or specifies a /// size greater than 32 bits. /// </exception> public override Schema BuildSchema(TypeResolution resolution, IDictionary <Type, Schema> cache) { if (!(resolution is IntegerResolution @int) || @int.Size > 32) { throw new ArgumentException("The int case can only be applied to 32-bit or smaller integer resolutions.", nameof(resolution)); } var schema = new IntSchema(); cache.Add(@int.Type, schema); return(schema); }
public void ConvertValueToObject() { var schema = new IntSchema(); var defaultValue = new ObjectDefaultValue <int?>(5, schema); Assert.Equal(5, defaultValue.Value); Assert.Equal(5, defaultValue.ToObject <int>()); defaultValue.Value = null; Assert.Null(defaultValue.Value); Assert.Throws <UnsupportedTypeException>(() => defaultValue.ToObject <int>()); }
public void UseFirstChildOfUnionSchema() { var document = JsonSerializer.Deserialize <JsonDocument>("1"); var element = document.RootElement; var @int = new IntSchema(); var @string = new StringSchema(); var union = new UnionSchema(new Schema[] { @int, @string }); var defaultValue = new JsonDefaultValue(element, union); Assert.Equal(@int, defaultValue.Schema); }
public void TestUnrapStructPassingInvalidType() { IntSchema schema = new IntSchema { AllowNull = true, DefaultValue = 100, PossibleValues = new int?[] { 1, 2, 3 } }; IValueSchema <object> wrapper = schema.Wrap(); Assert.IsNotNull(wrapper); Assert.AreEqual(typeof(int?), wrapper.Type); Assert.Throws <InvalidCastException>(() => { wrapper.UnwrapValueType <DateTime>(); }); }
/// <summary> /// Writes an <see cref="PrimitiveSchema" />. /// </summary> /// <inheritdoc /> public virtual JsonSchemaWriterCaseResult Write(Schema schema, Utf8JsonWriter json, bool canonical, JsonSchemaWriterContext context) { if (schema is PrimitiveSchema primitiveSchema) { json.WriteStringValue(primitiveSchema switch { BooleanSchema _ => JsonSchemaToken.Boolean, BytesSchema _ => JsonSchemaToken.Bytes, DoubleSchema _ => JsonSchemaToken.Double, FloatSchema _ => JsonSchemaToken.Float, IntSchema _ => JsonSchemaToken.Int, LongSchema _ => JsonSchemaToken.Long, NullSchema _ => JsonSchemaToken.Null, StringSchema _ => JsonSchemaToken.String, _ => throw new UnsupportedSchemaException(schema, $"Unknown primitive schema {schema}."), });
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 UInt32Values(uint value) { var schema = new IntSchema(); var deserialize = deserializerBuilder.BuildDelegate <uint>(schema); var serialize = serializerBuilder.BuildDelegate <uint>(schema); using (stream) { serialize(value, new BinaryWriter(stream)); } var reader = new BinaryReader(stream.ToArray()); Assert.Equal(value, deserialize(ref reader)); }
public void ByteValues(byte value) { var schema = new IntSchema(); var deserialize = deserializerBuilder.BuildDelegate <byte>(schema); var serialize = serializerBuilder.BuildDelegate <byte>(schema); using (stream) { serialize(value, new Utf8JsonWriter(stream)); } var reader = new Utf8JsonReader(stream.ToArray()); Assert.Equal(value, deserialize(ref reader)); }
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); }
public void TestWrapStruct() { IntSchema schema = new IntSchema { AllowNull = true, DefaultValue = 100, PossibleValues = new int?[] { 1, 2, 3 } }; IValueSchema <object> wrapper = schema.Wrap(); Assert.IsNotNull(wrapper); Assert.AreEqual(typeof(int?), wrapper.Type); Assert.IsTrue(wrapper.AllowNull); Assert.AreEqual(100, wrapper.DefaultValue); Assert.IsNotNull(wrapper.PossibleValues); Assert.AreEqual(3, wrapper.PossibleValues.Count()); Assert.AreEqual(1, wrapper.PossibleValues.ElementAt(0)); Assert.AreEqual(2, wrapper.PossibleValues.ElementAt(1)); Assert.AreEqual(3, wrapper.PossibleValues.ElementAt(2)); }
public void TestUnwrapStruct() { IntSchema schema = new IntSchema { AllowNull = true, DefaultValue = 100, PossibleValues = new int?[] { 1, 2, 3 } }; IValueSchema <object> wrapper = schema.Wrap(); Assert.IsNotNull(wrapper); Assert.AreEqual(typeof(int?), wrapper.Type); IValueSchema <int?> vs = wrapper.UnwrapValueType <int>(); Assert.IsNotNull(vs); Assert.IsTrue(vs.AllowNull); Assert.AreEqual(100, vs.DefaultValue); IntSchema intSchema = vs as IntSchema; Assert.IsNotNull(intSchema); }
public void TestDeserializeIntSchema() { IValueSchema <int?> schema = new IntSchema { AllowNull = false, DefaultValue = 10, MaxValue = 100, MinValue = 2, PossibleValues = new int?[] { 10, 20, 30, 100 } }; SchemaJsonSerializationVisitor visitor = new SchemaJsonSerializationVisitor(); 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 } }; SchemaJsonSerializationVisitor visitor = new SchemaJsonSerializationVisitor(); 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); }
public void NullableNotNullWriterTest() { var writerSchema = new IntSchema(); var readerSchema = new UnionSchema(new NullSchema(), new IntSchema()); var writer = new DatumWriter <int>(writerSchema); var reader = new DatumReader <int?>(readerSchema, writerSchema); var expectedValueNotNull = 123; using (var stream = new MemoryStream()) using (var encoder = new BinaryEncoder(stream)) using (var decoder = new BinaryDecoder(stream)) { writer.Write(encoder, expectedValueNotNull); stream.Seek(0, SeekOrigin.Begin); Assert.AreEqual(expectedValueNotNull, reader.Read(decoder)); stream.Seek(0, SeekOrigin.Begin); } }
public void TestWrapStruct() { IntSchema schema = new IntSchema{AllowNull = true,DefaultValue = 100,PossibleValues = new int?[]{1,2,3}}; IValueSchema<object> wrapper = schema.Wrap(); Assert.IsNotNull(wrapper); Assert.AreEqual(typeof(int?), wrapper.Type); Assert.IsTrue(wrapper.AllowNull); Assert.AreEqual(100,wrapper.DefaultValue); Assert.IsNotNull(wrapper.PossibleValues); Assert.AreEqual(3,wrapper.PossibleValues.Count()); Assert.AreEqual(1,wrapper.PossibleValues.ElementAt(0)); Assert.AreEqual(2, wrapper.PossibleValues.ElementAt(1)); Assert.AreEqual(3, wrapper.PossibleValues.ElementAt(2)); }
private void VisitCore(IntSchema s) { s.Serializer = new IntSerializer(s); }