public void SaveRoundTrips(byte[] saveBytes) { AowMap original = AowMap.FromBytes(saveBytes); AowMap roundTripped = AowMap.FromBytes(original.ToBytes()); roundTripped.Should().BeEquivalentTo(original); }
public void SaveDataSectionRoundTrips(byte[] saveBytes) { MemoryStream compressedSaveStream = new MemoryStream(saveBytes); byte[] originalDataBytes = MapFormatHelper.ReadPreHeaderAndDecompressDataStream(compressedSaveStream).dataStream.ToArray(); AowMap deserializedMap = AowMap.FromBytes(saveBytes); MemoryStream roundTrippedDataStream = new MemoryStream(); AowSerializer <AowMap> mapSerializer = new AowSerializer <AowMap>(hasRootWrapper: true); mapSerializer.Serialize(roundTrippedDataStream, deserializedMap); byte[] roundTrippedDataBytes = roundTrippedDataStream.ToArray(); try { roundTrippedDataBytes.Should().BeEquivalentTo(originalDataBytes); } catch { MapStructureLogger originalLogger = new MapStructureLogger(); _ = mapSerializer.Deserialize(new MemoryStream(originalDataBytes), originalLogger); MapStructureLogger roundTrippedLogger = new MapStructureLogger(); _ = mapSerializer.Deserialize(new MemoryStream(roundTrippedDataBytes), roundTrippedLogger); roundTrippedLogger.RootNode.Should().BeEquivalentTo ( originalLogger.RootNode, cfg => cfg .WithStrictOrdering() .Excluding((IMemberInfo m) => m.SelectedMemberInfo.Name == nameof(MapStructureLogger.Node.Parent)) .AllowingInfiniteRecursion() ); throw; } }