public override bool Matches(object actual)
{
var doc = actual as IDocument;
if (doc == null)
{
return Problem("An existing IDocument", "Object which is not an IDocument");
}
if (!doc.ContentStreamMimeType.Equals(_mimetype))
{
return Problem("Content with MimeType \"{0}\"", _mimetype,
doc.ContentStreamMimeType);
}
var contentStream = doc.GetContentStream();
if (!contentStream.MimeType.Equals(_mimetype))
{
return Problem("ContentStream with MimeType \"{0}\"", _mimetype,
contentStream.MimeType);
}
if (doc.ContentStreamLength != _content.Length)
{
return Problem("Content of length {0}", _content.Length, doc.ContentStreamLength);
}
var buffer = new byte[_content.Length];
contentStream.Stream.Read(buffer, 0, _content.Length);
contentStream.Stream.Close();
if (!_content.SequenceEqual(buffer))
{
return Problem("Content: \"{0}\"", Encoding.UTF8.GetString(_content),
Encoding.UTF8.GetString(buffer));
}
return true;
}
}