public void it_can_open_any_file_for_read_and_write_and_seek() { var fileSystem = new DefaultFileSystem(); var anyFile = fileSystem.New(NewRandomTempFile()); using (var theStream = fileSystem.Open(anyFile)) { Assert.IsTrue(theStream.CanRead , "Expected the resultant stream to be readable"); Assert.IsTrue(theStream.CanWrite, "Expected the resultant stream to be writable"); Assert.IsTrue(theStream.CanSeek , "Expected the resultant stream to be seekable"); } }
public void it_does_not_create_the_file_if_it_does_not_exist() { var fileSystem = new DefaultFileSystem(); var aFileThatDoesNotExist = new FileInfo("xxx.xxx"); File.Delete(aFileThatDoesNotExist.FullName); Assert.IsFalse(aFileThatDoesNotExist.Exists); var theError = Assert.Throws<FileNotFoundException>(() => fileSystem.Open(aFileThatDoesNotExist)); Assert.That(theError.Message, Is.StringMatching("^Could not find file")); }
public void it_deletes_files() { var theFilePath = new FileInfo(NewRandomTempFile()); using (File.Create(theFilePath.FullName)) {;} Assert.IsTrue(theFilePath.Exists, "Invalid test data. Expected the file to exist so it can be deleted."); var fileSystem = new DefaultFileSystem(); fileSystem.Delete(theFilePath); Assert.IsTrue(theFilePath.Exists, "Expected the file to have been deleted"); }
public void it_fails_to_create_a_new_file_if_the_file_already_exists() { var theFilePath = NewRandomTempFile(); var fileSystem = new DefaultFileSystem(); fileSystem.New(theFilePath); Assert.IsTrue(File.Exists(theFilePath), "Invalid test data, The file <{0}> does not exist. " + "The file must exist before a create attempt is tried.", theFilePath ); Assert.Throws<IOException>(() => fileSystem.New(theFilePath), "Expected trying to create a file that already exists to fail with error" ); }
private void AssertFlushesAutomatically(Byte[] bytes) { var fileSystem = new DefaultFileSystem(); var theFilePath = fileSystem.New(NewRandomTempFile()); Assert.That(theFilePath.Length, Is.EqualTo(0), "Expected the file to be empty to start with" ); using (var _out = fileSystem.Open(theFilePath)) { _out.Write(bytes, 0, bytes.Length); theFilePath.Refresh(); Assert.AreEqual(bytes.Length, theFilePath.Length, "Expected the bytes to have been automatically flushed because the buffer was filled" ); } }
private void AssertDoesNotFlushAutomatically(Byte[] bytes) { var fileSystem = new DefaultFileSystem(); var theFilePath = fileSystem.New(NewRandomTempFile()); Assert.That(theFilePath.Length, Is.EqualTo(0), "Expected the file to be empty to start with" ); using (var _out = fileSystem.Open(theFilePath)) { _out.Write(bytes, 0, bytes.Length); theFilePath.Refresh(); Assert.AreEqual(0, theFilePath.Length, "Expected that the bytes would not be flushed because the buffer is not yet full" ); } }
public void you_need_to_flush_a_file_stream_to_propagate_bytes_to_disk_unless_buffer_is_full() { var fileSystem = new DefaultFileSystem(); var theFilePath = fileSystem.New(NewRandomTempFile()); using (var _out = fileSystem.Open(theFilePath)) { var bytes = Encoding.UTF8.GetBytes("An example string"); _out.Write(bytes, 0, bytes.Length); Assert.That(theFilePath.Length, Is.EqualTo(0), "Expected the bytes to have been buffered and not yet written to disk" ); _out.Flush(); theFilePath.Refresh(); Assert.That(theFilePath.Length, Is.GreaterThan(0), "Expected the bytes to have been written to disk now that the stream has been flushed" ); } }
public void it_opens_the_file_supplied() { var fileSystem = new DefaultFileSystem(); var anyFile = fileSystem.New(NewRandomTempFile()); var theExpectedText = "Let’s make toast the American way, you burn it and I’ll scrape it."; using (var theStream = fileSystem.Open(anyFile)) { using (var writer = new StreamWriter(theStream)) { writer.Write(theExpectedText); } } var theActualTextInTheFile = File.ReadAllText(anyFile.FullName); Assert.AreEqual(theExpectedText, theActualTextInTheFile, "Expected the text in the file <{0}> to match because we asked DefaultFileSystem to " + "open it and then we wrote that text to it. " + "This means the file we asked to be opened was not opened (because the write was successful).", anyFile ); }