public void ReadFewPortions(int fileSize, int portionSize)
        {
            var bytes = TC.GetRandomBytes(fileSize);

            TC.CreateNewTestArchive(bytes);

            using (var reader = new UncompressedFileReader(TC.TestArchivePath, portionSize))
            {
                var portionBytes = (reader.ReadNextPortion() as MemoryStream).ToArray();
                CollectionAssert.AreEqual(
                    bytes.Take(portionSize).ToArray(), portionBytes);
                Assert.AreEqual(portionSize, portionBytes.Length);

                portionBytes = (reader.ReadNextPortion() as MemoryStream).ToArray();
                CollectionAssert.AreEqual(
                    bytes.Skip(portionSize).Take(portionSize).ToArray(), portionBytes);
                Assert.AreEqual(portionSize, portionBytes.Length);

                portionBytes = (reader.ReadNextPortion() as MemoryStream).ToArray();
                CollectionAssert.AreEqual(
                    bytes.Skip(portionSize * 2).Take(portionSize).ToArray(), portionBytes);
                Assert.AreEqual(portionSize, portionBytes.Length);

                portionBytes = (reader.ReadNextPortion() as MemoryStream).ToArray();
                CollectionAssert.AreEqual(
                    bytes.Skip(portionSize * 3).ToArray(), portionBytes);
                Assert.AreEqual(fileSize - portionSize * 3, portionBytes.Length);

                Assert.AreEqual(null, reader.ReadNextPortion());
                Assert.AreEqual(null, reader.ReadNextPortion());
                Assert.AreEqual(null, reader.ReadNextPortion());
            }
        }
        public void ReadFromEmptyFile()
        {
            TC.CreateNewTestArchive();

            using (var reader = new UncompressedFileReader(TC.TestArchivePath, 100))
            {
                var portion = reader.ReadNextPortion();
                Assert.IsNull(portion);
            }
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            Console.CancelKeyPress += (sender, ceArgs) =>
            {
                StatusManager.ProcessIsCanceled = true;
                ConsoleLogger.WriteDiagnosticInfo(PROCESS_CANCELLED);
                Environment.Exit(FAILURE_EXIT_CODE);
            };

            try
            {
                Validation.CheckInputParameters(args);
                var inputFile = new FileInfo(args[1]);

                var threadManager = new ThreadManager();

                FileReader        fileReader    = null;
                FileWriter        fileWriter    = null;
                Archiever         archiever     = null;
                OperationType     operationType = OperationType.Compress;
                GZipBlockArchiver compressor    = new GZipBlockArchiver(args[1], args[2], threadManager, inputFile.Length);

                if (args[0] == Dictionary.COMPRESS_COMMAND)
                {
                    fileReader = new UncompressedFileReader(args[1], compressor.CompressedDataManagers);
                    fileWriter = new CompressedFileWriter(args[2], compressor.DictionaryWritingManager);
                    archiever  = new Compressor(compressor.CompressedDataManagers, compressor.DictionaryWritingManager);
                }
                else
                {
                    fileReader    = new CompressedFileReader(args[1], compressor.CompressedDataManagers);
                    fileWriter    = new DecompressedFileWriter(args[2], compressor.DictionaryWritingManager);
                    archiever     = new Decompressor(compressor.CompressedDataManagers, compressor.DictionaryWritingManager);
                    operationType = OperationType.Decompress;
                }

                var processResult = compressor.Start(fileReader, archiever, fileWriter, operationType);

                Console.CursorTop += 1;
                if (processResult && !StatusManager.ProcessIsCanceled)
                {
                    ConsoleLogger.WriteSuccessInfo($"{args[2]} : {SUCCESS_CREATED}");
                }
                else
                {
                    ConsoleLogger.WriteError($"{args[2]}: {FAILURE_CREATED}");
                }
            }
            catch (Exception ex)
            {
                ConsoleLogger.WriteError(FAILURE_CREATED);
                Console.WriteLine(END_PROCESS);
                Console.ReadKey();
            }
        }