this repo has no description
1#!/usr/bin/env python3
2# Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com)
3import unittest
4from threading import Condition, Event, Lock
5
6from test_support import pyro_only
7
8
9class LockTests(unittest.TestCase):
10 def test_lock_acquire_and_release_locks_and_releases(self):
11 lock = Lock()
12 self.assertFalse(lock.locked())
13 self.assertTrue(lock.acquire())
14 self.assertTrue(lock.locked())
15 lock.release()
16 self.assertFalse(lock.locked())
17
18 def test_lock_as_context_manager_locks_and_releases(self):
19 lock = Lock()
20 self.assertFalse(lock.locked())
21 with lock:
22 self.assertTrue(lock.locked())
23 self.assertFalse(lock.locked())
24
25 def test_lock_acquire_nonblocking_locks(self):
26 lock = Lock()
27 self.assertFalse(lock.locked())
28 self.assertTrue(lock.acquire(False))
29 self.assertTrue(lock.locked())
30 lock.release()
31
32 def test_lock_acquire_nonblocking_does_not_lock(self):
33 lock = Lock()
34 self.assertTrue(lock.acquire())
35 self.assertTrue(lock.locked())
36 self.assertFalse(lock.acquire(False))
37 self.assertTrue(lock.locked())
38 lock.release()
39
40 self.assertTrue(lock.acquire(False))
41 self.assertTrue(lock.locked())
42 self.assertFalse(lock.acquire(False))
43 self.assertTrue(lock.locked())
44 lock.release()
45
46
47class ConditionTests(unittest.TestCase):
48 def test_dunder_init_creates_lock(self):
49 c = Condition()
50 self.assertIsNotNone(c._lock)
51
52 @pyro_only
53 def test_enter_exit_functionality(self):
54 c = Condition()
55 lock_count = c._lock._count
56 with c:
57 self.assertEqual(lock_count + 1, c._lock._count)
58 self.assertEqual(lock_count, c._lock._count)
59
60
61class EventTests(unittest.TestCase):
62 def test_dunder_init_clears_flag(self):
63 e = Event()
64 self.assertFalse(e.is_set())
65
66 def test_clear_clears_flag(self):
67 e = Event()
68 e.set()
69 self.assertTrue(e.is_set())
70 e.clear()
71 self.assertFalse(e.is_set())
72
73 def test_set_sets_flag(self):
74 e = Event()
75 self.assertFalse(e.is_set())
76 e.set()
77 self.assertTrue(e.is_set())
78
79 def test_wait_on_set_flag_returns(self):
80 e = Event()
81 e.set()
82 e.wait()
83 val = e.wait(5)
84 self.assertTrue(val)
85
86
87if __name__ == "__main__":
88 unittest.main()