public void Integration_Test()
        {
            var textToCompress = "Hello World";
            var originalBytes  = Encoding.UTF8.GetBytes(textToCompress);

            byte[] compressedBytes;
            byte[] decompressedBytes;

            using (var memoryStream = new MemoryStreamWrap())
            {
                var compressInstance = new DeflateStreamWrap(memoryStream, CompressionMode.Compress);
                compressInstance.Write(originalBytes, 0, originalBytes.Length);
                compressInstance.Dispose();

                compressedBytes = memoryStream.ToArray();
            }

            using (var compressedMemoryStream = new MemoryStreamWrap(compressedBytes))
            {
                using (var deflateStream = new DeflateStreamWrap(compressedMemoryStream, CompressionMode.Decompress))
                {
                    using (var resultStream = new MemoryStreamWrap())
                    {
                        deflateStream.CopyTo(resultStream);
                        decompressedBytes = resultStream.ToArray();
                    }
                }
            }

            Assert.AreEqual(textToCompress, Encoding.UTF8.GetString(decompressedBytes));
        }
Exemplo n.º 2
0
        private Mock <IFileSystemFacade> CreateMockFileSystem()
        {
            // Set up basic file system operations
            Mock <IFileSystemFacade> mock = new Mock <IFileSystemFacade>(MockBehavior.Strict);

            mock.Setup(x => x.CreateDirectoryIfNotExists(It.IsAny <string>())).Callback(() => {});
            mock.Setup(x => x.FileExists(It.IsAny <string>())).Returns((string filePath) => _mockFileTable.ContainsKey(filePath));

            // Create a mock folder for the mock files
            mock.Setup(x => x.GetFilesInDirectory(It.IsAny <string>())).Returns(
                delegate
            {
                return(_mockFileTable.Values.Select(x => x.Item1.Object));
            });

            // Set up the IO operations for the mock files so it mimics the real thing
            mock.Setup(x => x.CreateTextFile(It.IsAny <string>(), It.IsAny <string>())).Callback(
                delegate(string fileName, string fileContents)
            {
                CreateOrUpdateMockFile(fileName, fileContents);
            });
            mock.Setup(x => x.AppendToTextFile(It.IsAny <string>(), It.IsAny <string>())).Callback(
                delegate(string fileName, string fileContents)
            {
                AppendToMockFile(fileName, fileContents);
            });
            mock.Setup(x => x.ReadTextFile(It.IsAny <string>())).Returns(
                delegate(string fileName)
            {
                return(_mockFileTable[fileName].Item2);
            });
            mock.Setup(x => x.DeleteFileIfExists(It.IsAny <string>())).Callback(
                delegate(string x)
            {
                if (_mockFileTable.ContainsKey(x))
                {
                    _mockFileTable.Remove(x);
                }
            });
            mock.Setup(x => x.GetDirectoryFullPath(It.IsAny <string>())).Returns(
                (string filePath) =>
            {
                var lastSlashPos = filePath.LastIndexOf("\\", StringComparison.Ordinal);
                var lastSegment  = filePath.Substring(lastSlashPos, filePath.Length - lastSlashPos);
                return(lastSegment.LastIndexOf(".", StringComparison.Ordinal) > 0 ? filePath.Substring(0, lastSlashPos) : filePath);
            });
            mock.Setup(x => x.DirectoryExists(It.IsAny <string>())).Returns(
                (string directoryPath) => _mockFileTable.ContainsKey(directoryPath));
            mock.Setup(x => x.CreateFileFromStream(It.IsAny <IStreamReader>(), It.IsAny <string>())).Callback(
                (IStreamReader streamReaderWrap, string filePath) =>
            {
                if (streamReaderWrap == null || streamReaderWrap.BaseStream == null || streamReaderWrap.BaseStream.Length <= 0)
                {
                    return;
                }

                using (var memoryStreamWrap = new MemoryStreamWrap())
                {
                    memoryStreamWrap.CopyFromStream(streamReaderWrap.BaseStream);
                    CreateOrUpdateMockFile(filePath, Convert.ToBase64String(memoryStreamWrap.ToArray()));
                }
            });

            return(mock);
        }