Exemplo n.º 1
0
 public JsonResponseModel ABSave_Deserialize()
 {
     ABSaveResult.Position = 0;
     ABSaveRes             = ABSaveConvert.Deserialize <JsonResponseModel>(ABSaveResult, Map);
     return(null);
     //return null;
 }
Exemplo n.º 2
0
        public void Serialize_ByteArray()
        {
            var map = ABSaveMap.Get <string>(ABSaveSettings.ForSize);

            byte[] arr = ABSaveConvert.Serialize("A", map);
            Assert.AreNotEqual(0, arr.Length);
        }
Exemplo n.º 3
0
        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\u0004­F\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);
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
 //[Benchmark]
 public void ABSave()
 {
     ABSaveResult.Position = 0;
     ABSaveConvert.Serialize(TestObj, Map, ABSaveResult);
 }