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