public void CanSerializeAndDeserialize()
{
var list = new RecentCollection<int>(10);
list.Add(3);
list.Add(2);
list.Add(1);
var memStream = new MemoryStream();
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memStream, list);
memStream.Position = 0;
var listCopy = (RecentCollection<int>)binaryFormatter.Deserialize(memStream);
memStream.Dispose();
Assert.IsNotNull(listCopy);
Assert.AreEqual(list.Count, listCopy.Count);
Assert.AreEqual(list.Capacity, listCopy.Capacity);
var iter1 = list.GetEnumerator();
var iter2 = listCopy.GetEnumerator();
for (;;)
{
bool hasNext1 = iter1.MoveNext();
bool hasNext2 = iter2.MoveNext();
Assert.AreEqual(hasNext1, hasNext2);
if (!hasNext1 && !hasNext2) break;
Assert.AreEqual(iter1.Current, iter2.Current);
}
}