Files
sharpcompress/tests/SharpCompress.Test/Rar/RarHeaderFactoryTest.cs
Matt Kotsenas 7b338511cc Create unique scratch path per test
Tests fail in Visual Studio because they try to reuse the same scratch
working space, and each test is responsible for resetting the space. To
simplify the test code:

1. Make `TestBase` `IDisposable` and have it create the scratch space
2. Remove `ResetScratch()` as it is now handled by the base class
3. Add a unique ID to each scrach space folder to prevent collisions
2018-07-10 11:46:44 -07:00

68 lines
1.9 KiB
C#

using System.IO;
using SharpCompress.Common.Rar.Headers;
using SharpCompress.IO;
using SharpCompress.Readers;
using Xunit;
namespace SharpCompress.Test.Rar
{
/// <summary>
/// Summary description for RarFactoryReaderTest
/// </summary>
public class RarHeaderFactoryTest : TestBase
{
private readonly RarHeaderFactory rarHeaderFactory;
public RarHeaderFactoryTest()
{
rarHeaderFactory = new RarHeaderFactory(
StreamingMode.Seekable,
new ReaderOptions { LeaveStreamOpen = true });
}
[Fact]
public void Rar_ReadHeaders_RecognizeEncryptedFlag()
{
ReadEncryptedFlag("Rar.encrypted_filesAndHeader.rar", true);
}
[Fact]
public void Rar5_ReadHeaders_RecognizeEncryptedFlag()
{
ReadEncryptedFlag("Rar5.encrypted_filesAndHeader.rar", true);
}
[Fact]
public void Rar_ReadHeaders_RecognizeNoEncryptedFlag()
{
ReadEncryptedFlag("Rar.rar", false);
}
[Fact]
public void Rar5_ReadHeaders_RecognizeNoEncryptedFlag()
{
ReadEncryptedFlag("Rar5.rar", false);
}
private void ReadEncryptedFlag(string testArchive, bool isEncrypted)
{
using (var stream = GetReaderStream(testArchive))
{
foreach (var header in rarHeaderFactory.ReadHeaders(stream))
{
if (header.HeaderType == HeaderType.Archive || header.HeaderType == HeaderType.Crypt)
{
Assert.Equal(isEncrypted, rarHeaderFactory.IsEncrypted);
break;
}
}
}
}
private FileStream GetReaderStream(string testArchive)
{
return new FileStream(Path.Combine(TEST_ARCHIVES_PATH, testArchive), FileMode.Open);
}
}
}