@@ -482,6 +482,30 @@ def orig(x, y):
482482 self .assertEqual (f .hits , 0 )
483483 self .assertEqual (f .misses , 1 )
484484
485+ # test size zero (which means "never-cache")
486+ f_cnt = 0
487+ @functools .lru_cache (0 )
488+ def f ():
489+ nonlocal f_cnt
490+ f_cnt += 1
491+ return 20
492+ self .assertEqual (f (), 20 )
493+ self .assertEqual (f (), 20 )
494+ self .assertEqual (f (), 20 )
495+ self .assertEqual (f_cnt , 3 )
496+
497+ # test size one
498+ f_cnt = 0
499+ @functools .lru_cache (1 )
500+ def f ():
501+ nonlocal f_cnt
502+ f_cnt += 1
503+ return 20
504+ self .assertEqual (f (), 20 )
505+ self .assertEqual (f (), 20 )
506+ self .assertEqual (f (), 20 )
507+ self .assertEqual (f_cnt , 1 )
508+
485509 def test_lfu (self ):
486510 def orig (x , y ):
487511 return 3 * x + y
@@ -503,6 +527,30 @@ def orig(x, y):
503527 self .assertEqual (f .hits , 0 )
504528 self .assertEqual (f .misses , 1 )
505529
530+ # test size zero (which means "never-cache")
531+ f_cnt = 0
532+ @functools .lfu_cache (0 )
533+ def f ():
534+ nonlocal f_cnt
535+ f_cnt += 1
536+ return 20
537+ self .assertEqual (f (), 20 )
538+ self .assertEqual (f (), 20 )
539+ self .assertEqual (f (), 20 )
540+ self .assertEqual (f_cnt , 3 )
541+
542+ # test size one
543+ f_cnt = 0
544+ @functools .lfu_cache (1 )
545+ def f ():
546+ nonlocal f_cnt
547+ f_cnt += 1
548+ return 20
549+ self .assertEqual (f (), 20 )
550+ self .assertEqual (f (), 20 )
551+ self .assertEqual (f (), 20 )
552+ self .assertEqual (f_cnt , 1 )
553+
506554def test_main (verbose = None ):
507555 test_classes = (
508556 TestPartial ,
0 commit comments