public async Task SerializationTest( [Values(1, 2, 3)] int count, [Range(0, 100, 25)] int nullsPercentage) { var randoms = new Dictionary <ListNode, int?>(); ListNode cloneNode = null; ListNode previous = null; Task Serialize(int?randomId = null, in string data = null) { var current = new ListNode { Previous = previous, Data = data.DeepCopy() }; if (previous != null) { previous.Next = current; } previous = current; randoms.Add(current, randomId); cloneNode ??= current; return(Task.CompletedTask); } var sourceNode = TestsHelper.GenerateListNode(count, nullsPercentage); await using var stream = Stream.Null; var serializer = TestsHelper.CreateSerializer(writer => Serialize); await serializer.Serialize(sourceNode, stream); RestoreRandoms(randoms); TestsHelper.CheckEqual(sourceNode, cloneNode); }
public async Task DeepCopyTest( [Values(1, 2, 3)] int count, [Range(0, 100, 25)] int nullsPercentage) { var sourceNode = TestsHelper.GenerateListNode(count, nullsPercentage); var serializer = TestsHelper.CreateSerializer(); var cloneNode = await serializer.DeepCopy(sourceNode); TestsHelper.CheckEqual(sourceNode, cloneNode); }
public async Task StreamingTest( [Values(1, 2, 3)] int count, [Range(0, 100, 25)] int nullsPercentage) { var sourceNode = TestsHelper.GenerateListNode(count, nullsPercentage); var serializer = ListSerializerFactory.CreateSerializer(SerializeFactory, DeserializeFactory); await using var stream = new MemoryStream(); await serializer.Serialize(sourceNode, stream); stream.Seek(0, SeekOrigin.Begin); var cloneNode = await serializer.Deserialize(stream); TestsHelper.CheckEqual(sourceNode, cloneNode); }
public async Task DeserializationTest( [Values(1, 2, 3)] int count, [Range(0, 100, 25)] int nullsPercentage) { var sourceNode = TestsHelper.GenerateListNode(count, nullsPercentage); var deserializationInfo = CreateDeserializationInfo(sourceNode); Task Deserialize(DeserializeAction deserialize) { foreach (var nodeInfo in deserializationInfo) { deserialize(nodeInfo.RandomId, nodeInfo.Data); } return(Task.CompletedTask); } await using var stream = Stream.Null; var serializer = TestsHelper.CreateSerializer(reader => Deserialize); var cloneNode = await serializer.Deserialize(stream); TestsHelper.CheckEqual(sourceNode, cloneNode); }