public void SerializationTest() { DummyClassA a = new DummyClassA(); a.Id = 1; DummyClassB b = new DummyClassB(); b.Id = 2; DummyClassC c = new DummyClassC(); c.Id = 3; a.Other = b; b.Other = c; c.Other = a; b.Text = "HELLO"; c.Time = new DateTime(2020, 1, 1); CustomFormatter formatter = new CustomFormatter(); using (FileStream stream = File.Open("format_dummies.txt", FileMode.OpenOrCreate)) { formatter.Serialize(stream, a); } DummyClassA a2; DummyClassB b2; using (FileStream stream = File.Open("format_dummies.txt", FileMode.Open)) { a2 = (DummyClassA)formatter.Deserialize(stream); } Assert.AreEqual(1, a2.Id); Assert.AreEqual(2, a2.Other.Id); Assert.AreEqual(3, a2.Other.Other.Id); Assert.AreEqual(1, a2.Other.Other.Other.Id); Assert.AreEqual(typeof(DummyClassA), a2.GetType()); Assert.AreEqual(typeof(DummyClassB), a2.Other.GetType()); Assert.AreEqual(typeof(DummyClassC), a2.Other.Other.GetType()); Assert.AreEqual(typeof(DummyClassA), a2.Other.Other.Other.GetType()); Assert.AreEqual("HELLO", a2.Other.Text); Assert.AreEqual(2020, a2.Other.Other.Time.Year); Assert.AreEqual(1, a2.Other.Other.Time.Month); Assert.AreEqual(1, a2.Other.Other.Time.Day); b2 = a2.Other; Assert.ReferenceEquals(a2.Other, b2); b2.Id = 10f; Assert.AreEqual(10f, a2.Other.Id); }
public void DeserializeJSONDummiesTest() { DummyClassA a = new DummyClassA { Id = 1 }; DummyClassB b = new DummyClassB { Id = 2 }; DummyClassC c = new DummyClassC { Id = 3 }; a.Other = b; b.Other = c; c.Other = a; b.Text = "HELLO"; c.Time = new DateTime(2020, 1, 1); DummyClassA a2; DummyClassB b2; JSONSerializer serializer = new JSONSerializer(); serializer.Serialize("test.json", a); a2 = serializer.Deserialize <DummyClassA>("test.json"); Assert.AreEqual(1, a2.Id); Assert.AreEqual(2, a2.Other.Id); Assert.AreEqual(3, a2.Other.Other.Id); Assert.AreEqual(1, a2.Other.Other.Other.Id); Assert.AreEqual(typeof(DummyClassA), a2.GetType()); Assert.AreEqual(typeof(DummyClassB), a2.Other.GetType()); Assert.AreEqual(typeof(DummyClassC), a2.Other.Other.GetType()); Assert.AreEqual(typeof(DummyClassA), a2.Other.Other.Other.GetType()); Assert.AreEqual("HELLO", a2.Other.Text); Assert.AreEqual(2020, a2.Other.Other.Time.Year); Assert.AreEqual(1, a2.Other.Other.Time.Month); Assert.AreEqual(1, a2.Other.Other.Time.Day); b2 = a2.Other; Assert.ReferenceEquals(a2.Other, b2); b2.Id = 10f; Assert.AreEqual(10f, a2.Other.Id); }
static void Main(string[] args) { int choice = 0; CustomFormatter customFormatter = new CustomFormatter(); JSONSerializer jSONSerializer = new JSONSerializer(); DummyClassA a = new DummyClassA(); a.Id = 1; DummyClassB b = new DummyClassB(); b.Id = 2; DummyClassC c = new DummyClassC(); c.Id = 3; a.Other = b; b.Other = c; c.Other = a; b.Text = "HELLO"; c.Time = new DateTime(2020, 1, 1); while (choice != 5) { Menu(); Console.Write("Wybieram: "); choice = Console.Read() - '0'; switch (choice) { case 1: string path = GetFile(); using (FileStream stream = File.Open(path, FileMode.OpenOrCreate)) { customFormatter.Serialize(stream, a); } Console.WriteLine("Serializacja wlasna zakonczona"); break; case 2: path = GetFile(); if (File.Exists(path)) { using (FileStream stream = File.Open(path, FileMode.Open)) { a = (DummyClassA)customFormatter.Deserialize(stream); Console.WriteLine("Deserializacja wlasna zakonczona"); } } else { Console.WriteLine("Plik nie istnieje"); } break; case 3: path = GetFile(); jSONSerializer.Serialize(path, a); Console.WriteLine("Serializacja JSON zakonczona"); break; case 4: path = GetFile(); if (File.Exists(path)) { a = jSONSerializer.Deserialize <DummyClassA>(path); Console.WriteLine("Deserializacja JSON zakonczona"); } else { Console.WriteLine("Plik nie istnieje"); } break; case 5: Environment.Exit(0); break; default: Console.WriteLine("Blad"); break; } } }