public void TestFinalObjectSerialization() { ReferenceTestPatternBuffer patternBuffer = new ReferenceTestPatternBuffer(); Thing t1 = new Thing(123); FinalObject o1 = new FinalObject(t1); byte[] bytes = patternBuffer.Energize(o1); // 1 byte FinalObject type ID // 1 byte null fields // 4 bytes Thing invariant int Assert.AreEqual(6, bytes.Length); object o2 = patternBuffer.Energize(bytes); FinalObject p1 = (FinalObject)o2; Assert.IsTrue(p1 is FinalObject); Assert.IsTrue(t1.Equals(p1.ThingValue)); Assert.IsFalse(o1 == p1); }
public void TestAbstractObjectSerialization() { ReferenceTestPatternBuffer patternBuffer = new ReferenceTestPatternBuffer(); FinalThing1 t1 = new FinalThing1(123, 456); AbstractReferenceObject aro1 = new AbstractReferenceObject(t1); byte[] bytes = patternBuffer.Energize(aro1); // 1 byte AbstractReferenceObject type ID // 1 byte null fields // 1 byte abstract reference type ID // 8 bytes FinalThing1's 2 invariant ints Assert.AreEqual(11, bytes.Length); object o2 = patternBuffer.Energize(bytes); Assert.IsTrue(o2 is AbstractReferenceObject); AbstractReferenceObject aro2 = (AbstractReferenceObject)o2; Assert.AreEqual(aro1.Thing.IntValue1, aro2.Thing.IntValue1); Assert.IsTrue(aro1.Thing is FinalThing1); Assert.IsTrue(aro2.Thing is FinalThing1); Assert.IsFalse(aro1 == aro2); }