private void Directory_Compress_And_Decompress(bool isNetwork, bool recursive)
        {
            UnitTestConstants.PrintUnitTestHeader(isNetwork);

            var tempPath = System.IO.Path.GetTempPath();

            if (isNetwork)
            {
                tempPath = Alphaleonis.Win32.Filesystem.Path.LocalToUnc(tempPath);
            }


            using (var rootDir = new TemporaryDirectory(tempPath, MethodBase.GetCurrentMethod().Name))
            {
                var folderRoot = rootDir.RandomDirectoryFullPath;
                Console.WriteLine("\nInput Directory Path: [{0}]", folderRoot);


                var folderAaa = System.IO.Path.Combine(folderRoot, "folder-aaa");
                var folderBbb = System.IO.Path.Combine(folderRoot, "folder-bbb");
                var folderCcc = System.IO.Path.Combine(folderBbb, "folder-ccc");
                System.IO.Directory.CreateDirectory(folderAaa);
                System.IO.Directory.CreateDirectory(folderBbb);
                System.IO.Directory.CreateDirectory(folderCcc);


                var fileAaa = System.IO.Path.Combine(folderAaa, "file-aaa.txt");
                var fileBbb = System.IO.Path.Combine(folderAaa, "file-bbb.txt");
                var fileCcc = System.IO.Path.Combine(folderRoot, "file-ccc.txt");
                var fileDdd = System.IO.Path.Combine(folderRoot, "file-ddd.txt");
                using (System.IO.File.CreateText(fileAaa)) { }
                using (System.IO.File.CreateText(fileBbb)) { }
                using (System.IO.File.CreateText(fileCcc)) { }
                using (System.IO.File.CreateText(fileDdd)) { }


                Alphaleonis.Win32.Filesystem.Directory.Compress(folderRoot, recursive ? Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.Recursive : Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.None);


                DirectoryAssert.IsCompressed(folderRoot);
                DirectoryAssert.IsCompressed(folderAaa);
                DirectoryAssert.IsCompressed(folderBbb);
                FileAssert.IsCompressed(fileCcc);
                FileAssert.IsCompressed(fileDdd);


                if (recursive)
                {
                    DirectoryAssert.IsCompressed(folderCcc);
                    FileAssert.IsCompressed(fileAaa);
                    FileAssert.IsCompressed(fileBbb);
                }
                else
                {
                    DirectoryAssert.IsNotCompressed(folderCcc);
                    FileAssert.IsNotCompressed(fileAaa);
                    FileAssert.IsNotCompressed(fileBbb);
                }


                Alphaleonis.Win32.Filesystem.Directory.Decompress(folderRoot, recursive ? Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.Recursive : Alphaleonis.Win32.Filesystem.DirectoryEnumerationOptions.None);


                if (recursive)
                {
                    DirectoryAssert.IsNotCompressed(folderCcc);
                    FileAssert.IsNotCompressed(fileAaa);
                    FileAssert.IsNotCompressed(fileBbb);
                }
                else
                {
                    DirectoryAssert.IsNotCompressed(folderCcc);
                    FileAssert.IsNotCompressed(fileAaa);
                    FileAssert.IsNotCompressed(fileBbb);
                }
            }

            Console.WriteLine();
        }