@@ -164,6 +164,34 @@ def test_decorator_info(self):
164
164
self .assertEqual (len (cache ), 0 )
165
165
self .assertEqual (wrapper .cache_info (), (0 , 0 , 2 , 0 ))
166
166
167
+ def test_decorator_lock_info (self ):
168
+ # hit: lock.count += 1
169
+ # miss: lock.count += 3 (get, update missed, set)
170
+ # info: lock.count += 1
171
+ # clear: lock.count += 1
172
+ cache = self .cache (2 )
173
+ lock = CountedLock ()
174
+ wrapper = cachetools .cached (cache , lock = lock , info = True )(self .func )
175
+ self .assertEqual (wrapper .cache_info (), (0 , 0 , 2 , 0 ))
176
+ self .assertEqual (lock .count , 1 )
177
+ self .assertEqual (wrapper (0 ), 0 )
178
+ self .assertEqual (lock .count , 4 )
179
+ self .assertEqual (wrapper .cache_info (), (0 , 1 , 2 , 1 ))
180
+ self .assertEqual (lock .count , 5 )
181
+ self .assertEqual (wrapper (1 ), 1 )
182
+ self .assertEqual (lock .count , 8 )
183
+ self .assertEqual (wrapper .cache_info (), (0 , 2 , 2 , 2 ))
184
+ self .assertEqual (lock .count , 9 )
185
+ self .assertEqual (wrapper (0 ), 0 )
186
+ self .assertEqual (lock .count , 10 )
187
+ self .assertEqual (wrapper .cache_info (), (1 , 2 , 2 , 2 ))
188
+ self .assertEqual (lock .count , 11 )
189
+ wrapper .cache_clear ()
190
+ self .assertEqual (lock .count , 12 )
191
+ self .assertEqual (len (cache ), 0 )
192
+ self .assertEqual (wrapper .cache_info (), (0 , 0 , 2 , 0 ))
193
+ self .assertEqual (lock .count , 13 )
194
+
167
195
def test_zero_size_cache_decorator (self ):
168
196
cache = self .cache (0 )
169
197
wrapper = cachetools .cached (cache )(self .func )
0 commit comments