mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-07-09 10:37:04 +00:00
60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
|
|
using System;
|
||
|
|
using System.IO;
|
||
|
|
using System.Text;
|
||
|
|
using SharpCompress.Archives;
|
||
|
|
using SharpCompress.Common;
|
||
|
|
using SharpCompress.Readers;
|
||
|
|
using SharpCompress.Writers;
|
||
|
|
|
||
|
|
var original = "SharpCompress AOT smoke test";
|
||
|
|
using var archiveStream = new MemoryStream();
|
||
|
|
|
||
|
|
using (
|
||
|
|
var writer = WriterFactory.OpenWriter(
|
||
|
|
archiveStream,
|
||
|
|
ArchiveType.Zip,
|
||
|
|
new WriterOptions(CompressionType.Deflate) { LeaveStreamOpen = true }
|
||
|
|
)
|
||
|
|
)
|
||
|
|
{
|
||
|
|
using var entryStream = new MemoryStream(Encoding.UTF8.GetBytes(original));
|
||
|
|
writer.Write("payload.txt", entryStream, DateTime.UtcNow);
|
||
|
|
}
|
||
|
|
|
||
|
|
archiveStream.Position = 0;
|
||
|
|
using (var reader = ReaderFactory.OpenReader(archiveStream, ReaderOptions.ForExternalStream))
|
||
|
|
{
|
||
|
|
if (!reader.MoveToNextEntry() || reader.Entry.IsDirectory)
|
||
|
|
{
|
||
|
|
throw new InvalidOperationException("Expected a file entry.");
|
||
|
|
}
|
||
|
|
|
||
|
|
using var extracted = new MemoryStream();
|
||
|
|
reader.WriteEntryTo(extracted);
|
||
|
|
var actual = Encoding.UTF8.GetString(extracted.ToArray());
|
||
|
|
if (!string.Equals(original, actual, StringComparison.Ordinal))
|
||
|
|
{
|
||
|
|
throw new InvalidOperationException("ReaderFactory round-trip content mismatch.");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
archiveStream.Position = 0;
|
||
|
|
using (var archive = ArchiveFactory.OpenArchive(archiveStream, ReaderOptions.ForExternalStream))
|
||
|
|
{
|
||
|
|
var entryCount = 0;
|
||
|
|
foreach (var entry in archive.Entries)
|
||
|
|
{
|
||
|
|
if (!entry.IsDirectory)
|
||
|
|
{
|
||
|
|
entryCount++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if (entryCount != 1)
|
||
|
|
{
|
||
|
|
throw new InvalidOperationException("ArchiveFactory did not see the expected entry.");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
Console.WriteLine("SharpCompress AOT smoke test passed.");
|