- remove check of solid archive

- change tests
- add test on multi solid archive
This commit is contained in:
Dmitriy
2020-07-01 15:06:54 +05:00
parent 233dc33130
commit de6759a83f
10 changed files with 20 additions and 24 deletions

View File

@@ -8,11 +8,6 @@ namespace SharpCompress.Archives
{
public static void WriteTo(this IArchiveEntry archiveEntry, Stream streamToWriteTo)
{
if (archiveEntry.Archive.Type == ArchiveType.Rar && archiveEntry.Archive.IsSolid)
{
throw new InvalidFormatException("Cannot use Archive random access on SOLID Rar files.");
}
if (archiveEntry.IsDirectory)
{
throw new ExtractionException("Entry is a file directory and cannot be extracted.");

View File

@@ -57,11 +57,6 @@ namespace SharpCompress.Archives.Rar
public Stream OpenEntryStream()
{
if (archive.IsSolid)
{
throw new InvalidOperationException("Use ExtractAllEntries to extract SOLID archives.");
}
if (IsRarV3)
{
return new RarStream(archive.UnpackV1.Value, FileHeader, new MultiVolumeReadOnlyStream(Parts.Cast<RarFilePart>(), archive));

View File

@@ -83,12 +83,6 @@ namespace SharpCompress.Test
});
}
}
catch (InvalidFormatException)
{
//rar SOLID test needs this
stream.ThrowOnDispose = false;
throw;
}
catch (IndexOutOfRangeException)
{
//SevenZipArchive_BZip2_Split test needs this

View File

@@ -203,13 +203,13 @@ namespace SharpCompress.Test.Rar
[Fact]
public void Rar_Solid_ArchiveStreamRead()
{
Assert.Throws<InvalidFormatException>(() => ArchiveStreamRead("Rar.solid.rar"));
ArchiveStreamRead("Rar.solid.rar");
}
[Fact]
public void Rar5_Solid_ArchiveStreamRead()
{
Assert.Throws<InvalidFormatException>(() => ArchiveStreamRead("Rar5.solid.rar"));
ArchiveStreamRead("Rar5.solid.rar");
}
[Fact]
@@ -232,7 +232,7 @@ namespace SharpCompress.Test.Rar
"Rar.multi.part03.rar",
"Rar.multi.part04.rar",
"Rar.multi.part05.rar",
"Rar.multi.part06.rar"});
"Rar.multi.part06.rar"}, false);
}
[Fact]
@@ -243,14 +243,15 @@ namespace SharpCompress.Test.Rar
"Rar5.multi.part03.rar",
"Rar5.multi.part04.rar",
"Rar5.multi.part05.rar",
"Rar5.multi.part06.rar"});
"Rar5.multi.part06.rar"}, false);
}
private void DoRar_Multi_ArchiveStreamRead(string[] archives)
private void DoRar_Multi_ArchiveStreamRead(string[] archives, bool isSolid)
{
using (var archive = RarArchive.Open(archives.Select(s => Path.Combine(TEST_ARCHIVES_PATH, s))
.Select(File.OpenRead)))
{
Assert.Equal(archive.IsSolid, isSolid);
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(SCRATCH_FILES_PATH, new ExtractionOptions()
@@ -260,7 +261,18 @@ namespace SharpCompress.Test.Rar
});
}
}
VerifyFiles();
}
[Fact]
public void Rar5_MultiSolid_Extract_All()
{
DoRar_Multi_ArchiveStreamRead(new string[] {
"Rar.multi.solid.part01.rar",
"Rar.multi.solid.part02.rar",
"Rar.multi.solid.part03.rar",
"Rar.multi.solid.part04.rar",
"Rar.multi.solid.part05.rar",
"Rar.multi.solid.part06.rar"}, true);
}
[Fact]
@@ -332,13 +344,13 @@ namespace SharpCompress.Test.Rar
[Fact]
public void Rar_Solid_ArchiveFileRead()
{
Assert.Throws<InvalidFormatException>(() => ArchiveFileRead("Rar.solid.rar"));
ArchiveFileRead("Rar.solid.rar");
}
[Fact]
public void Rar5_Solid_ArchiveFileRead()
{
Assert.Throws<InvalidFormatException>(() => ArchiveFileRead("Rar5.solid.rar"));
ArchiveFileRead("Rar5.solid.rar");
}
[Fact]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.