2008 Advent Calendar December 23rd

 

   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.