using System; using System.Collections.Generic; using System.IO; using Microsoft.SqlTools.ServiceLayer.QueryExecution.DataStorage; using Microsoft.SqlTools.ServiceLayer.SqlContext; using Moq; namespace Microsoft.SqlTools.ServiceLayer.Test.Common { public class MemoryFileSystem { public static IFileStreamFactory GetFileStreamFactory() { return GetFileStreamFactory(new Dictionary()); } public static IFileStreamFactory GetFileStreamFactory(Dictionary storage) { Mock mock = new Mock(); mock.Setup(fsf => fsf.CreateFile()) .Returns(() => { string fileName = Guid.NewGuid().ToString(); storage.Add(fileName, new byte[8192]); return fileName; }); mock.Setup(fsf => fsf.GetReader(It.IsAny())) .Returns(output => new ServiceBufferFileStreamReader(new MemoryStream(storage[output]), new QueryExecutionSettings())); mock.Setup(fsf => fsf.GetWriter(It.IsAny())) .Returns(output => new ServiceBufferFileStreamWriter(new MemoryStream(storage[output]), new QueryExecutionSettings())); return mock.Object; } } }