本文整理汇总了C#中MimeKit.IO.MemoryBlockStream.Read方法的典型用法代码示例。如果您正苦于以下问题:C# MemoryBlockStream.Read方法的具体用法?C# MemoryBlockStream.Read怎么用?C# MemoryBlockStream.Read使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MimeKit.IO.MemoryBlockStream
的用法示例。
在下文中一共展示了MemoryBlockStream.Read方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestJwzMbox
public void TestJwzMbox ()
{
var summary = File.ReadAllText (Path.Combine (MboxDataDir, "jwz-summary.txt")).Replace ("\r\n", "\n");
var options = FormatOptions.Default.Clone ();
var original = new MemoryBlockStream ();
var output = new MemoryBlockStream ();
var builder = new StringBuilder ();
var expected = new byte[4096];
var buffer = new byte[4096];
int nx, n;
options.NewLineFormat = NewLineFormat.Unix;
using (var stream = File.OpenRead (Path.Combine (MboxDataDir, "jwz.mbox.txt"))) {
var parser = new MimeParser (stream, MimeFormat.Mbox);
int count = 0;
while (!parser.IsEndOfStream) {
var message = parser.ParseMessage ();
builder.AppendFormat ("{0}", parser.MboxMarker).Append ('\n');
if (message.From.Count > 0)
builder.AppendFormat ("From: {0}", message.From).Append ('\n');
if (message.To.Count > 0)
builder.AppendFormat ("To: {0}", message.To).Append ('\n');
builder.AppendFormat ("Subject: {0}", message.Subject).Append ('\n');
builder.AppendFormat ("Date: {0}", DateUtils.FormatDate (message.Date)).Append ('\n');
DumpMimeTree (builder, message);
builder.Append ('\n');
var marker = Encoding.UTF8.GetBytes ((count > 0 ? "\n" : string.Empty) + parser.MboxMarker + "\n");
output.Write (marker, 0, marker.Length);
message.WriteTo (options, output);
count++;
}
}
string actual = builder.ToString ();
// WORKAROUND: Mono's iso-2022-jp decoder breaks on this input in versions <= 3.2.3 but is fixed in 3.2.4+
string iso2022jp = Encoding.GetEncoding ("iso-2022-jp").GetString (Convert.FromBase64String ("GyRAOjRGI0stGyhK"));
if (iso2022jp != "佐藤豊")
actual = actual.Replace (iso2022jp, "佐藤豊");
Assert.AreEqual (summary, actual, "Summaries do not match for jwz.mbox");
using (var stream = File.OpenRead (Path.Combine (MboxDataDir, "jwz.mbox.txt"))) {
using (var filtered = new FilteredStream (original)) {
filtered.Add (new Dos2UnixFilter ());
stream.CopyTo (filtered);
filtered.Flush ();
}
}
original.Position = 0;
output.Position = 0;
Assert.AreEqual (original.Length, output.Length, "The length of the mbox did not match.");
do {
var position = original.Position;
nx = original.Read (expected, 0, expected.Length);
n = output.Read (buffer, 0, buffer.Length);
if (nx == 0)
break;
for (int i = 0; i < nx; i++) {
if (buffer[i] == expected[i])
continue;
var strExpected = CharsetUtils.Latin1.GetString (expected, 0, nx);
var strActual = CharsetUtils.Latin1.GetString (buffer, 0, n);
Assert.AreEqual (strExpected, strActual, "The mbox differs at position {0}", position + i);
}
} while (true);
}