示例#1
0
            private void CustomizedJsonParsing(string json, Action <object[]> assertAction)
            {
                var parameters     = new object[] { 0, 10, false, null, null };
                var parameterTypes = new[] { typeof(int), typeof(int), typeof(bool), typeof(IEnumerable <SortDescriptor>), typeof(FilterDescriptor) };
                var parameterNames = new Dictionary <string, int> {
                    { "skip", 0 }, { "take", 1 }, { "includeDeleted", 2 }, { "sort", 3 }, { "filter", 4 }
                };

                var serializer = SerializationTestHelper.GetJsonSerializer();

                serializer.PreserveReferences = false;
                serializer.WriteTypeInfo      = false;

                using (var memoryStream = new MemoryStream())
                {
                    var writer = new StreamWriter(memoryStream);
                    writer.Write(json);
                    writer.Flush();

                    memoryStream.Position = 0L;

                    var reader = new StreamReader(memoryStream);
                    using (var jsonReader = new JsonTextReader(reader))
                    {
                        jsonReader.Read();

                        if (jsonReader.TokenType != JsonToken.StartObject)
                        {
                            throw new InvalidOperationException("Input needs to be wrapped in an object");
                        }

                        jsonReader.Read();

                        while (jsonReader.TokenType == JsonToken.PropertyName)
                        {
                            var parameterName = jsonReader.Value as string;

                            jsonReader.Read();
                            int parameterIndex;

                            if ((parameterName != null) && parameterNames.TryGetValue(parameterName, out parameterIndex))
                            {
                                parameters[parameterIndex] = serializer.Deserialize(parameterTypes[parameterIndex], jsonReader, null);
                            }
                            else
                            {
                                jsonReader.Skip();
                            }

                            jsonReader.Read();
                        }
                    }
                }

                assertAction(parameters);
            }
示例#2
0
        private static void TestSerializationOnJsonSerializer(Action <ISerializer, ISerializationConfiguration, string> action,
                                                              bool testWithoutGraphIdsAsWell = true, ISerializationManager serializationManager = null)
        {
            var serializers = new List <ISerializer>();

            serializers.Add(SerializationTestHelper.GetJsonSerializer(serializationManager));

            if (testWithoutGraphIdsAsWell)
            {
                var basicJsonSerializer = SerializationTestHelper.GetJsonSerializer(serializationManager);
                basicJsonSerializer.PreserveReferences = false;
                basicJsonSerializer.WriteTypeInfo      = false;
                serializers.Add(basicJsonSerializer);
            }

            TestSerializationOnSerializers(serializers, action, serializationManager);
        }
 private void TestJsonSerializationWithExpectedFormat(object obj, ISerializationManager serializationManager = null, [CallerMemberName] string name = null)
 {
     TestSerializationWithExpectedFormat(SerializationTestHelper.GetJsonSerializer(serializationManager), name, obj);
 }
示例#4
0
        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 XmlSerializationConfiguration
                {
                    OptimalizationMode = XmlSerializerOptimalizationMode.Performance
                },
                new XmlSerializationConfiguration
                {
                    OptimalizationMode = XmlSerializerOptimalizationMode.PrettyXml
                },
                //new XmlSerializationConfiguration
                //{
                //    OptimalizationMode = XmlSerializerOptimalizationMode.PrettyXmlAgressive
                //},
            });

            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(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);
                }
            }
        }