public void TestSerializeDeserializeObject()
        {
            //CreateDeserializerOnly a new AvroSerializer instance and specify a custom serialization strategy AvroDataContractResolver
            //for serializing only properties attributed with DataContract/DateMember
            var settings = new AvroSerializerSettings();
            var avroSerializer = AvroSerializer.Create<SensorData>(settings);

            //CreateDeserializerOnly a new buffer
            using (var buffer = new MemoryStream())
            {
                //CreateDeserializerOnly sample data
                var expected = new SensorData { Value = new byte[] { 1, 2, 3, 4, 5 }, Position = new Location { Room = 243, Floor = 1 } };

                //Serialize the data to the specified stream
                avroSerializer.Serialize(buffer, expected);

                //Prepare the stream for deserializing the data
                buffer.Seek(0, SeekOrigin.Begin);

                //Derserialize data from the stream and cast it to the same type used for serialization
                var actual = avroSerializer.Deserialize(buffer);

                //Finally, verify that deserialized data matches the original ones
                Assert.IsTrue(this.Equal(expected, actual));
            }
        }
 private bool Equal(SensorData left, SensorData right)
 {
     return(left.Position.Equals(right.Position) && left.Value.SequenceEqual(right.Value));
 }
 private bool Equal(SensorData left, SensorData right)
 {
     return left.Position.Equals(right.Position) && left.Value.SequenceEqual(right.Value);
 }