コード例 #1
0
ファイル: BooleanSchemaTest.cs プロジェクト: eaba/SharpPulsar
        public void TestSchemaEncodeDecodeFidelity()
        {
            var schema = BooleanSchema.Of();

            Assert.Equal(new bool?(true), schema.Decode(schema.Encode(true)));
            Assert.Equal(new bool?(false), schema.Decode(schema.Encode(false)));
        }
コード例 #2
0
        public void RecordWithMissingFields()
        {
            var boolean = new BooleanSchema();
            var array   = new ArraySchema(boolean);
            var map     = new MapSchema(new IntSchema());
            var @enum   = new EnumSchema("Position", new[] { "First", "Last" });
            var union   = new UnionSchema(new Schema[]
            {
                new NullSchema(),
                array
            });

            var schema = new RecordSchema("AllFields", new[]
            {
                new RecordField("First", union),
                new RecordField("Second", union),
                new RecordField("Third", array),
                new RecordField("Fourth", array),
                new RecordField("Fifth", map),
                new RecordField("Sixth", map),
                new RecordField("Seventh", @enum),
                new RecordField("Eighth", @enum)
            });

            var deserializer = DeserializerBuilder.BuildDeserializer <WithoutEvenFields>(schema);
            var serializer   = SerializerBuilder.BuildSerializer <WithEvenFields>(schema);

            var value = new WithEvenFields()
            {
                First = new List <bool>()
                {
                    false
                },
                Second = new List <bool>()
                {
                    false, false
                },
                Third = new List <bool>()
                {
                    false, false, false
                },
                Fourth = new List <bool>()
                {
                    false
                },
                Fifth = new Dictionary <string, int>()
                {
                    { "first", 1 }
                },
                Sixth = new Dictionary <string, int>()
                {
                    { "first", 1 }, { "second", 2 }
                },
                Seventh = Position.Last,
                Eighth  = Position.First
            };

            Assert.Equal(value.Seventh, deserializer.Deserialize(serializer.Serialize(value)).Seventh);
        }
コード例 #3
0
ファイル: TestSchema2.cs プロジェクト: thirumg/Avro.NET
 public void testBoolean()
 {
     BooleanSchema schema = new BooleanSchema();
     
     Assert.AreEqual(schema, Schema.Parse("{\"type\":\"boolean\"}"));
     Assert.AreEqual(schema, Schema.Parse("\"boolean\""));
     check("\"boolean\"", "true", true);
 }
コード例 #4
0
        public void RecordWithMissingFields()
        {
            var boolean = new BooleanSchema();
            var array   = new ArraySchema(boolean);
            var map     = new MapSchema(boolean);
            var union   = new UnionSchema(new Schema[]
            {
                new NullSchema(),
                array
            });

            var schema = new RecordSchema("AllFields", new[]
            {
                new RecordField("First", union),
                new RecordField("Second", union),
                new RecordField("Third", array),
                new RecordField("Fourth", array),
                new RecordField("Fifth", map),
                new RecordField("Sixth", map),
                new RecordField("Seventh", boolean),
                new RecordField("Eighth", boolean)
            });

            var deserializer = DeserializerBuilder.BuildDeserializer <WithoutEvenFields>(schema);
            var serializer   = SerializerBuilder.BuildSerializer <WithEvenFields>(schema);

            var value = new WithEvenFields()
            {
                First = new List <bool>()
                {
                    false
                },
                Second = new List <bool>()
                {
                    false, false
                },
                Third = new List <bool>()
                {
                    false, false, false
                },
                Fourth = new List <bool>()
                {
                    false
                },
                Fifth = new Dictionary <string, bool>()
                {
                    { "first", false }
                },
                Sixth = new Dictionary <string, bool>()
                {
                    { "first", false }, { "second", false }
                },
                Seventh = true,
                Eighth  = false
            };

            Assert.True(deserializer.Deserialize(serializer.Serialize(value)).Seventh);
        }
コード例 #5
0
ファイル: BooleanSchemaTest.cs プロジェクト: eaba/SharpPulsar
        public void TestSchemaDecode()
        {
            var trueBytes  = new byte[] { 1 };
            var falseBytes = new byte[] { 0 };
            var schema     = BooleanSchema.Of();

            Assert.Equal(new bool?(true), schema.Decode(trueBytes));
            Assert.Equal(new bool?(false), schema.Decode(falseBytes));
        }
コード例 #6
0
ファイル: BooleanSchemaTest.cs プロジェクト: eaba/SharpPulsar
        public void TestSchemaEncode()
        {
            var schema        = BooleanSchema.Of();
            var expectedTrue  = new byte[] { 1 };
            var expectedFalse = new byte[] { 0 };

            Assert.Equal(expectedTrue, schema.Encode(true));
            Assert.Equal(expectedFalse, schema.Encode(false));
        }
コード例 #7
0
        public void BooleanValues(bool value)
        {
            var schema = new BooleanSchema();

            var deserializer = DeserializerBuilder.BuildDeserializer <bool>(schema);
            var serializer   = SerializerBuilder.BuildSerializer <bool>(schema);

            Assert.Equal(value, deserializer.Deserialize(serializer.Serialize(value)));
        }
