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...