Exemplo n.º 1
0
 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>();
 }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
        /// <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>());
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
 }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
        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);
 }
Exemplo n.º 13
0
        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));
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 17
0
        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);
                    }
        }
Exemplo n.º 18
0
 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);
 }