예제 #1
0
 public void TestReadWrite()
 {
     using (var stream = new MemoryStream())
         using (var encoder = new BinaryEncoder(stream))
             using (var decoder = new BinaryDecoder(stream))
             {
                 _specificWriter.Write(encoder, _writeValue);
                 var expectedPosition = stream.Position;
                 stream.Seek(0, SeekOrigin.Begin);
                 var actualValue = _specificReader.Read(decoder);
                 Assert.AreEqual(_readValue, actualValue);
                 stream.Seek(0, SeekOrigin.Begin);
                 actualValue = _specificReader.Read(decoder, ref actualValue);
                 Assert.AreEqual(_readValue, actualValue);
                 stream.Seek(0, SeekOrigin.Begin);
                 _specificReader.Skip(decoder);
                 Assert.AreEqual(stream.Position, expectedPosition);
             }
 }
예제 #2
0
        public void EnumGenericTest()
        {
            var enumSchema = AvroParser.ReadSchema <EnumSchema>(@"{""name"":""Avro.Test.Generic.TestEnum"",""type"":""enum"",""symbols"":[""A"",""B"",""C""]}");

            var writer = new DatumWriter <GenericEnum>(enumSchema);
            var reader = new DatumReader <GenericEnum>(enumSchema, enumSchema);

            var expectedValue = new GenericEnum(enumSchema, "B");

            using (var stream = new MemoryStream())
                using (var encoder = new BinaryEncoder(stream))
                    using (var decoder = new BinaryDecoder(stream))
                    {
                        writer.Write(encoder, expectedValue);
                        stream.Seek(0, SeekOrigin.Begin);
                        var actualValue = reader.Read(decoder);
                        Assert.AreEqual(expectedValue, actualValue);

                        var expectedPosition = stream.Position;
                        stream.Seek(0, SeekOrigin.Begin);
                        reader.Skip(decoder);
                        Assert.AreEqual(expectedPosition, stream.Position);
                    }
        }