public void SerializeDeserializeObjectsWithCycle()
{
IObject obja = new BaseObject(null, 1);
IObject objb = new BaseObject(null, 1);
obja[0] = objb;
objb[0] = obja;
MemoryStream stream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(stream);
ImageSerializer serializer = new ImageSerializer(writer);
serializer.Serialize(obja);
serializer.Serialize(objb);
writer.Close();
stream = new MemoryStream(stream.ToArray());
BinaryReader reader = new BinaryReader(stream);
ImageSerializer deserializer = new ImageSerializer(reader, null);
var resulta = deserializer.Deserialize();
var resultb = deserializer.Deserialize();
Assert.IsNotNull(resulta);
Assert.IsInstanceOfType(resulta, typeof(IObject));
var iobja = (IObject)resulta;
Assert.IsNull(iobja.Behavior);
Assert.AreEqual(1, iobja.NoVariables);
Assert.IsNotNull(resultb);
Assert.IsInstanceOfType(resultb, typeof(IObject));
var iobjb = (IObject)resultb;
Assert.IsNull(iobjb.Behavior);
Assert.AreEqual(1, iobjb.NoVariables);
Assert.AreEqual(iobja, iobjb[0]);
Assert.AreEqual(iobjb, iobja[0]);
}