public void TestOwnFormatter()
        {
            A classA = new A(null, "KlasaA", 2);
            B classB = new B(null, "KlasaB", 1);
            C classC = new C(null, "KlasaC", new DateTime(2020, 10, 10));

            classA._classB = classB;
            classB._classC = classC;
            classC._classA = classA;

            OwnFormatter formatter = new OwnFormatter();

            using (Stream stream = File.Open("ownSerializ.txt", FileMode.Create, FileAccess.ReadWrite))
            {
                formatter.Serialize(stream, classA);
            }

            A classACopy;

            using (Stream stream = File.Open("ownSerializ.txt", FileMode.Open, FileAccess.Read))
            {
                classACopy = (A)formatter.Deserialize(stream);
            }

            Assert.AreSame(classACopy._classB._classC._classA, classACopy);
        }
Example #2
0
        public void ClassADeserializationATest()
        {
            ClassA classA = new ClassA(1.2f, new DateTime(1997, 1, 1, 0, 0, 0), "TestA", null);
            ClassB classB = new ClassB(2.2f, new DateTime(1997, 2, 1, 0, 0, 0), "testB", null);
            ClassC classC = new ClassC(3.2f, new DateTime(1997, 3, 1, 0, 0, 0), "testC", null);

            classA.ClassBProperty = classB;
            classB.ClassCProperty = classC;
            classC.ClassAProperty = classA;

            using (FileStream s = new FileStream("test.txt", FileMode.Create))
            {
                IFormatter f = new OwnFormatter();
                f.Serialize(s, classA);
            }

            using (FileStream s = new FileStream("test.txt", FileMode.Open))
            {
                IFormatter f         = new OwnFormatter();
                ClassA     testClass = (ClassA)f.Deserialize(s);
                Assert.IsTrue(testClass.ClassBProperty.ClassCProperty.ClassAProperty == testClass);
            }

            File.Delete("test.txt");
        }
Example #3
0
        public void OwnFormatterTest()
        {
            A deserializaedA;
            C c = new C("Klasa C", 2.786F, DateTime.Now, null);
            A a = new A("Klasa A", 3.444545454F, DateTime.Now, c);
            B b = new B("Klasa B", 0.545454F, DateTime.Now, a);

            c.B = b;

            string       filename  = "own_serialization.dat";
            OwnFormatter formatter = new OwnFormatter();

            File.Delete(filename);
            Stream stream = File.Open(filename, FileMode.Create, FileAccess.ReadWrite);

            formatter.Serialize(stream, a);
            stream.Close();


            Stream streamDeserialize = File.Open(filename, FileMode.Open, FileAccess.Read);

            deserializaedA = (A)formatter.Deserialize(streamDeserialize);
            streamDeserialize.Close();

            Assert.AreEqual(a.Name, deserializaedA.Name);
            Assert.AreEqual(3.44f, deserializaedA.Number);
            Assert.AreEqual(a.Date.Date, deserializaedA.Date.Date);

            C cRef = deserializaedA.C;

            Assert.AreEqual(c.Name, cRef.Name);
            Assert.AreEqual(2.79f, cRef.Number);
            Assert.AreEqual(c.Date.Date, cRef.Date.Date);

            B bRef = cRef.B;

            Assert.AreEqual(b.Name, bRef.Name);
            Assert.AreEqual(0.55f, bRef.Number);
            Assert.AreEqual(b.Date.Date, bRef.Date.Date);

            Assert.AreEqual(bRef.A, deserializaedA);
        }
