mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-23 15:34:34 +00:00
add AOT smoke and missing tests
This commit is contained in:
59
tests/SharpCompress.AotSmoke/Program.cs
Normal file
59
tests/SharpCompress.AotSmoke/Program.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
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.");
|
||||
Reference in New Issue
Block a user