Files
sharpcompress/tests/SharpCompress.Test/WriterTests.cs
Adam Hathcock 7d2dc58766 More API fixes
2021-02-07 13:38:41 +00:00

57 lines
2.0 KiB
C#

using System.IO;
using System.Text;
using System.Threading.Tasks;
using SharpCompress.Common;
using SharpCompress.IO;
using SharpCompress.Readers;
using SharpCompress.Writers;
namespace SharpCompress.Test
{
public class WriterTests : TestBase
{
private readonly ArchiveType type;
protected WriterTests(ArchiveType type)
{
this.type = type;
}
protected async Task WriteAsync(CompressionType compressionType, string archive, string archiveToVerifyAgainst, Encoding encoding = null)
{
await using (Stream stream = File.OpenWrite(Path.Combine(SCRATCH2_FILES_PATH, archive)))
{
WriterOptions writerOptions = new WriterOptions(compressionType)
{
LeaveStreamOpen = true,
};
writerOptions.ArchiveEncoding.Default = encoding ?? Encoding.Default;
await using (var writer = WriterFactory.Open(stream, type, writerOptions))
{
await writer.WriteAllAsync(ORIGINAL_FILES_PATH, "*", SearchOption.AllDirectories);
}
}
await CompareArchivesByPathAsync(Path.Combine(SCRATCH2_FILES_PATH, archive),
Path.Combine(TEST_ARCHIVES_PATH, archiveToVerifyAgainst));
await using (Stream stream = File.OpenRead(Path.Combine(SCRATCH2_FILES_PATH, archive)))
{
ReaderOptions readerOptions = new ReaderOptions();
readerOptions.ArchiveEncoding.Default = encoding ?? Encoding.Default;
await using (var reader = await ReaderFactory.OpenAsync(new NonDisposingStream(stream), readerOptions))
{
await reader.WriteEntryToDirectoryAsync(SCRATCH_FILES_PATH, new ExtractionOptions()
{
ExtractFullPath = true
});
}
}
VerifyFiles();
}
}
}