public void TestExternalize() { var stream = new MemoryStream(); { var foo = new Foo(); var bar = new Bar(); foo.Value = 5; bar.Value = 10; foo.Bar = bar; var externalizer = new Externalizer(); var proxy = new FooProxy(foo, SaveFoo, LoadFoo); var mem = externalizer.Save(proxy); var formatter = new BinaryFormatter(); formatter.Serialize(stream, mem); } stream.Position = 0; { var formatter = new BinaryFormatter(); var mem = formatter.Deserialize(stream) as IMemento; var externalizer = new Externalizer(); var proxy = externalizer.Load(mem) as FooProxy; var foo = proxy.Real; Assert.AreEqual(5, foo.Value); Assert.AreEqual(10, foo.Bar.Value); } }
public void TestExternalize() { var stream = new MemoryStream(); { var foo = new Foo(); var bar = new Bar(); foo.Value = 5; bar.Value = 10; foo.Bar = bar; foo.Bars.Add(new Bar() { Value = 9, }); foo.Bars.Add(new Bar() { Value = 99, }); foo.Bars.Add(new Bar() { Value = 999, }); var externalizer = new Externalizer(); var mem = externalizer.Save(foo); var formatter = new BinaryFormatter(); formatter.Serialize(stream, mem); } stream.Position = 0; { var formatter = new BinaryFormatter(); var mem = formatter.Deserialize(stream) as IMemento; var externalizer = new Externalizer(); var foo = externalizer.Load(mem) as Foo; Assert.AreEqual(5, foo.Value); Assert.AreEqual(10, foo.Bar.Value); Assert.AreEqual(3, foo.Bars.Count); Assert.AreEqual(9, foo.Bars[0].Value); Assert.AreEqual(99, foo.Bars[1].Value); Assert.AreEqual(999, foo.Bars[2].Value); } }
public void TestExternalizeFilter() { var persister = new Externalizer(); var foo = new Foo(); var bar = new Bar(); foo.Value = 5; bar.Value = 10; foo.Bar = bar; bar.Foo = foo; var memento = persister.Save(foo, (key, ex) => key != "Bar"); var ofoo = persister.Load(memento) as Foo; Assert.AreNotEqual(foo, ofoo); Assert.AreEqual(null, ofoo.Bar); Assert.AreEqual(5, ofoo.Value); }