仿真平台内核初版 -tlib库 包含<sparc arm riscv powerPC>
This commit is contained in:
64
lib/Migrant/Tests/BaseTestWithSettings.cs
Normal file
64
lib/Migrant/Tests/BaseTestWithSettings.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
//
|
||||
// Copyright (c) 2012-2021 Antmicro
|
||||
//
|
||||
// This file is licensed under the MIT License.
|
||||
// Full license text is available in the LICENSE file.
|
||||
|
||||
using System;
|
||||
using Antmicro.Migrant.Customization;
|
||||
using System.IO;
|
||||
|
||||
namespace Antmicro.Migrant.Tests
|
||||
{
|
||||
public abstract class BaseTestWithSettings
|
||||
{
|
||||
protected BaseTestWithSettings(bool useGeneratedSerializer, bool useGeneratedDeserializer, bool treatCollectionsAsUserObjects, bool supportForISerializable,
|
||||
bool supportForIXmlSerializable, bool useTypeStamping, bool forceStampVerification)
|
||||
{
|
||||
this.useGeneratedSerializer = useGeneratedSerializer;
|
||||
this.useGeneratedDeserializer = useGeneratedDeserializer;
|
||||
this.treatCollectionsAsUserObjects = treatCollectionsAsUserObjects;
|
||||
this.supportForISerializable = supportForISerializable;
|
||||
this.supportForIXmlSerializable = supportForIXmlSerializable;
|
||||
this.useTypeStamping = useTypeStamping;
|
||||
this.forceStampVerification = forceStampVerification;
|
||||
}
|
||||
|
||||
protected Settings GetSettings(VersionToleranceLevel level = 0)
|
||||
{
|
||||
return new Settings(useGeneratedSerializer ? Method.Generated : Method.Reflection,
|
||||
useGeneratedDeserializer ? Method.Generated : Method.Reflection,
|
||||
level,
|
||||
supportForISerializable,
|
||||
supportForIXmlSerializable,
|
||||
treatCollectionsAsUserObjects,
|
||||
disableTypeStamping: !useTypeStamping,
|
||||
forceStampVerification: forceStampVerification);
|
||||
}
|
||||
|
||||
protected T SerializerClone<T>(T toClone)
|
||||
{
|
||||
return Serializer.DeepClone(toClone, GetSettings());
|
||||
}
|
||||
|
||||
// pseudo, because cloned object can be/can contain different type due to surrogate operations
|
||||
protected object PseudoClone(object obj, Action<Serializer> actionsBeforeSerilization)
|
||||
{
|
||||
var serializer = new Serializer(GetSettings());
|
||||
actionsBeforeSerilization(serializer);
|
||||
var mStream = new MemoryStream();
|
||||
serializer.Serialize(obj, mStream);
|
||||
mStream.Seek(0, SeekOrigin.Begin);
|
||||
return serializer.Deserialize<object>(mStream);
|
||||
}
|
||||
|
||||
protected readonly bool useGeneratedSerializer;
|
||||
|
||||
private readonly bool useGeneratedDeserializer;
|
||||
private readonly bool treatCollectionsAsUserObjects;
|
||||
private readonly bool supportForISerializable;
|
||||
private readonly bool supportForIXmlSerializable;
|
||||
private readonly bool useTypeStamping;
|
||||
private readonly bool forceStampVerification;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user