From 138038b08f165867257dbe353e5d9ed2b2d2b2d1 Mon Sep 17 00:00:00 2001 From: Matt Kotsenas Date: Wed, 11 Jul 2018 18:37:49 -0700 Subject: [PATCH] Move RarReaderTests over to user ReaderFactory - Refactor `RarReaderTests` to use `ReaderFactory` - Update `ReaderTests.Read` to support Rar tests --- .../SharpCompress.Test/Rar/RarReaderTests.cs | 17 ++++---------- tests/SharpCompress.Test/ReaderTests.cs | 23 +++++++++++-------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/tests/SharpCompress.Test/Rar/RarReaderTests.cs b/tests/SharpCompress.Test/Rar/RarReaderTests.cs index a4119f22..caf2caf6 100644 --- a/tests/SharpCompress.Test/Rar/RarReaderTests.cs +++ b/tests/SharpCompress.Test/Rar/RarReaderTests.cs @@ -199,14 +199,7 @@ namespace SharpCompress.Test.Rar private void ReadRar(string testArchive, string password) { - using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, testArchive))) - using (var reader = RarReader.Open(stream, new ReaderOptions() - { - Password = password - })) - { - UseReader(reader, CompressionType.Rar); - } + Read(testArchive, CompressionType.Rar, new ReaderOptions { Password = password }); } [Fact] @@ -222,7 +215,7 @@ namespace SharpCompress.Test.Rar private void DoRar_Entry_Stream(string filename) { using (Stream stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename))) - using (var reader = RarReader.Open(stream)) + using (var reader = ReaderFactory.Open(stream)) { while (reader.MoveToNextEntry()) { @@ -255,7 +248,7 @@ namespace SharpCompress.Test.Rar public void Rar_Reader_Audio_program() { using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Rar.Audio_program.rar"))) - using (var reader = RarReader.Open(stream, new ReaderOptions() + using (var reader = ReaderFactory.Open(stream, new ReaderOptions() { LookForHeader = true })) @@ -321,7 +314,7 @@ namespace SharpCompress.Test.Rar private void DoRar_Solid_Skip_Reader(string filename) { using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename))) - using (var reader = RarReader.Open(stream, new ReaderOptions() + using (var reader = ReaderFactory.Open(stream, new ReaderOptions() { LookForHeader = true })) @@ -354,7 +347,7 @@ namespace SharpCompress.Test.Rar private void DoRar_Reader_Skip(string filename) { using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, filename))) - using (var reader = RarReader.Open(stream, new ReaderOptions() + using (var reader = ReaderFactory.Open(stream, new ReaderOptions() { LookForHeader = true })) diff --git a/tests/SharpCompress.Test/ReaderTests.cs b/tests/SharpCompress.Test/ReaderTests.cs index 1d8e2bfb..82ca6d29 100644 --- a/tests/SharpCompress.Test/ReaderTests.cs +++ b/tests/SharpCompress.Test/ReaderTests.cs @@ -7,18 +7,23 @@ using Xunit; namespace SharpCompress.Test { - public class ReaderTests : TestBase + public abstract class ReaderTests : TestBase { - protected void Read(string testArchive, CompressionType expectedCompression) + protected void Read(string testArchive, CompressionType expectedCompression, ReaderOptions options = null) { testArchive = Path.Combine(TEST_ARCHIVES_PATH, testArchive); - Read(testArchive, expectedCompression, true); - Read(testArchive, expectedCompression, false); + options = options ?? new ReaderOptions(); + + options.LeaveStreamOpen = true; + ReadImpl(testArchive, expectedCompression, options); + + options.LeaveStreamOpen = false; + ReadImpl(testArchive, expectedCompression, options); VerifyFiles(); } - private void Read(string testArchive, CompressionType expectedCompression, bool leaveStreamOpen) + private void ReadImpl(string testArchive, CompressionType expectedCompression, ReaderOptions options) { using (var file = File.OpenRead(testArchive)) { @@ -26,7 +31,7 @@ namespace SharpCompress.Test { using (var testStream = new TestStream(protectedStream)) { - using (var reader = ReaderFactory.Open(testStream, new ReaderOptions { LeaveStreamOpen = leaveStreamOpen })) + using (var reader = ReaderFactory.Open(testStream, options)) { UseReader(reader, expectedCompression); protectedStream.ThrowOnDispose = false; @@ -35,8 +40,8 @@ namespace SharpCompress.Test // Boolean XOR -- If the stream should be left open (true), then the stream should not be diposed (false) // and if the stream should be closed (false), then the stream should be disposed (true) - var message = $"{nameof(leaveStreamOpen)} is set to '{leaveStreamOpen}', so {nameof(testStream.IsDisposed)} should be set to '{!testStream.IsDisposed}', but is set to {testStream.IsDisposed}"; - Assert.True(leaveStreamOpen != testStream.IsDisposed, message); + var message = $"{nameof(options.LeaveStreamOpen)} is set to '{options.LeaveStreamOpen}', so {nameof(testStream.IsDisposed)} should be set to '{!testStream.IsDisposed}', but is set to {testStream.IsDisposed}"; + Assert.True(options.LeaveStreamOpen != testStream.IsDisposed, message); } } } @@ -48,7 +53,7 @@ namespace SharpCompress.Test { if (!reader.Entry.IsDirectory) { - Assert.Equal(reader.Entry.CompressionType, expectedCompression); + Assert.Equal(expectedCompression, reader.Entry.CompressionType); reader.WriteEntryToDirectory(SCRATCH_FILES_PATH, new ExtractionOptions() { ExtractFullPath = true,