1: public class Advent14 2: { 3: private IFileUtil m_file; 4:   5: private void SetUpReadable(string content) 6: { 7: m_file = new FileUtilWithDelete(Path.GetTempFileName()); 8: m_file.Create(content); 9: } 10:   11: private void SetUpUnreadable(string content) 12: { 13: SetUpReadable(content); 14: m_file.Readable = false; 15: } 16:   17: [Fact] 18: public void TestReadReadableFile() 19: { 20: SetUpReadable("CONTENT"); 21: string content = m_file.Read(); 22: Assert.Equal<string>("CONTENT", content); 23: } 24:   25: [Fact] 26: public void TestReadUnreadableFile() 27: { 28: SetUpUnreadable("SHOULD NOT BE ABLE TO READ THIS"); 29: Assert.Throws<AccessViolationException>(() => { m_file.Read(); }); 30: } 31: }

The use of the new FileUtilWithDelete-class makes the tests neater than before I think. But the member variable should also be removed since it is a legacy from the time when we used the unit test framework setup-method. And we need to create a unique file name in order to get rid of the Dispose method. The use of a temporary (unknown) name makes it hard to find the file if something goes wrong and it is left on the host. So I want to get rid of that as soon as possible too.