public void Deserialize(Stream inStream, long length) { AowSerializer <AowImage> serializer = new AowSerializer <AowImage>(hasRootWrapper: false, forceClassID: true); ImageInfo = serializer.Deserialize(inStream, inStream.Position, length); ImageData = new BinaryReader(inStream).ReadBytes(ImageInfo.DataLength); }
public void Serialize(Stream outStream) { AowSerializer <AowImage> serializer = new AowSerializer <AowImage>(hasRootWrapper: false, forceClassID: true); serializer.Serialize(outStream, ImageInfo); outStream.Write(ImageData, 0, ImageData.Length); }
public static ImageLibrary FromStream(Stream inStream) { AowSerializer <ImageLibrary> serializer = new AowSerializer <ImageLibrary>(); ImageLibrary ilb = serializer.Deserialize(inStream); ilb.DataStream = new MemoryStream(); inStream.CopyTo(ilb.DataStream); return(ilb); }
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; } }