public JsonResponseModel ABSave_Deserialize() { ABSaveResult.Position = 0; ABSaveRes = ABSaveConvert.Deserialize <JsonResponseModel>(ABSaveResult, Map); return(null); //return null; }
public void Serialize_ByteArray() { var map = ABSaveMap.Get <string>(ABSaveSettings.ForSize); byte[] arr = ABSaveConvert.Serialize("A", map); Assert.AreNotEqual(0, arr.Length); }
public void Deserialize_ByteArray() { var map = ABSaveMap.Get <string>(ABSaveSettings.ForSize); byte[] arr = ABSaveConvert.Serialize("A", map); Assert.AreEqual("A", ABSaveConvert.Deserialize <string>(arr, map)); }
public void SerializeABSave_ComplexObject() { // Act var result = ABSaveConvert.ObjectToABSaveDocument(ComplexSerializeTestClass.TestInstance, ABSaveType.NoNames, new ABSaveSettings()); // Assert Assert.AreEqual("U\u0001\u0004ABSoftware.ABSave.Tests.UnitTests.TestObjects.Solar_System,ABSoftware.ABSave.Tests.UnitTests\0\0\u0003Milky Way\u0004ABSoftware.ABSave.Tests.UnitTests.TestObjects.Planet,ABSoftware.ABSave.Tests.UnitTests\u0001\0\u0003Mercury\u0004ABSoftware.ABSave.Tests.UnitTests.TestObjects.Animal,ABSoftware.ABSave.Tests.UnitTests\u0002\0\u0003Firefox\u0001Can survive ultra-high temperatures. Loves digging holes.\u0001\u0017\u0005\u0002\0\u0003AShift\u0001Shifts in and out of existence.\b\u0003 \u0086\u0001\u0005\u0002\0\u0003Unknown\u0001Unknown\0\u0005\u0002\0\u0003Unknown #2\u0001Unknown #2\0\u0005\u0005\u0004ABSoftware.ABSave.Tests.UnitTests.TestObjects.Building,ABSoftware.ABSave.Tests.UnitTests\u0003\0\u0003Big Hole\u0001Somewhere\u0001ABSoftware.ABSave.Tests.UnitTests.TestObjects.Company,ABSoftware.ABSave.Tests.UnitTests\u0004\0\u0003Unknown\0\0\0\u0005\b\b\0\0\0\0\0\u0088Ã@\b\a\0@,¯¯~\u0001\u0005\u0005\u0006ABSoftware.ABSave.Tests.UnitTests.TestObjects.WorkSite\u0001\u0003\0\u0003Biggest ever hole\u0001Somewhere Else\u0001\u0004\0\u0003Unknown\u0001\u0001\u0001\u0002\0\u0005\b\b\0\0\0\0\u0084×\u0097A\b\b\0@XÚyuÂ\b\u0001\0\u0003Earth\u0004\u0002\0\u0003Human\u0001Some mysterious creature that only humans (and maybe dolphins ;) ) know about.\b\u0004°·\u0094\u0003\u0005\u0002\0\u0003Cat\u0001Cat Videos.\u0001d\u0005\u0005\u0004\u0003\0\u0003The Shard\u000132 London Bridge Street, London SE1 9SG\u0001\u0004\0\u0003Stella Property\b\u0005\0\u0010¥Ôè\b\u0003 \u0086\u0001\b\b\0\00qJaÈ\b\u0005\b\bffff&\u0088Ã@\b\b\0@UA¡R¥\b\u0005\u0003\0\u0003Unnamed\u000125 London Bridge Street, London XYZ XYZ\u0001\u0004\0\u0003Elegantly Small\b\u0004F\u0097>\u0001I\b\b\0\u0080ìÚÃ\bÅ\b\u0005\b\bo\u0012\u0083ÀÊ¡[@\b\b\0@#îßYÆ\b\u0005\u0003\0\u0003Simply Square\u0001176 XYZ Street, London XYZ ZYX\u0001\u0004\0\u0003SimplBuild\u0001\u0099\u0001\u0003\b\b\0À\u0097»#dÔ\b\u0005\b\bHáz\u0014®\an@\b\b\0ÀJ\n\u007f\u0013È\b\u0005\u0005\u0006ABSoftware.ABSave.Tests.UnitTests.TestObjects.WorkSite\u0001\u0003\0\u0003BrickShard\u00012521463 London Bridge Street, London XXZ XXZ\u0001\u0004\0\u0003Stella Property, Bigger, Better\b\b+\u0017îdxEc\u0001\b\u0003 \u0086\u0001\b\b\0À0¨Ô\u0097Ó\b\u0005\b\b33333Ø¢@\0\u0001ABSoftware.ABSave.Tests.UnitTests.TestObjects.WorkSite\u0001\u0003\0\u0003SimplLarge HQ\u000154321 London Bridge Street, London ZYY XXZ\u0001\u0004\0\u0003Stella Property, Bigger, Better\b\b+\0d§³¶à\r\b\u0003 \u0086\u0001\b\b\0À0¨Ô\u0097Ó\b\u0005\b\b33333Ø¢@\0", result); }
public void SerializeABSave_SaveObject_Named_NoTypes() { // Arrange var testClass = new MultiObjectTest(); // Act var result = ABSaveConvert.ObjectToABSaveDocument(testClass, ABSaveType.WithNames, new ABSaveSettings(false)); // Assert Assert.AreEqual("M\u0001Str\u0001hmmmm, ok\u0001InnerArr\u0004\u0003OK\u0001$\u0005\u0003OK\u0001\u0019\u0005\u0005Inner\u0003OK\a\u001c\u000e", result); }
public void SerializeABSave_SaveObject_Named() { // Arrange var testClass = new MultiObjectTest(); // Act var result = ABSaveConvert.ObjectToABSaveDocument(testClass, ABSaveType.WithNames, new ABSaveSettings()); // Assert Assert.AreEqual("N\u0001Str\u0001hmmmm, ok\u0001InnerArr\u0004ABSoftware.ABSave.Tests.UnitTests.TestObjects.MultiObjectInner,ABSoftware.ABSave.Tests.UnitTests\0\0\u0003OK\u0001$\u0005\0\0\u0003OK\u0001\u0019\u0005\u0005Inner\0\0\u0003OK\a\u001c\u000e", result); }
public void SerializeABSave_NAMEDSaveObject() { // Arrange var testClass = new TestClass(); // Act var result = ABSaveConvert.ObjectToABSaveDocument(testClass, ABSaveType.WithNames, new ABSaveSettings()); // Assert Assert.AreEqual("N\u0001str\u0001Oh, Hello!\u0001i\am\u0001\u0001nextCl\u0001ABSoftware.ABSave.Tests.UnitTests.TestObjects.NextClass,ABSoftware.ABSave.Tests.UnitTests\0\0\u0003yoy\u0001F\u0005lstOfStr\u0004FirstStr\u0001SecondStr", result); }
/// <summary> /// Serializes an object, by using <see cref="ABSaveConvert"/>, but some extras. /// </summary> /// <param name="obj">The object to serialize manually.</param> /// <param name="objType">The type of the object to serialize manually.</param> /// <param name="useSB">Whether this will write to a string builder (if true), or return a string (if false).</param> /// <param name="sb">The StringBuilder to write to - if <paramref name="useSB"/> is true.</param> /// <param name="dnWriteEndLevel">"Do Not Write End Level Symbol" - Marks whether to NOT write \u0005 (if true), commonly used for the last object of all.</param> /// <param name="settings">The settings for how to handle certain parts.</param> /// <returns>If <paramref name="useSB"/> is false, this method will return the result as a string.</returns> public static string SerializeObject(object obj, ABSaveType type, Type objType, ABSaveSettings settings, bool writeNextInstructionSymbol = true, bool useSB = false, StringBuilder sb = null, bool dnWriteEndLevel = false) { // Create a variable to store what we'll return - if we aren't using a StringBuilder. var ret = ""; // First, write a "next step" symbol. ret += ABSaveWriter.WriteNextItem(writeNextInstructionSymbol, useSB, sb); // Next, serialize the type that goes before it. ret += SerializeTypeBeforeObject(objType, settings, useSB, sb); // Then, write the opening (\u0003) for the object. ret += ABSaveWriter.WriteObjectOpen(useSB, sb); // And, write the actual object, use the correct method for either string or for a StringBuilder. ret += ABSaveConvert.ObjectToABSave(obj, type, settings, useSB, sb); // Finally, write the ending for the object. ret += ABSaveWriter.WriteObjectClose(dnWriteEndLevel, useSB, sb); // Now, "ret" would be empty if we were using a StringBuilder, however, if we weren't... It will have the correct string in it so return it. return(ret); }
private void Form1_Load(object sender, EventArgs e) { var dtimeobj = new DateTime(2024, 4, 21, 7, 54, 32, 242); var dtimeres = ABSoftware.ABSave.Serialization.ABSaveSerializer.SerializeDateTime(dtimeobj); var testDict = new Dictionary <string, string>() { { "FirstKey", "FirstValue" }, { "SecondKey", "SecondValue" } }; // Act var result = ABSoftware.ABSave.Serialization.ABSaveSerializer.SerializeDictionary(testDict, ABSaveType.NoNames, new ABSaveSettings()); TestClass test = new TestClass(); textBox1.Text = ABSaveConvert.ObjectToABSave(test, ABSaveType.NoNames, new ABSaveSettings()); var testClass = new ComplexSerializeTestClass() { SolarSystems = new List <Solar_System>() { new Solar_System() { Name = "Milky Way", Planets = new List <Planet>() { new Planet() { Name = "Mercury", Animals = new List <Animal>() { new Animal() { Name = "Firefox", Description = "Can survive ultra-high temperatures. Loves digging holes.", IQ = 23 }, new Animal() { Name = "AShift", Description = "Shifts in and out of existence.", IQ = 100000 }, new Animal() { Name = "Unknown", Description = "Unknown", IQ = 0 }, new Animal() { Name = "Unknown #2", Description = "Unknown #2", IQ = 0 } }, Buildings = new List <Building>() { new Building() { Name = "Big Hole", Address = "Somewhere", CreationTime = new DateTime(2, 5, 3), Height = 10000d, Owner = new Company() { Name = "Unknown", Value = 0, CreationTime = new DateTime(0), Workers = 0 } } }, Worksites = new Dictionary <WorkSite, Building>() { { new WorkSite() { Name = "Firefox + AShift Work", MaterialCost = 1d, BuildingWorkCost = 1d, Owner = new Company() { Name = "Firefox + AShift", CreationTime = new DateTime(1874, 3, 8), Value = 1, Workers = 2 } }, new Building() { Name = "Biggest ever hole", Height = 100000000d, Address = "Somewhere Else", CreationTime = new DateTime(2001, 3, 8), Owner = new Company() { Name = "Unknown", CreationTime = new DateTime(0), Value = 1, Workers = 2 } } } } }, new Planet() { Name = "Earth", Animals = new List <Animal>() { new Animal() { Name = "Human", Description = "Some mysterious creature that only humans (and maybe dolphins ;) ) know about.", IQ = 60078000 }, new Animal() { Name = "Cat", Description = "Cat Videos.", IQ = 100 } }, Buildings = new List <Building>() { new Building() { Name = "The Shard", // NOTE: The Creation time and height of this was made up. Address = "32 London Bridge Street, London SE1 9SG", Height = 10000.3d, Owner = new Company() { Name = "Stella Property", CreationTime = new DateTime(2006, 6, 19), Value = 1000000000000, Workers = 100000 }, CreationTime = new DateTime(1975, 3, 13) }, new Building() { Name = "Unnamed", Address = "25 London Bridge Street, London XYZ XYZ", Height = 110.528d, Owner = new Company() { Name = "Elegantly Small", CreationTime = new DateTime(2003, 6, 25), Value = 1050101421, Workers = 73 }, CreationTime = new DateTime(2004, 8, 27) }, new Building() { Name = "Simply Square", Address = "176 XYZ Street, London XYZ ZYX", Height = 240.24d, Owner = new Company() { Name = "SimplBuild", CreationTime = new DateTime(2017, 3, 6), Value = 153, Workers = 3 }, CreationTime = new DateTime(2006, 3, 12) } }, Worksites = new Dictionary <WorkSite, Building>() { { new WorkSite() { Name = "BrickBuild's Third Success", BuildingWorkCost = 96.2d, MaterialCost = 231d, Owner = new Company() { Name = "BrickBuild", CreationTime = new DateTime(2004, 2, 23), Value = 1328, Workers = 2 } }, new Building() { Name = "BrickShard", Address = "2521463 London Bridge Street, London XXZ XXZ", Height = 2412.1d, Owner = new Company() { Name = "Stella Property, Bigger, Better", CreationTime = new DateTime(2016, 6, 19), Value = 100000000124000043, Workers = 100000 } } }, { new WorkSite() { Name = "SimplLarge HQ BuildSite", BuildingWorkCost = 964367326.222d, MaterialCost = 2313623d, Owner = new Company() { Name = "SimplLarge", CreationTime = new DateTime(2006, 8, 20), Value = 132, Workers = 54 } }, new Building() { Name = "SimplLarge HQ", Address = "54321 London Bridge Street, London ZYY XXZ", Height = 2412.1d, Owner = new Company() { Name = "Stella Property, Bigger, Better", CreationTime = new DateTime(2016, 6, 19), Value = 1000000000000000043, Workers = 100000 } } } } } } } } }; textBox1.Text = ABSaveConvert.ObjectToABSave(testClass, ABSaveType.NoNames, new ABSaveSettings()); //IDictionary<string, string> dict = new Dictionary<string, string>() { { "Key1", "Value1" }, { "Key2", "Value2"} }; //textBox1.Text = ABSoftware.ABSave.Serialization.ABSaveSerializer.Serialize(dict as IDictionary<string, string>, ABSaveType.WithNames); ////textBox1.Text = ABSaveConvert.SerializeABSave(new TestClass(), ABSaveType.WithOutNames); //// EXCEPTION TESTING: //var errHandler = new ABSoftware.ABSave.Exceptions.Base.ABSaveErrorHandler(ABSoftware.ABSave.Exceptions.Base.ABSaveError.InferTypeWhenSerializing); //errHandler.ErrorEncountered += (e2) => //{ // MessageBox.Show(e2.ToString()); //}; //var maybe = ABSaveConvert.DeserializeABSave<UltimateTestClass>("UF\u0001Great\u00014727\u0001Str\u0001YES!YES!YES!", ABSaveType.WithNames); //var result2 = ABSaveDeserializer.Deserialize(ABSaveWriter.WriteType(typeof(TestClass)), typeof(TestClass), out ABSavePrimitiveType type, out bool parse); //MessageBox.Show(ABSoftware.ABSave.Serialization.ABSaveSerializer.Serialize(result2, ABSaveType.WithOutNames)); //textBox1.Text = ABSaveConvert.SerializeABSave(new MultiObjectTest(), ABSaveType.WithNames); //var instance = ABSaveUtils.CreateInstance<UltimateTestClass>(errHandler, new Dictionary<string, object>() { { "Great", 4 } }); //MessageBox.Show(instance.ToString()); //var atest = new Dictionary<string, string>() //{ // { "FirstKey", "FirstValue" }, // { "SecondKey", "SecondValue" } //}; //// Act //var aresult = ABSoftware.ABSave.ABSaveSerializer.SerializeDictionary(atest, ABSaveSerializeType.WithOutNames); //// Assert //textBox1.Text = aresult; DebugParser(); NumberExperimenting(); }
//[Benchmark] public void ABSave() { ABSaveResult.Position = 0; ABSaveConvert.Serialize(TestObj, Map, ABSaveResult); }