102 lines
3.5 KiB
C#
102 lines
3.5 KiB
C#
//
|
|
// 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 NUnit.Framework;
|
|
using Antmicro.Migrant.Customization;
|
|
using System.IO;
|
|
|
|
namespace Antmicro.Migrant.Tests
|
|
{
|
|
[TestFixture(false, false, true, true)]
|
|
[TestFixture(false, false, true, false)]
|
|
[TestFixture(false, false, false, true)]
|
|
[TestFixture(false, false, false, false)]
|
|
[TestFixture(false, true, true, true)]
|
|
[TestFixture(false, true, true, false)]
|
|
[TestFixture(false, true, false, true)]
|
|
[TestFixture(false, true, false, false)]
|
|
[TestFixture(true, false, true, true)]
|
|
[TestFixture(true, false, true, false)]
|
|
[TestFixture(true, false, false, true)]
|
|
[TestFixture(true, false, false, false)]
|
|
[TestFixture(true, true, true, true)]
|
|
[TestFixture(true, true, true, false)]
|
|
[TestFixture(true, true, false, true)]
|
|
[TestFixture(true, true, false, false)]
|
|
public class StampingTests
|
|
{
|
|
public StampingTests(bool useGeneratedSerialization, bool useGeneratedDeserialization, bool serializeWithStamps, bool deserializeWithStamps)
|
|
{
|
|
this.serializeWithStamps = serializeWithStamps;
|
|
this.deserializeWithStamps = deserializeWithStamps;
|
|
this.useGeneratedSerialization = useGeneratedSerialization;
|
|
this.useGeneratedDeserialization = useGeneratedDeserialization;
|
|
}
|
|
|
|
[Test]
|
|
public void ShouldDetectStreamInconsistentConfiguration()
|
|
{
|
|
var obj = new TestClass();
|
|
var mstream = new MemoryStream();
|
|
var serializer = CreateSerializer();
|
|
serializer.Serialize(obj, mstream);
|
|
mstream.Seek(0, SeekOrigin.Begin);
|
|
var deserializer = CreateDeserializer();
|
|
try
|
|
{
|
|
deserializer.Deserialize<TestClass>(mstream);
|
|
if(serializeWithStamps != deserializeWithStamps)
|
|
{
|
|
Assert.Fail("Should not deserialize when stream configuration is inconsistent.");
|
|
}
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
if(serializeWithStamps == deserializeWithStamps)
|
|
{
|
|
Console.WriteLine(e.Message);
|
|
Assert.Fail("Should deserialize when stream configuration is correct.");
|
|
}
|
|
}
|
|
}
|
|
|
|
private Serializer CreateSerializer()
|
|
{
|
|
return new Serializer(new Settings(
|
|
useGeneratedSerialization ? Method.Generated : Method.Reflection,
|
|
disableTypeStamping: !serializeWithStamps));
|
|
}
|
|
|
|
private Serializer CreateDeserializer()
|
|
{
|
|
return new Serializer(new Settings(
|
|
deserializationMethod: useGeneratedDeserialization ? Method.Generated : Method.Reflection,
|
|
disableTypeStamping: !deserializeWithStamps));
|
|
}
|
|
|
|
private readonly bool serializeWithStamps;
|
|
private readonly bool deserializeWithStamps;
|
|
private readonly bool useGeneratedSerialization;
|
|
private readonly bool useGeneratedDeserialization;
|
|
|
|
private class TestClass
|
|
{
|
|
public TestClass()
|
|
{
|
|
number = DateTime.Now.Millisecond;
|
|
obj = this;
|
|
}
|
|
|
|
#pragma warning disable 414
|
|
private readonly int number;
|
|
private readonly TestClass obj;
|
|
#pragma warning restore 414
|
|
}
|
|
}
|
|
}
|
|
|