this repo has no description
at trunk 88 lines 2.5 kB view raw
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()