public static void AssertSimplTypesEqual(object left, object right, string message = "Issues with de/serialization! ") { var comparisonIssues = TestMethods.CompareOriginalObjectToDeserializedObject(left, right); if (comparisonIssues.Any()) { Assert.Fail(message + " Errors were: \r\n" + String.Join("\r\n", comparisonIssues.Select(issue => issue.ToString()))); } }
/// <summary> /// Helper methods to test de/serialization of and input object and simpl type scope in particular format /// </summary> /// <param name="originalObject">Original object</param> /// <param name="simplTypesScope">Type scope to attempt serialization and deserializaton</param> /// <param name="format">Format to de/serialize in</param> public static void TestSimplObject(Object originalObject, SimplTypesScope simplTypesScope, Format format) { Console.WriteLine("Serializing object " + originalObject); Console.WriteLine("-----------------------------------------------------------------------------"); HelperStream originalStream = TestSerialization(originalObject, format); Console.WriteLine(); Object deserializedObj = TestDeserialization(simplTypesScope, originalStream, format); TestMethods.AssertSimplTypesEqual(originalObject, deserializedObj); Console.WriteLine("Deserialized object " + deserializedObj); Console.WriteLine("-----------------------------------------------------------------------------"); HelperStream deserializedReserializedStream = TestSerialization(deserializedObj, format); }
/// <summary> /// Prints a dictionary to a string /// </summary> /// <param name="dict">Dictionary to print</param> /// <returns>A string representation of the dictionary</returns> private string PrintDictionary(IDictionary dict) { StringBuilder sb = new StringBuilder("["); foreach (DictionaryEntry de in TestMethods.getOrderedEntries(dict)) { // Preferred syntax: [ {key, value}, {key, value} ] sb.Append(String.Format("{{ {0} , ", de.Key.ToString())); sb.Append(PrintCollectionsOrObjects(de.Value)); sb.Append("}}, "); } sb.Append("]"); return(sb.ToString()); }
/// <summary> /// Prints an object that could be an object, a collection or a map. /// </summary> /// <param name="obj">Object to print</param> /// <returns>string rep of the object. </returns> private string PrintCollectionsOrObjects(object obj) { if (obj is IDictionary) { return(PrintDictionary(obj as IDictionary)); } if (obj is IList) { return(PrintList(obj as IList)); } var simplValues = TestMethods.GetSimplValuesInObject(obj); if (simplValues.Any()) { var sb = new StringBuilder(); foreach (var kvp in simplValues) { var valueString = kvp.Value.ToString(); if (kvp.Value is IDictionary) { valueString = PrintDictionary(kvp.Value as IDictionary); } if (kvp.Value is IList) { valueString = PrintList(kvp.Value as IList); } sb.AppendFormat("{0} = {1}\r\n", kvp.Key.Name, kvp.Value.ToString()); } return(sb.ToString()); } else { return(obj.ToString()); } }