public async Task Test()
        {
            var resolver   = new MockResolveProxyIds();
            var serializer = new DefaultSerializer();

            Assert.IsTrue(serializer.CanSerialize(typeof(DateTime)));

            var values = new[]
            {
                DateTime.MinValue, DateTime.Today, DateTime.Now, DateTime.UtcNow, DateTime.MaxValue
            };

            foreach (var value in values)
            {
                var stream = new MemoryStream();

                using (var writer = new BinaryWriter(stream, Encoding.UTF8, true))
                {
                    await serializer.Serialize(writer, typeof(DateTime), value, resolver).ConfigureAwait(false);
                }

                Console.WriteLine($"Size of {value}: {stream.Length}");

                stream.Position = 0;

                using (var reader = new BinaryReader(stream, Encoding.UTF8, true))
                {
                    var deserializedValue = await serializer.Deserialize(reader, typeof(DateTime), resolver, CancellationToken.None).ConfigureAwait(false);

                    Assert.AreEqual(value, deserializedValue);
                }
            }
        }
        private async Task test <T>(DefaultSerializer serializer, MockResolveProxyIds resolver, params T[] values)
        {
            Assert.IsTrue(serializer.CanSerialize(typeof(T)));

            foreach (var value in values)
            {
                var stream = new MemoryStream();

                using (var writer = new BinaryWriter(stream, Encoding.UTF8, true))
                {
                    await serializer.Serialize(writer, typeof(T), value, resolver).ConfigureAwait(false);
                }

                Console.WriteLine($"Size of {value}: {stream.Length}");

                stream.Position = 0;

                using (var reader = new BinaryReader(stream, Encoding.UTF8, true))
                {
                    var deserializedValue = await serializer.Deserialize(reader, typeof(T), resolver, CancellationToken.None).ConfigureAwait(false);

                    Assert.AreEqual(value, deserializedValue);
                }
            }
        }
Beispiel #3
0
        private async Task test(DefaultSerializer serializer, MockResolveProxyIds resolver, Array value)
        {
            var arrayType = value.GetType();

            Assert.IsTrue(serializer.CanSerialize(arrayType));

            var stream = new MemoryStream();

            using (var writer = new BinaryWriter(stream, Encoding.UTF8, true))
            {
                await serializer.Serialize(writer, arrayType, value, resolver).ConfigureAwait(false);
            }

            Console.WriteLine($"Size of {value}: {stream.Length}");

            stream.Position = 0;

            using (var reader = new BinaryReader(stream, Encoding.UTF8, true))
            {
                var deserializedValue = await serializer.Deserialize(reader, arrayType, resolver, CancellationToken.None).ConfigureAwait(false) as Array;

                Assert.IsNotNull(deserializedValue);
                Assert.AreEqual(value.Rank, deserializedValue.Rank, "Ranks don't match.");
                for (var dimension = 0; dimension < value.Rank; dimension++)
                {
                    Assert.AreEqual(value.GetLength(dimension), deserializedValue.GetLength(dimension), $"Lengths ({dimension}) don't match.");
                    Assert.AreEqual(value.GetLowerBound(dimension), deserializedValue.GetLowerBound(dimension), $"Lower bounds ({dimension}) don't match.");
                    Assert.AreEqual(value.GetUpperBound(dimension), deserializedValue.GetUpperBound(dimension), $"Upper bounds ({dimension}) don't match.");
                }

                var enumerator             = value.GetEnumerator();
                var deserializedEnumerator = deserializedValue.GetEnumerator();

                while (enumerator.MoveNext())
                {
                    Assert.IsTrue(deserializedEnumerator.MoveNext());
                    Assert.AreEqual(enumerator.Current, deserializedEnumerator.Current);
                }
                Assert.IsFalse(deserializedEnumerator.MoveNext());
            }
        }