コード例 #8
0
        /// <summary>
        /// Builds a boolean schema.
        /// </summary>
        /// <param name="resolution">
        /// A type resolution.
        /// </param>
        /// <param name="cache">
        /// A schema cache.
        /// </param>
        /// <returns>
        /// A <see cref="BooleanSchema" /> that matches the type resolution.
        /// </returns>
        /// <exception cref="ArgumentException">
        /// Thrown when the resolution is not a <see cref="BooleanResolution" />.
        /// </exception>
        public override Schema BuildSchema(TypeResolution resolution, IDictionary <Type, Schema> cache)
        {
            if (!(resolution is BooleanResolution boolean))
            {
                throw new ArgumentException("The boolean case can only be applied to boolean resolutions.", nameof(resolution));
            }

            var schema = new BooleanSchema();

            cache.Add(boolean.Type, schema);

            return(schema);
        }
コード例 #9
0
ファイル: Schema.cs プロジェクト: RagingKore/dotpulsar
 static Schema()
 {
     ByteSequence = new ByteSequenceSchema();
     ByteArray    = new ByteArraySchema();
     String       = StringSchema.UTF8;
     Boolean      = new BooleanSchema();
     Int8         = new ByteSchema();
     Int16        = new ShortSchema();
     Int32        = new IntegerSchema();
     Int64        = new LongSchema();
     Float        = new FloatSchema();
     TimeStamp    = TimestampSchema.Timestamp;
     Date         = TimestampSchema.Date;
     Time         = new TimeSchema();
 }
コード例 #10
0
        public void DynamicBooleanValues(bool value)
        {
            var schema = new BooleanSchema();

            var deserialize = deserializerBuilder.BuildDelegate <dynamic>(schema);
            var serialize   = serializerBuilder.BuildDelegate <dynamic>(schema);

            using (stream)
            {
                serialize(value, new Utf8JsonWriter(stream));
            }

            var reader = new Utf8JsonReader(stream.ToArray());

            Assert.Equal(value, deserialize(ref reader));
        }
コード例 #11
0
 /// <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}."),
         });
コード例 #12
0
        /// <summary>
        /// Builds a <see cref="BooleanSchema" />.
        /// </summary>
        /// <returns>
        /// A successful <see cref="SchemaBuilderCaseResult" /> with a <see cref="BooleanSchema" />
        /// if <paramref name="type" /> is <see cref="bool" />; an unsuccessful
        /// <see cref="SchemaBuilderCaseResult" /> with an <see cref="UnsupportedTypeException" />
        /// otherwise.
        /// </returns>
        /// <inheritdoc />
        public virtual SchemaBuilderCaseResult BuildSchema(Type type, SchemaBuilderContext context)
        {
            if (type == typeof(bool))
            {
                var booleanSchema = new BooleanSchema();

                try
                {
                    context.Schemas.Add(type, booleanSchema);
                }
                catch (ArgumentException exception)
                {
                    throw new InvalidOperationException($"A schema for {type} already exists on the schema builder context.", exception);
                }

                return(SchemaBuilderCaseResult.FromSchema(booleanSchema));
            }
            else
            {
                return(SchemaBuilderCaseResult.FromException(new UnsupportedTypeException(type, $"{nameof(BooleanSchemaBuilderCase)} can only be applied to the {typeof(bool)} type.")));
            }
        }
コード例 #13
0
        public void RecordWithMissingFields()
        {
            var boolean = new BooleanSchema();
            var array   = new ArraySchema(boolean);
            var map     = new MapSchema(new IntSchema());
            var @enum   = new EnumSchema("Ordinal", new[] { "None", "First", "Second", "Third", "Fourth" });
            var union   = new UnionSchema(new Schema[]
            {
                new NullSchema(),
                array,
            });

            var schema = new RecordSchema("AllFields")
            {
                Fields = new[]
                {
                    new RecordField("First", union),
                    new RecordField("Second", union),
                    new RecordField("Third", array),
                    new RecordField("Fourth", array),
                    new RecordField("Fifth", map),
                    new RecordField("Sixth", map),
                    new RecordField("Seventh", @enum),
                    new RecordField("Eighth", @enum),
                },
            };

            var deserialize = deserializerBuilder.BuildDelegate <WithoutEvenFields>(schema);
            var serialize   = serializerBuilder.BuildDelegate <WithEvenFields>(schema);

            var value = new WithEvenFields()
            {
                First = new List <bool>()
                {
                    false
                },
                Second = new List <bool>()
                {
                    false, false
                },
                Third = new List <bool>()
                {
                    false, false, false
                },
                Fourth = new List <bool>()
                {
                    false
                },
                Fifth = new Dictionary <string, int>()
                {
                    { "first", 1 }
                },
                Sixth = new Dictionary <string, int>()
                {
                    { "first", 1 }, { "second", 2 }
                },
                Seventh = ImplicitEnum.First,
                Eighth  = ImplicitEnum.None,
            };

            using (stream)
            {
                serialize(value, new Utf8JsonWriter(stream));
            }

            var reader = new Utf8JsonReader(stream.ToArray());

            Assert.Equal(value.Seventh, deserialize(ref reader).Seventh);
        }
コード例 #14
0
 private void VisitCore(BooleanSchema s)
 {
     s.Serializer = new BooleanSerializer(s);
 }