private static void TestSerializationOnAllSerializers(Action<ISerializer, ISerializationConfiguration, string> action,
bool testWithoutGraphIdsAsWell = true, ISerializationManager serializationManager = null)
{
if (serializationManager == null)
{
serializationManager = new SerializationManager();
}
var serializerConfigurations = new Dictionary<Type, List<ISerializationConfiguration>>();
serializerConfigurations[typeof(XmlSerializer)] = new List<ISerializationConfiguration>(new[]
{
new SerializationConfiguration()
});
serializerConfigurations[typeof(BinarySerializer)] = new List<ISerializationConfiguration>(new[]
{
new SerializationConfiguration()
});
serializerConfigurations[typeof(JsonSerializer)] = new List<ISerializationConfiguration>(new[]
{
new JsonSerializationConfiguration
{
UseBson = false
},
new JsonSerializationConfiguration
{
UseBson = true
},
});
var serializers = new List<ISerializer>();
serializers.Add(SerializationTestHelper.GetXmlSerializer(XmlSerializerOptimalizationMode.Performance, serializationManager));
serializers.Add(SerializationTestHelper.GetXmlSerializer(XmlSerializerOptimalizationMode.PrettyXml, serializationManager));
serializers.Add(SerializationTestHelper.GetBinarySerializer(serializationManager));
serializers.Add(SerializationTestHelper.GetJsonSerializer(serializationManager));
if (testWithoutGraphIdsAsWell)
{
var basicJsonSerializer = SerializationTestHelper.GetJsonSerializer(serializationManager);
basicJsonSerializer.PreserveReferences = false;
basicJsonSerializer.WriteTypeInfo = false;
serializers.Add(basicJsonSerializer);
}
foreach (var serializer in serializers)
{
var type = serializer.GetType();
var typeName = type.GetSafeFullName(false);
var configurations = serializerConfigurations[type];
foreach (var configuration in configurations)
{
Log.Info();
Log.Info();
Log.Info();
Log.Info("=== TESTING SERIALIZER: {0} ===", typeName);
Log.Info();
Log.Info();
Log.Info();
action(serializer, configuration, typeName);
}
}
}
}