2009 Advent Calendar December 17th

Since we already have an implementation for the MutexLock I want to add another passing test:

    1:      public class Given_a_locked_MutexLock : IDisposable
   2:      {
   3:          private MutexLock _lock = new MutexLock();
   4:          private Thread _thread;
   5:          private bool _gotLock = false;
   6:   
   7:          public Given_a_locked_MutexLock()
   8:          {
   9:              _lock.Lock();
  10:              _thread = new Thread(() =>
  11:              {
  12:                  _lock.Lock();
  13:                  _gotLock = true;
  14:                  _lock.Unlock();
  15:              });
  16:              _thread.Start();
  17:              
  18:          }
  19:   
  20:          public void Dispose()
  21:          {
  22:              if (_thread != null)
  23:              {
  24:                  _thread.Abort();
  25:              }
  26:          }
  27:   
  28:          [Fact(Timeout = 1000)]
  29:          void It_should_not_take_the_lock()
  30:          {
  31:              Assert.False(_thread.Join(250));
  32:              Assert.False(_gotLock);
  33:          }
  34:      }

It's starting to get tricky using helper threads but let's continue tomorrow...