public void ExtractArchiveWithDenyFilters(string fileName, int expectedNumFiles = 2)
        {
            var directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
            var path      = Path.Combine(Directory.GetCurrentDirectory(), "TestData", "TestDataArchives", fileName);
            var newpath   = Path.GetTempFileName();

            File.Copy(path, newpath, true);
            RecursiveExtractorClient.ExtractCommand(new ExtractCommandOptions()
            {
                Input       = newpath,
                Output      = directory,
                Verbose     = true,
                DenyFilters = new string[]
                {
                    ".[cC][sS]$"
                }
            });
            var files = Array.Empty <string>();

            if (Directory.Exists(directory))
            {
                files = Directory.EnumerateFiles(directory, "*.*", SearchOption.AllDirectories).ToArray();
                Directory.Delete(directory, true);
            }
            Assert.AreEqual(expectedNumFiles, files.Length);
        }
        public void ExtractEncryptedArchive(string fileName, int expectedNumFiles = 3)
        {
            var directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
            var path      = Path.Combine(Directory.GetCurrentDirectory(), "TestData", "TestDataArchives", fileName);
            var passwords = ExtractorTests.TestArchivePasswords.Values.SelectMany(x => x);

            RecursiveExtractorClient.ExtractCommand(new ExtractCommandOptions()
            {
                Input = path, Output = directory, Verbose = true, Passwords = passwords
            });
            var files = Array.Empty <string>();

            if (Directory.Exists(directory))
            {
                files = Directory.EnumerateFiles(directory, "*.*", SearchOption.AllDirectories).ToArray();
                Directory.Delete(directory, true);
            }
            Assert.AreEqual(expectedNumFiles, files.Length);
        }