1: namespace Advent23 2: { 3: public class FileUtil_Tests_With_Readable_File 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: [Fact] 13: public void Reading_A_Readable_File_Returns_File_Content() 14: { 15: using (FileUtilWithDelete file = Given_A_Readable_File("CONTENT")) 16: { 17: string content = file.Read(); 18: Assert.Equal<string>("CONTENT", content); 19: } 20: } 21: } 22:   23: public class FileUtil_Tests_With_Unreadable_File 24: { 25: private FileUtilWithDelete Given_An_Unreadable_File() 26: { 27: FileUtilWithDelete file = new FileUtilWithDelete("SomeFile.txt"); 28: file.Create("SHOULD NOT BE ABLE TO READ THIS"); 29: file.Readable = false; 30: return file; 31: } 32:   33: [Fact] 34: public void Reading_An_Unreadable_File_Throws_Correct_Exception() 35: { 36: using (FileUtilWithDelete file = Given_An_Unreadable_File()) 37: { 38: Assert.Throws<AccessViolationException>(() => { file.Read(); }); 39: } 40: } 41: } 42: }

Once again we've ended up with the same code in different places. That should be fixed.