예제 #1
0
        public void SaveRoundTrips(byte[] saveBytes)
        {
            AowMap original     = AowMap.FromBytes(saveBytes);
            AowMap roundTripped = AowMap.FromBytes(original.ToBytes());

            roundTripped.Should().BeEquivalentTo(original);
        }
예제 #2
0
        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;
            }
        }