public async Task TextFileRamDiskDirectory_FileExists_False()
        {
            // ILogger will only print to Output when tests are run in Debug mode.
            ILogger logger = new Logger();

            logger.SetWorker(
                (type, loggingLevel, logAction, message) =>
                {
                    Debug.WriteLine("ILogger: {0}, {1}, {2}, {3}", type, loggingLevel, logAction, message);
                }
                );

            logger.Log(this.GetType(), LoggingLevel.System, LogAction.UnitTestStart, "TextFileRamDiskDirectory_FileExists_False");

            var directory = new TextFileRamDiskDirectory("testName", logger: logger);

            Assert.IsFalse(directory.FileExists("something.txt"));

            logger.Log(this.GetType(), LoggingLevel.System, LogAction.UnitTestEnd, "TextFileRamDiskDirectory_FileExists_False");
        }
        public async Task SaveToDevice_Throws_SaveToDeviceException()
        {
            ILogger logger = new Logger();

            logger.SetWorker(
                (type, loggingLevel, logAction, message) =>
                {
                    // The Logger will only print to Output when tests are run in Debug mode.
                    Debug.WriteLine("ILogger: {0}, {1}, {2}, {3}", type, loggingLevel, logAction, message);
                }
                );

            logger.Log(this.GetType(), LoggingLevel.System, LogAction.UnitTestStart, "SaveToDevice_Throws_SaveToDeviceException");

            var directory = new TextFileRamDiskDirectory("testDirectoryName", null, logger);
            Assert.IsFalse(directory.CanSaveToDevice);

            var file = directory.OpenWriter("TestFileName.txt", false);
            await file.WriteAsync(
                  "Text that wont be saved to device because ISaveToDeviceManager object not passed into directory when instantiated");
            file.Close();

            var isExceptionThrown = false;
            try
            {
                await directory.SaveFilesToDevice();
            }
            catch (SaveToDeviceException ex)
            {
                Assert.IsTrue(
                    ex.Message.Equals(
                        "SaveToDeviceException: Device Storage Manager implementing ISaveToDevice interface was not passed into TextFileRamDiskDirectory with directory name testDirectoryName. [Com.Xamtastic.Patterns.TextFileRamDisk.Exceptions]"));
                isExceptionThrown = true;
            }

            Assert.IsTrue(isExceptionThrown);

            logger.Log(this.GetType(), LoggingLevel.System, LogAction.UnitTestEnd, "SaveToDevice_Throws_SaveToDeviceException");
        }
        public async Task TextFileRamDiskDirectory_GetFileSize_GreaterThan0()
        {
            // ILogger will only print to Output when tests are run in Debug mode.
            ILogger logger = new Logger();

            logger.SetWorker(
                (type, loggingLevel, logAction, message) =>
                {
                    Debug.WriteLine("ILogger: {0}, {1}, {2}, {3}", type, loggingLevel, logAction, message);
                }
                );

            logger.Log(this.GetType(), LoggingLevel.System, LogAction.UnitTestStart, "TextFileRamDiskDirectory_GetFileSize_GreaterThan0");

            var directory = new TextFileRamDiskDirectory("testName", logger: logger);

            using (var write = directory.OpenWriter("something.txt", true))
            {
                Assert.IsTrue(directory.FileExists("something.txt"));

                await write.WriteAsync("Test text");
            }

            var size = directory.GetFileSize("something.txt");

            Assert.IsTrue(directory.GetFileSize("something.txt") > 0);

            logger.Log(this.GetType(), LoggingLevel.System, LogAction.UnitTestEnd, "TextFileRamDiskDirectory_GetFileSize_GreaterThan0");
        }