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); } } }
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()); } }