| 1 | 1 | import unittest |
|---|
| 2 | 1 | import test.test_support |
|---|
| 3 | n/a | |
|---|
| 4 | 1 | mutex = test.test_support.import_module("mutex", deprecated=True) |
|---|
| 5 | n/a | |
|---|
| 6 | 2 | class MutexTest(unittest.TestCase): |
|---|
| 7 | n/a | |
|---|
| 8 | 1 | def test_lock_and_unlock(self): |
|---|
| 9 | n/a | |
|---|
| 10 | 1 | def called_by_mutex(some_data): |
|---|
| 11 | 1 | self.assertEqual(some_data, "spam") |
|---|
| 12 | 1 | self.assertTrue(m.test(), "mutex not held") |
|---|
| 13 | n/a | # Nested locking |
|---|
| 14 | 1 | m.lock(called_by_mutex2, "eggs") |
|---|
| 15 | n/a | |
|---|
| 16 | 1 | def called_by_mutex2(some_data): |
|---|
| 17 | 1 | self.assertEquals(some_data, "eggs") |
|---|
| 18 | 1 | self.assertTrue(m.test(), "mutex not held") |
|---|
| 19 | 1 | self.assertTrue(ready_for_2, |
|---|
| 20 | 1 | "called_by_mutex2 called too soon") |
|---|
| 21 | n/a | |
|---|
| 22 | 1 | m = mutex.mutex() |
|---|
| 23 | 1 | read_for_2 = False |
|---|
| 24 | 1 | m.lock(called_by_mutex, "spam") |
|---|
| 25 | 1 | ready_for_2 = True |
|---|
| 26 | n/a | # unlock both locks |
|---|
| 27 | 1 | m.unlock() |
|---|
| 28 | 1 | m.unlock() |
|---|
| 29 | 1 | self.assertFalse(m.test(), "mutex still held") |
|---|
| 30 | n/a | |
|---|
| 31 | 1 | def test_main(): |
|---|
| 32 | 1 | test.test_support.run_unittest(MutexTest) |
|---|
| 33 | n/a | |
|---|
| 34 | 1 | if __name__ == "__main__": |
|---|
| 35 | 0 | test_main() |
|---|