blob: a51213af1bcc834c042613968521e64925472d93 [file] [log] [blame]
# -*- coding: utf-8 -*-
# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Test cache_util module."""
import unittest
from bisect_kit import cache_util
class TestCache(unittest.TestCase):
"""Test cache_util.Cache."""
def test_basic_cache(self):
count = 0
@cache_util.Cache
def func(x):
nonlocal count
count += 1
return x
self.assertEqual(func.__name__, 'func')
self.assertEqual(func(111), 111)
self.assertEqual(count, 1)
self.assertEqual(func(111), 111)
self.assertEqual(count, 1)
self.assertEqual(func(222), 222)
self.assertEqual(count, 2)
def test_default_disabled(self):
count = 0
@cache_util.Cache.default_disabled
def func(x):
nonlocal count
count += 1
return x
self.assertEqual(func.__name__, 'func')
self.assertEqual(func(123), 123)
self.assertEqual(func(123), 123)
self.assertEqual(count, 2)
def test_enable_disable(self):
count = 0
@cache_util.Cache.default_disabled
def func(x):
nonlocal count
count += 1
return x
self.assertEqual(func(123), 123)
self.assertEqual(count, 1)
func.enable_cache()
self.assertEqual(func(123), 123)
self.assertEqual(count, 2)
func.disable_cache()
self.assertEqual(func(123), 123)
self.assertEqual(count, 3)
self.assertEqual(func(123), 123)
self.assertEqual(count, 4)
func.enable_cache()
self.assertEqual(func(123), 123)
self.assertEqual(count, 5)
self.assertEqual(func(123), 123)
self.assertEqual(count, 5)
if __name__ == '__main__':
unittest.main()