Skip to content

Commit 3600e15

Browse files
authored
Merge pull request squid-box#16 from squid-box/dev
Release with SFX bugfix
2 parents 8243838 + 2ae033c commit 3600e15

39 files changed

+488
-743
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ Backup/
88
.vs/**
99
/packages/**
1010
/[Ss]tage/**
11+
/TestResult.xml
12+
/coverage.xml

SevenZipTests/FileCheckerTests.cs renamed to SevenZip.Tests/FileCheckerTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace SevenZipTests
1+
namespace SevenZip.Tests
22
{
33
using System.Collections.Generic;
44
using System.IO;

SevenZip.Tests/LibraryManagerTests.cs

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
namespace SevenZip.Tests
2+
{
3+
using NUnit.Framework;
4+
5+
[TestFixture]
6+
public class LibraryManagerTests : TestBase
7+
{
8+
[Test]
9+
public void SetNonExistant7zDllLocationTest()
10+
{
11+
Assert.Throws<SevenZipLibraryException>(() => SevenZipLibraryManager.SetLibraryPath("null"));
12+
}
13+
14+
[Test]
15+
public void CurrentLibraryFeaturesTest()
16+
{
17+
var features = SevenZipBase.CurrentLibraryFeatures;
18+
19+
// Exercising more code paths...
20+
features = SevenZipLibraryManager.CurrentLibraryFeatures;
21+
22+
Assert.IsTrue(features.HasFlag(LibraryFeature.ExtractAll));
23+
Assert.IsTrue(features.HasFlag(LibraryFeature.CompressAll));
24+
Assert.IsTrue(features.HasFlag(LibraryFeature.Modify));
25+
}
26+
}
27+
}

SevenZipTests/MiscellaneousTests.cs renamed to SevenZip.Tests/MiscellaneousTests.cs

+16-51
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
namespace SevenZipTests
1+
namespace SevenZip.Tests
22
{
33
using System;
44
using System.Diagnostics;
55
using System.IO;
6-
using System.Reflection;
76
using System.Runtime.Serialization.Formatters.Binary;
87

98
using NUnit.Framework;
@@ -14,71 +13,37 @@
1413
public class MiscellaneousTests : TestBase
1514
{
1615
[Test]
17-
public void CurrentLibraryFeaturesTest()
18-
{
19-
Assert.Ignore("Not sure CurrentLibraryFeatures actually work as intended.");
20-
21-
var features = SevenZip.SevenZipExtractor.CurrentLibraryFeatures;
22-
Console.WriteLine(features);
23-
Assert.AreEqual(LibraryFeature.ExtractAll, features);
24-
Assert.AreEqual(LibraryFeature.CompressAll, features);
25-
}
26-
27-
[Test]
28-
public void ToughnessTest()
16+
public void SerializationTest()
2917
{
30-
Assert.Ignore("Not translated yet.");
18+
var ex = new ArgumentException("blahblah");
19+
var bf = new BinaryFormatter();
3120

32-
Console.ReadKey();
33-
string exeAssembly = Assembly.GetAssembly(typeof(SevenZipExtractor)).FullName;
34-
AppDomain dom = AppDomain.CreateDomain("Extract");
35-
for (int i = 0; i < 1000; i++)
21+
using (var ms = new MemoryStream())
3622
{
37-
using (SevenZipExtractor tmp =
38-
(SevenZipExtractor)dom.CreateInstance(
39-
exeAssembly, typeof(SevenZipExtractor).FullName,
40-
false, BindingFlags.CreateInstance, null,
41-
new object[] { @"D:\Temp\7z465_extra.7z" },
42-
System.Globalization.CultureInfo.CurrentCulture, null, null).Unwrap())
23+
using (var fileStream = File.Create(TemporaryFile))
4324
{
44-
tmp.ExtractArchive(@"D:\Temp\!Пусто");
25+
bf.Serialize(ms, ex);
26+
SevenZipCompressor cmpr = new SevenZipCompressor();
27+
cmpr.CompressStream(ms, fileStream);
4528
}
46-
Console.Clear();
47-
Console.WriteLine(i);
4829
}
49-
AppDomain.Unload(dom);
5030
}
5131

5232
[Test]
53-
public void SerializationTest()
33+
public void CreateSfxArchiveTest([Values]SfxModule sfxModule)
5434
{
55-
Assert.Ignore("Not translated yet.");
56-
57-
ArgumentException ex = new ArgumentException("blahblah");
58-
BinaryFormatter bf = new BinaryFormatter();
59-
using (MemoryStream ms = new MemoryStream())
35+
if (sfxModule.HasFlag(SfxModule.Custom))
6036
{
61-
bf.Serialize(ms, ex);
62-
SevenZipCompressor cmpr = new SevenZipCompressor();
63-
cmpr.CompressStream(ms, File.Create(@"d:\Temp\test.7z"));
37+
Assert.Ignore("No idea how to use SfxModule \"Custom\".");
6438
}
65-
}
66-
67-
[Test]
68-
public void CreateSfxArchiveTest()
69-
{
70-
Assert.Ignore("Legacy bug, needs investigation.");
7139

7240
var sfxFile = Path.Combine(OutputDirectory, "sfx.exe");
41+
var sfx = new SevenZipSfx(sfxModule);
42+
var compressor = new SevenZipCompressor {DirectoryStructure = false};
7343

74-
var sfx = new SevenZipSfx();
75-
var compressor = new SevenZipCompressor();
44+
compressor.CompressFiles(TemporaryFile, @"TestData\zip.zip");
7645

77-
using (var ms = new MemoryStream())
78-
{
79-
compressor.CompressFiles(ms, @"TestData\zip.zip");
80-
sfx.MakeSfx(ms, sfxFile);
81-
}
46+
sfx.MakeSfx(TemporaryFile, sfxFile);
8247

8348
Assert.IsTrue(File.Exists(sfxFile));
8449

SevenZipTest/Properties/AssemblyInfo.cs renamed to SevenZip.Tests/Properties/AssemblyInfo.cs

+10-11
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
11
using System.Reflection;
2-
using System.Runtime.CompilerServices;
32
using System.Runtime.InteropServices;
43

5-
// General Information about an assembly is controlled through the following
4+
// General Information about an assembly is controlled through the following
65
// set of attributes. Change these attribute values to modify the information
76
// associated with an assembly.
8-
[assembly: AssemblyTitle("SevenZipTest")]
7+
[assembly: AssemblyTitle("SevenZip.Tests")]
98
[assembly: AssemblyDescription("")]
109
[assembly: AssemblyConfiguration("")]
11-
[assembly: AssemblyCompany("MIPT")]
12-
[assembly: AssemblyProduct("SevenZipTest")]
13-
[assembly: AssemblyCopyright("Copyright © MIPT 2009")]
10+
[assembly: AssemblyCompany("")]
11+
[assembly: AssemblyProduct("SevenZipzTests")]
12+
[assembly: AssemblyCopyright("Copyright © 2018")]
1413
[assembly: AssemblyTrademark("")]
1514
[assembly: AssemblyCulture("")]
1615

17-
// Setting ComVisible to false makes the types in this assembly not visible
18-
// to COM components. If you need to access a type in this assembly from
16+
// Setting ComVisible to false makes the types in this assembly not visible
17+
// to COM components. If you need to access a type in this assembly from
1918
// COM, set the ComVisible attribute to true on that type.
2019
[assembly: ComVisible(false)]
2120

2221
// The following GUID is for the ID of the typelib if this project is exposed to COM
23-
[assembly: Guid("cc5e7de8-0fe2-43c4-a217-1f215bbcd798")]
22+
[assembly: Guid("67192e62-c7fe-485f-bec4-05734a943faa")]
2423

2524
// Version information for an assembly consists of the following four values:
2625
//
2726
// Major Version
28-
// Minor Version
27+
// Minor Version
2928
// Build Number
3029
// Revision
3130
//
32-
// You can specify all the values or you can default the Build and Revision Numbers
31+
// You can specify all the values or you can default the Build and Revision Numbers
3332
// by using the '*' as shown below:
3433
// [assembly: AssemblyVersion("1.0.*")]
3534
[assembly: AssemblyVersion("1.0.0.0")]

SevenZipTests/SevenZipTests.csproj renamed to SevenZip.Tests/SevenZip.Tests.csproj

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
<ProjectGuid>{67192E62-C7FE-485F-BEC4-05734A943FAA}</ProjectGuid>
99
<OutputType>Library</OutputType>
1010
<AppDesignerFolder>Properties</AppDesignerFolder>
11-
<RootNamespace>SevenZipTests</RootNamespace>
12-
<AssemblyName>SevenZipTests</AssemblyName>
11+
<RootNamespace>SevenZip.Tests</RootNamespace>
12+
<AssemblyName>SevenZip.Tests</AssemblyName>
1313
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
1414
<FileAlignment>512</FileAlignment>
1515
<NuGetPackageImportStamp>
@@ -55,6 +55,9 @@
5555
<Reference Include="System.Xml" />
5656
</ItemGroup>
5757
<ItemGroup>
58+
<Compile Include="LibraryManagerTests.cs" />
59+
<Compile Include="SevenZipCompressorAsynchronousTests.cs" />
60+
<Compile Include="SevenZipExtractorAsynchronousTests.cs" />
5861
<Compile Include="TestBase.cs" />
5962
<Compile Include="FileCheckerTests.cs" />
6063
<Compile Include="MiscellaneousTests.cs" />
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
namespace SevenZip.Tests
2+
{
3+
using System.Collections.Generic;
4+
using System.IO;
5+
using System.Threading;
6+
7+
using NUnit.Framework;
8+
9+
[TestFixture]
10+
public class SevenZipCompressorAsynchronousTests : TestBase
11+
{
12+
[Test]
13+
public void AsynchronousCompressDirecoryAndEventsTest()
14+
{
15+
var filesFoundInvoked = 0;
16+
var fileCompressionStartedInvoked = 0;
17+
var fileCompressionFinishedInvoked = 0;
18+
var compressingInvoked = 0;
19+
var compressionFinishedInvoked = 0;
20+
21+
var compressor = new SevenZipCompressor();
22+
23+
compressor.FilesFound += (o, e) => filesFoundInvoked++;
24+
compressor.FileCompressionStarted += (o, e) => fileCompressionStartedInvoked++;
25+
compressor.FileCompressionFinished += (o, e) => fileCompressionFinishedInvoked++;
26+
compressor.Compressing += (o, e) => compressingInvoked++;
27+
compressor.CompressionFinished += (o, e) => compressionFinishedInvoked++;
28+
29+
compressor.BeginCompressDirectory(@"TestData", TemporaryFile);
30+
31+
var timeToWait = 1000;
32+
while (compressionFinishedInvoked == 0)
33+
{
34+
if (timeToWait <= 0)
35+
{
36+
break;
37+
}
38+
39+
Thread.Sleep(25);
40+
timeToWait -= 25;
41+
}
42+
43+
var numberOfTestDataFiles = Directory.GetFiles("TestData").Length;
44+
45+
Assert.AreEqual(1, filesFoundInvoked);
46+
Assert.AreEqual(numberOfTestDataFiles, fileCompressionStartedInvoked);
47+
Assert.AreEqual(numberOfTestDataFiles, fileCompressionFinishedInvoked);
48+
Assert.AreEqual(numberOfTestDataFiles, compressingInvoked);
49+
Assert.AreEqual(1, compressionFinishedInvoked);
50+
51+
Assert.IsTrue(File.Exists(TemporaryFile));
52+
}
53+
54+
[Test]
55+
public void AsynchronousCompressFilesTest()
56+
{
57+
var compressionFinishedInvoked = false;
58+
59+
var compressor = new SevenZipCompressor {DirectoryStructure = false};
60+
compressor.CompressionFinished += (o, e) => compressionFinishedInvoked = true;
61+
62+
compressor.BeginCompressFiles(TemporaryFile, @"TestData\zip.zip", @"TestData\tar.tar");
63+
64+
var timeToWait = 1000;
65+
while (!compressionFinishedInvoked)
66+
{
67+
if (timeToWait <= 0)
68+
{
69+
break;
70+
}
71+
72+
Thread.Sleep(25);
73+
timeToWait -= 25;
74+
}
75+
76+
Assert.IsTrue(File.Exists(TemporaryFile));
77+
78+
using (var extractor = new SevenZipExtractor(TemporaryFile))
79+
{
80+
Assert.AreEqual(2, extractor.FilesCount);
81+
Assert.IsTrue(extractor.ArchiveFileNames.Contains("zip.zip"));
82+
Assert.IsTrue(extractor.ArchiveFileNames.Contains("tar.tar"));
83+
}
84+
}
85+
86+
[Test]
87+
public void AsynchronousCompressStreamTest()
88+
{
89+
var compressionFinishedInvoked = false;
90+
91+
var compressor = new SevenZipCompressor { DirectoryStructure = false };
92+
compressor.CompressionFinished += (o, e) => compressionFinishedInvoked = true;
93+
94+
using (var inputStream = File.OpenRead(@"TestData\zip.zip"))
95+
{
96+
using (var outputStream = new FileStream(TemporaryFile, FileMode.Create))
97+
{
98+
compressor.BeginCompressStream(inputStream, outputStream);
99+
100+
var timeToWait = 1000;
101+
while (!compressionFinishedInvoked)
102+
{
103+
if (timeToWait <= 0)
104+
{
105+
break;
106+
}
107+
108+
Thread.Sleep(25);
109+
timeToWait -= 25;
110+
}
111+
}
112+
}
113+
114+
Assert.IsTrue(File.Exists(TemporaryFile));
115+
116+
using (var extractor = new SevenZipExtractor(TemporaryFile))
117+
{
118+
Assert.AreEqual(1, extractor.FilesCount);
119+
}
120+
}
121+
122+
[Test]
123+
public void AsynchronousModifyArchiveTest()
124+
{
125+
var compressor = new SevenZipCompressor { DirectoryStructure = false };
126+
127+
compressor.CompressFiles(TemporaryFile, @"TestData\tar.tar");
128+
129+
var compressionFinishedInvoked = false;
130+
compressor.CompressionFinished += (o, e) => compressionFinishedInvoked = true;
131+
132+
compressor.BeginModifyArchive(TemporaryFile, new Dictionary<int, string>{{0, @"tartar"}});
133+
134+
var timeToWait = 1000;
135+
while (!compressionFinishedInvoked)
136+
{
137+
if (timeToWait <= 0)
138+
{
139+
break;
140+
}
141+
142+
Thread.Sleep(25);
143+
timeToWait -= 25;
144+
}
145+
146+
Assert.IsTrue(File.Exists(TemporaryFile));
147+
148+
using (var extractor = new SevenZipExtractor(TemporaryFile))
149+
{
150+
Assert.AreEqual(1, extractor.FilesCount);
151+
Assert.AreEqual("tartar", extractor.ArchiveFileNames[0]);
152+
}
153+
}
154+
155+
[Test]
156+
public void AsynchronousCompressFilesEncryptedTest()
157+
{
158+
var compressionFinishedInvoked = false;
159+
160+
var compressor = new SevenZipCompressor { DirectoryStructure = false };
161+
compressor.CompressionFinished += (o, e) => compressionFinishedInvoked = true;
162+
163+
compressor.BeginCompressFilesEncrypted(TemporaryFile, "secure", @"TestData\zip.zip", @"TestData\tar.tar");
164+
165+
var timeToWait = 1000;
166+
while (!compressionFinishedInvoked)
167+
{
168+
if (timeToWait <= 0)
169+
{
170+
break;
171+
}
172+
173+
Thread.Sleep(25);
174+
timeToWait -= 25;
175+
}
176+
177+
Assert.IsTrue(File.Exists(TemporaryFile));
178+
179+
using (var extractor = new SevenZipExtractor(TemporaryFile))
180+
{
181+
Assert.AreEqual(2, extractor.FilesCount);
182+
Assert.IsTrue(extractor.ArchiveFileNames.Contains("zip.zip"));
183+
Assert.IsTrue(extractor.ArchiveFileNames.Contains("tar.tar"));
184+
185+
Assert.Throws<ExtractionFailedException>(() => extractor.ExtractArchive(OutputDirectory));
186+
}
187+
}
188+
}
189+
}

0 commit comments

Comments
 (0)