mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-24 16:05:27 +00:00
171 lines
5.6 KiB
C#
171 lines
5.6 KiB
C#
using System.IO;
|
|
using System.Linq;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using SharpCompress.Archive;
|
|
using SharpCompress.Archive.Rar;
|
|
using SharpCompress.Common;
|
|
|
|
namespace SharpCompress.Test
|
|
{
|
|
[TestClass]
|
|
public class RarArchiveTests : ArchiveTests
|
|
{
|
|
[TestMethod]
|
|
public void Rar_None_ArchiveStreamRead()
|
|
{
|
|
ArchiveStreamRead("Rar.none.rar");
|
|
}
|
|
[TestMethod]
|
|
public void Rar_ArchiveStreamRead()
|
|
{
|
|
ArchiveStreamRead("Rar.rar");
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_Jpg_ArchiveStreamRead()
|
|
{
|
|
ResetScratch();
|
|
using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "RarJpeg.jpg")))
|
|
{
|
|
using (var archive = RarArchive.Open(stream, Options.LookForHeader))
|
|
{
|
|
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
|
|
{
|
|
entry.WriteToDirectory(SCRATCH_FILES_PATH,
|
|
ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
|
|
}
|
|
}
|
|
VerifyFiles();
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_IsSolidArchiveCheck()
|
|
{
|
|
ResetScratch();
|
|
using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Rar.rar")))
|
|
{
|
|
using (var archive = RarArchive.Open(stream))
|
|
{
|
|
Assert.IsFalse(archive.IsSolidArchive());
|
|
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
|
|
{
|
|
entry.WriteToDirectory(SCRATCH_FILES_PATH,
|
|
ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
|
|
}
|
|
}
|
|
}
|
|
VerifyFiles();
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(InvalidFormatException))]
|
|
public void Rar_Solid_ArchiveStreamRead()
|
|
{
|
|
ArchiveStreamRead("Rar.solid.rar");
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_Solid_StreamRead_Extract_All()
|
|
{
|
|
ArchiveStreamReadExtractAll("Rar.solid.rar", CompressionType.Rar);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_Multi_ArchiveStreamRead()
|
|
{
|
|
var testArchives = new string[] { "Rar.multi.part01.rar",
|
|
"Rar.multi.part02.rar",
|
|
"Rar.multi.part03.rar",
|
|
"Rar.multi.part04.rar",
|
|
"Rar.multi.part05.rar",
|
|
"Rar.multi.part06.rar"};
|
|
|
|
|
|
ResetScratch();
|
|
using (var archive = RarArchive.Open(testArchives.Select(s => Path.Combine(TEST_ARCHIVES_PATH, s))
|
|
.Select(p => File.OpenRead(p))))
|
|
{
|
|
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
|
|
{
|
|
entry.WriteToDirectory(SCRATCH_FILES_PATH, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
|
|
}
|
|
}
|
|
VerifyFiles();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void RarNoneArchiveFileRead()
|
|
{
|
|
ArchiveFileRead("Rar.none.rar");
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_ArchiveFileRead()
|
|
{
|
|
ArchiveFileRead("Rar.rar");
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_ArchiveFileRead_HasDirectories()
|
|
{
|
|
ResetScratch();
|
|
using (var stream = File.OpenRead(Path.Combine(TEST_ARCHIVES_PATH, "Rar.rar")))
|
|
{
|
|
using (var archive = RarArchive.Open(stream))
|
|
{
|
|
Assert.IsFalse(archive.IsSolidArchive());
|
|
Assert.IsTrue(archive.Entries.Any(entry => entry.IsDirectory));
|
|
}
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_Jpg_ArchiveFileRead()
|
|
{
|
|
ResetScratch();
|
|
using (var archive = RarArchive.Open(Path.Combine(TEST_ARCHIVES_PATH, "RarJpeg.jpg"), Options.LookForHeader))
|
|
{
|
|
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
|
|
{
|
|
entry.WriteToDirectory(SCRATCH_FILES_PATH, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
|
|
}
|
|
}
|
|
VerifyFiles();
|
|
}
|
|
|
|
[TestMethod]
|
|
[ExpectedException(typeof(InvalidFormatException))]
|
|
public void Rar_Solid_ArchiveFileRead()
|
|
{
|
|
ArchiveFileRead("Rar.solid.rar");
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_Multi_ArchiveFileRead()
|
|
{
|
|
ArchiveFileRead("Rar.multi.part01.rar");
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_IsFirstVolume_True()
|
|
{
|
|
using (var archive = RarArchive.Open(Path.Combine(TEST_ARCHIVES_PATH, "Rar.multi.part01.rar")))
|
|
{
|
|
Assert.IsTrue(archive.IsMultipartVolume());
|
|
Assert.IsTrue(archive.IsFirstVolume());
|
|
}
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Rar_IsFirstVolume_False()
|
|
{
|
|
using (var archive = RarArchive.Open(Path.Combine(TEST_ARCHIVES_PATH, "Rar.multi.part03.rar")))
|
|
{
|
|
Assert.IsTrue(archive.IsMultipartVolume());
|
|
Assert.IsFalse(archive.IsFirstVolume());
|
|
}
|
|
}
|
|
}
|
|
}
|