コード例 #1
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);
        }
コード例 #2
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);
        }
コード例 #3
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);
        }