MCPcopy Index your code
hub / github.com/python/cpython / test_lru

Method test_lru

Lib/test/test_functools.py:1604–1691  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1602class TestLRU:
1603
1604 def test_lru(self):
1605 def orig(x, y):
1606 return 3 * x + y
1607 f = self.module.lru_cache(maxsize=20)(orig)
1608 hits, misses, maxsize, currsize = f.cache_info()
1609 self.assertEqual(maxsize, 20)
1610 self.assertEqual(currsize, 0)
1611 self.assertEqual(hits, 0)
1612 self.assertEqual(misses, 0)
1613
1614 domain = range(5)
1615 for i in range(1000):
1616 x, y = choice(domain), choice(domain)
1617 actual = f(x, y)
1618 expected = orig(x, y)
1619 self.assertEqual(actual, expected)
1620 hits, misses, maxsize, currsize = f.cache_info()
1621 self.assertTrue(hits > misses)
1622 self.assertEqual(hits + misses, 1000)
1623 self.assertEqual(currsize, 20)
1624
1625 f.cache_clear() # test clearing
1626 hits, misses, maxsize, currsize = f.cache_info()
1627 self.assertEqual(hits, 0)
1628 self.assertEqual(misses, 0)
1629 self.assertEqual(currsize, 0)
1630 f(x, y)
1631 hits, misses, maxsize, currsize = f.cache_info()
1632 self.assertEqual(hits, 0)
1633 self.assertEqual(misses, 1)
1634 self.assertEqual(currsize, 1)
1635
1636 # Test bypassing the cache
1637 self.assertIs(f.__wrapped__, orig)
1638 f.__wrapped__(x, y)
1639 hits, misses, maxsize, currsize = f.cache_info()
1640 self.assertEqual(hits, 0)
1641 self.assertEqual(misses, 1)
1642 self.assertEqual(currsize, 1)
1643
1644 # test size zero (which means "never-cache")
1645 @self.module.lru_cache(0)
1646 def f():
1647 nonlocal f_cnt
1648 f_cnt += 1
1649 return 20
1650 self.assertEqual(f.cache_info().maxsize, 0)
1651 f_cnt = 0
1652 for i in range(5):
1653 self.assertEqual(f(), 20)
1654 self.assertEqual(f_cnt, 5)
1655 hits, misses, maxsize, currsize = f.cache_info()
1656 self.assertEqual(hits, 0)
1657 self.assertEqual(misses, 5)
1658 self.assertEqual(currsize, 0)
1659
1660 # test size one
1661 @self.module.lru_cache(1)

Callers

nothing calls this directly

Calls 6

choiceFunction · 0.85
assertTrueMethod · 0.80
fFunction · 0.70
assertEqualMethod · 0.45
assertIsMethod · 0.45
__wrapped__Method · 0.45

Tested by

no test coverage detected