blob: a88ce35a6ee18931d3cde5a2e151eaa08aee0fa7 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import unittest
from telemetry import decorators
_counter = 0
class Foo(object):
@decorators.Cache
def GetCountCached(self, _):
global _counter
_counter = _counter + 1
return _counter
def CreateFooUncached(_):
return Foo()
@decorators.Cache
def CreateFooCached(_):
return Foo()
class DecoratorsUnitTest(unittest.TestCase):
# pylint: disable=C0102
def testCacheDecorator(self):
self.assertNotEquals(CreateFooUncached(1), CreateFooUncached(2))
self.assertNotEquals(CreateFooCached(1), CreateFooCached(2))
self.assertNotEquals(CreateFooUncached(1), CreateFooUncached(1))
self.assertEquals(CreateFooCached(1), CreateFooCached(1))
def testCacheableMemberCachesOnlyForSameArgs(self):
foo = Foo()
value_of_one = foo.GetCountCached(1)
self.assertEquals(value_of_one, foo.GetCountCached(1))
self.assertNotEquals(value_of_one, foo.GetCountCached(2))
def testCacheableMemberHasSeparateCachesForSiblingInstances(self):
foo = Foo()
sibling_foo = Foo()
self.assertNotEquals(foo.GetCountCached(1), sibling_foo.GetCountCached(1))
def testCacheableMemberHasSeparateCachesForNextGenerationInstances(self):
foo = Foo()
last_generation_count = foo.GetCountCached(1)
foo = None
foo = Foo()
self.assertNotEquals(last_generation_count, foo.GetCountCached(1))