1: namespace Advent22 2: { 3: public class FileUtil_Specification 4: { 5: private FileUtilWithDelete Given_A_Readable_File(string content) 6: { 7: FileUtilWithDelete file = new FileUtilWithDelete("SomeFile.txt"); 8: file.Create(content); 9: return file; 10: } 11:   12: private FileUtilWithDelete Given_An_Unreadable_File() 13: { 14: FileUtilWithDelete file = Given_A_Readable_File("SHOULD NOT BE ABLE TO READ THIS"); 15: file.Readable = false; 16: return file; 17: } 18:   19: [Fact] 20: public void Reading_A_Readable_File_Returns_File_Content() 21: { 22: using (FileUtilWithDelete file = Given_A_Readable_File("CONTENT")) 23: { 24: string content = file.Read(); 25: Assert.Equal<string>("CONTENT", content); 26: } 27: } 28:   29: [Fact] 30: public void Reading_An_Unreadable_File_Throws_Correct_Exception() 31: { 32: using (FileUtilWithDelete file = Given_An_Unreadable_File()) 33: { 34: Assert.Throws<AccessViolationException>(() => { file.Read(); }); 35: } 36: } 37: } 38: }

So now we have a better name for our specification. But why should everything that has to do with FileUtil be in the same specification?