Example #4
0
        public void ClassCSerializationTest()
        {
            ClassA classA = new ClassA(1.2f, new DateTime(1997, 1, 1, 0, 0, 0), "TestA", null);
            ClassB classB = new ClassB(2.2f, new DateTime(1997, 2, 1, 0, 0, 0), "testB", null);
            ClassC classC = new ClassC(3.2f, new DateTime(1997, 3, 1, 0, 0, 0), "testC", null);

            classA.ClassBProperty = classB;
            classB.ClassCProperty = classC;
            classC.ClassAProperty = classA;

            using (FileStream s = new FileStream("test.txt", FileMode.Create))
            {
                IFormatter f = new OwnFormatter();
                f.Serialize(s, classC);
            }

            string result = File.ReadAllText("test.txt");

            Assert.AreEqual(result, "ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null|ClassLibrary.ClassC|1|System.Single=FloatProperty=3.20|System.DateTime=DateTimeProperty=28.02.1997 23:00:00|System.String=StringProperty=\"testC\"|ClassLibrary.ClassA=ClassAProperty=2\n"
                            + "ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null|ClassLibrary.ClassA|2|System.Single=FloatProperty=1.20|System.DateTime=DateTimeProperty=31.12.1996 23:00:00|System.String=StringProperty=\"TestA\"|ClassLibrary.ClassB=ClassBProperty=3\n"
                            + "ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null|ClassLibrary.ClassB|3|System.Single=FloatProperty=2.20|System.DateTime=DateTimeProperty=31.01.1997 23:00:00|System.String=StringProperty=\"testB\"|ClassLibrary.ClassC=ClassCProperty=1\n"
                            );
            File.Delete("test.txt");
        }
        static void Main(string[] args)
        {
            string choice;

            do
            {
                Console.Clear();
                Console.WriteLine("Insert \"xml\" or \"own\"\n(press any key to exit)");
                choice = Console.ReadLine();
                if (choice == "xml")
                {
                    #region "XmlSerialization"
                    Console.WriteLine("Insert \"s\" - serialize or \"d\" - deserialize");
                    string choice2 = Console.ReadLine();
                    switch (choice2)
                    {
                    case "s":
                        ClassAPrim classAPrim = new ClassAPrim(1.2f, new DateTime(1997, 1, 1, 0, 0, 0), "TestA", null);
                        ClassBPrim classBPrim = new ClassBPrim(2.2f, new DateTime(1997, 2, 1, 0, 0, 0), "testB", null);
                        ClassCPrim classCPrim = new ClassCPrim(3.2f, new DateTime(1997, 3, 1, 0, 0, 0), "testC", null);

                        classAPrim.ClassBProperty = classBPrim;
                        classBPrim.ClassCProperty = classCPrim;
                        classCPrim.ClassAProperty = classAPrim;

                        Console.WriteLine("Insert \"A\" - serialize ClassA, \"B\" - serialize ClassB or \"C\" - serialize ClassC");
                        choice2 = Console.ReadLine();
                        switch (choice2)
                        {
                        case "A":
                            XmlSerialization <ClassAPrim> xmlClassA = new XmlSerialization <ClassAPrim>("xml-a.xml", classAPrim);
                            xmlClassA.serialize();
                            break;

                        case "B":
                            XmlSerialization <ClassBPrim> xmlClassB = new XmlSerialization <ClassBPrim>("xml-b.xml", classBPrim);
                            xmlClassB.serialize();
                            break;

                        case "C":
                            XmlSerialization <ClassCPrim> xmlClassC = new XmlSerialization <ClassCPrim>("xml-c.xml", classCPrim);
                            xmlClassC.serialize();
                            break;

                        default:
                            Console.WriteLine("Invalid input!");
                            break;
                        }
                        break;

                    case "d":
                        Console.WriteLine("Insert \"A\" - deserialize ClassA, \"B\" - deserialize ClassB or \"C\" - deserialize ClassC");
                        choice2 = Console.ReadLine();
                        switch (choice2)
                        {
                        case "A":
                            XmlSerialization <ClassAPrim> xmlClassA = new XmlSerialization <ClassAPrim>("xml-a.xml", new ClassAPrim());
                            ClassAPrim deserializedClassA           = xmlClassA.deserialize();
                            if (deserializedClassA.ClassBProperty.ClassCProperty.ClassAProperty == deserializedClassA)
                            {
                                Console.WriteLine("Deserialization is completed!");
                            }
                            else
                            {
                                Console.WriteLine("Deserialization is failed!");
                            }
                            break;

                        case "B":
                            XmlSerialization <ClassBPrim> xmlClassB = new XmlSerialization <ClassBPrim>("xml-b.xml", new ClassBPrim());
                            ClassBPrim deserializedClassB           = xmlClassB.deserialize();
                            if (deserializedClassB.ClassCProperty.ClassAProperty.ClassBProperty == deserializedClassB)
                            {
                                Console.WriteLine("Deserialization is completed!");
                            }
                            else
                            {
                                Console.WriteLine("Deserialization is failed!");
                            }
                            break;

                        case "C":
                            XmlSerialization <ClassCPrim> xmlClassC = new XmlSerialization <ClassCPrim>("xml-c.xml", new ClassCPrim());
                            ClassCPrim deserializedClassC           = xmlClassC.deserialize();
                            if (deserializedClassC.ClassAProperty.ClassBProperty.ClassCProperty == deserializedClassC)
                            {
                                Console.WriteLine("Deserialization is completed!");
                            }
                            else
                            {
                                Console.WriteLine("Deserialization is failed!");
                            }
                            break;

                        default:
                            Console.WriteLine("Invalid input!");
                            break;
                        }
                        break;

                    default:
                        Console.WriteLine("Invalid input!");
                        break;
                    }
                    #endregion
                }
                else if (choice == "own")
                {
                    #region "OwnSerialization"
                    Console.WriteLine("Insert \"s\" - serialize or \"d\" - deserialize");
                    string choice2 = Console.ReadLine();
                    switch (choice2)
                    {
                    case "s":
                        ClassA classA = new ClassA(1.2f, new DateTime(1997, 1, 1, 0, 0, 0), "TestA", null);
                        ClassB classB = new ClassB(2.2f, new DateTime(1997, 2, 1, 0, 0, 0), "testB", null);
                        ClassC classC = new ClassC(3.2f, new DateTime(1997, 3, 1, 0, 0, 0), "testC", null);

                        classA.ClassBProperty = classB;
                        classB.ClassCProperty = classC;
                        classC.ClassAProperty = classA;

                        Console.WriteLine("Insert \"A\" - serialize ClassA, \"B\" - serialize ClassB or \"C\" - serialize ClassC");
                        choice2 = Console.ReadLine();
                        switch (choice2)
                        {
                        case "A":
                            using (FileStream s = new FileStream("own-a.txt", FileMode.Create))
                            {
                                IFormatter f = new OwnFormatter();
                                f.Serialize(s, classA);
                            }
                            break;

                        case "B":
                            using (FileStream s = new FileStream("own-b.txt", FileMode.Create))
                            {
                                IFormatter f = new OwnFormatter();
                                f.Serialize(s, classB);
                            }
                            break;

                        case "C":
                            using (FileStream s = new FileStream("own-c.txt", FileMode.Create))
                            {
                                IFormatter f = new OwnFormatter();
                                f.Serialize(s, classC);
                            }
                            break;

                        default:
                            Console.WriteLine("Invalid input!");
                            break;
                        }
                        break;

                    case "d":
                        Console.WriteLine("Insert \"A\" - deserialize ClassA, \"B\" - deserialize ClassB or \"C\" - deserialize ClassC");
                        choice2 = Console.ReadLine();
                        switch (choice2)
                        {
                        case "A":
                            using (FileStream s = new FileStream("own-a.txt", FileMode.Open))
                            {
                                IFormatter f         = new OwnFormatter();
                                ClassA     testClass = (ClassA)f.Deserialize(s);
                                if (testClass.ClassBProperty.ClassCProperty.ClassAProperty == testClass)
                                {
                                    Console.WriteLine("Deserialization is completed!");
                                    Console.WriteLine(testClass);
                                    Console.WriteLine(testClass.ClassBProperty);
                                    Console.WriteLine(testClass.ClassBProperty.ClassCProperty);
                                    Console.WriteLine(testClass.ClassBProperty.ClassCProperty.ClassAProperty);
                                }
                                else
                                {
                                    Console.WriteLine("Deserialization is failed!");
                                }
                            }
                            break;

                        case "B":
                            using (FileStream s = new FileStream("own-b.txt", FileMode.Open))
                            {
                                IFormatter f         = new OwnFormatter();
                                ClassB     testClass = (ClassB)f.Deserialize(s);
                                if (testClass.ClassCProperty.ClassAProperty.ClassBProperty == testClass)
                                {
                                    Console.WriteLine("Deserialization is completed!");
                                    Console.WriteLine(testClass);
                                    Console.WriteLine(testClass.ClassCProperty);
                                    Console.WriteLine(testClass.ClassCProperty.ClassAProperty);
                                    Console.WriteLine(testClass.ClassCProperty.ClassAProperty.ClassBProperty);
                                }
                                else
                                {
                                    Console.WriteLine("Deserialization is failed!");
                                }
                            }
                            break;

                        case "C":
                            using (FileStream s = new FileStream("own-c.txt", FileMode.Open))
                            {
                                IFormatter f         = new OwnFormatter();
                                ClassC     testClass = (ClassC)f.Deserialize(s);
                                if (testClass.ClassAProperty.ClassBProperty.ClassCProperty == testClass)
                                {
                                    Console.WriteLine("Deserialization is completed!");
                                    Console.WriteLine(testClass);
                                    Console.WriteLine(testClass.ClassAProperty);
                                    Console.WriteLine(testClass.ClassAProperty.ClassBProperty);
                                    Console.WriteLine(testClass.ClassAProperty.ClassBProperty.ClassCProperty);
                                }
                                else
                                {
                                    Console.WriteLine("Deserialization is failed!");
                                }
                            }
                            break;

                        default:
                            Console.WriteLine("Invalid input!");
                            break;
                        }
                        break;

                    default:
                        Console.WriteLine("Invalid input!");
                        break;
                    }
                    #endregion
                }
                Console.WriteLine("Click any to continue");
                Console.ReadLine();
            } while (choice == "xml" || choice == "own");
        }