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)); }
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); }