diff --git a/tests/SharpCompress.Test/Arc/ArcReaderTests.cs b/tests/SharpCompress.Test/Arc/ArcReaderTests.cs index cb8c67e0..77e5a75d 100644 --- a/tests/SharpCompress.Test/Arc/ArcReaderTests.cs +++ b/tests/SharpCompress.Test/Arc/ArcReaderTests.cs @@ -27,5 +27,13 @@ namespace SharpCompress.Test.Arc [Fact] public void Arc_Crunched_Read() => Read("Arc.crunched.arc"); + + [Theory] + [InlineData("Arc.uncompressed.largefile.arc", CompressionType.None)] + [InlineData("Arc.squeezed.largefile.arc", CompressionType.Squeezed)] + public void Arc_LargeFileTest_Read(string fileName, CompressionType compressionType) + { + ReadForBufferBoundaryCheck(fileName, compressionType); + } } } diff --git a/tests/SharpCompress.Test/Arj/ArjReaderTests.cs b/tests/SharpCompress.Test/Arj/ArjReaderTests.cs index 0b51b08d..96e7e465 100644 --- a/tests/SharpCompress.Test/Arj/ArjReaderTests.cs +++ b/tests/SharpCompress.Test/Arj/ArjReaderTests.cs @@ -65,7 +65,7 @@ namespace SharpCompress.Test.Arj public void Arj_LargeFile_ShouldThrow(string fileName, CompressionType compressionType) { var exception = Assert.Throws(() => - Arj_LargeFileTest_Read(fileName, compressionType) + ReadForBufferBoundaryCheck(fileName, compressionType) ); } @@ -74,24 +74,7 @@ namespace SharpCompress.Test.Arj [InlineData("Arj.method4.largefile.arj", CompressionType.ArjLZ77)] public void Arj_LargeFileTest_Read(string fileName, CompressionType compressionType) { - using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, fileName))) - using ( - var reader = ReaderFactory.Open(stream, new ReaderOptions { LookForHeader = true }) - ) - { - while (reader.MoveToNextEntry()) - { - Assert.Equal(compressionType, reader.Entry.CompressionType); - reader.WriteEntryToDirectory( - SCRATCH_FILES_PATH, - new ExtractionOptions { ExtractFullPath = true, Overwrite = true } - ); - } - } - CompareFilesByPath( - Path.Combine(SCRATCH_FILES_PATH, "news.txt"), - Path.Combine(MISC_TEST_FILES_PATH, "news.txt") - ); + ReadForBufferBoundaryCheck(fileName, compressionType); } private void DoArj_Multi_Reader(string[] archives) diff --git a/tests/SharpCompress.Test/ReaderTests.cs b/tests/SharpCompress.Test/ReaderTests.cs index c5539fc8..9c89684f 100644 --- a/tests/SharpCompress.Test/ReaderTests.cs +++ b/tests/SharpCompress.Test/ReaderTests.cs @@ -176,6 +176,27 @@ public abstract class ReaderTests : TestBase } } + protected void ReadForBufferBoundaryCheck(string fileName, CompressionType compressionType) + { + using var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, fileName)); + using var reader = ReaderFactory.Open(stream, new ReaderOptions { LookForHeader = true }); + + while (reader.MoveToNextEntry()) + { + Assert.Equal(compressionType, reader.Entry.CompressionType); + + reader.WriteEntryToDirectory( + SCRATCH_FILES_PATH, + new ExtractionOptions { ExtractFullPath = true, Overwrite = true } + ); + } + + CompareFilesByPath( + Path.Combine(SCRATCH_FILES_PATH, "news.txt"), + Path.Combine(MISC_TEST_FILES_PATH, "news.txt") + ); + } + protected void Iterate( string testArchive, string fileOrder, diff --git a/tests/TestArchives/Archives/Arc.squeezed.largefile.arc b/tests/TestArchives/Archives/Arc.squeezed.largefile.arc new file mode 100644 index 00000000..52b872ba Binary files /dev/null and b/tests/TestArchives/Archives/Arc.squeezed.largefile.arc differ diff --git a/tests/TestArchives/Archives/Arc.uncompressed.largefile.arc b/tests/TestArchives/Archives/Arc.uncompressed.largefile.arc new file mode 100644 index 00000000..ecb84260 Binary files /dev/null and b/tests/TestArchives/Archives/Arc.uncompressed.largefile.arc differ