Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / unittest / decorators_unittest.py
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import unittest
6
7 from telemetry import decorators
8
9 _counter = 0
10
11
12 class Foo(object):
13   @decorators.Cache
14   def GetCountCached(self, _):
15     global _counter
16     _counter = _counter + 1
17     return _counter
18
19
20 def CreateFooUncached(_):
21   return Foo()
22
23
24 @decorators.Cache
25 def CreateFooCached(_):
26   return Foo()
27
28
29 class DecoratorsUnitTest(unittest.TestCase):
30   # pylint: disable=C0102
31
32   def testCacheDecorator(self):
33     self.assertNotEquals(CreateFooUncached(1), CreateFooUncached(2))
34     self.assertNotEquals(CreateFooCached(1), CreateFooCached(2))
35
36     self.assertNotEquals(CreateFooUncached(1), CreateFooUncached(1))
37     self.assertEquals(CreateFooCached(1), CreateFooCached(1))
38
39   def testCacheableMemberCachesOnlyForSameArgs(self):
40     foo = Foo()
41     value_of_one = foo.GetCountCached(1)
42
43     self.assertEquals(value_of_one, foo.GetCountCached(1))
44     self.assertNotEquals(value_of_one, foo.GetCountCached(2))
45
46   def testCacheableMemberHasSeparateCachesForSiblingInstances(self):
47     foo = Foo()
48     sibling_foo = Foo()
49
50     self.assertNotEquals(foo.GetCountCached(1), sibling_foo.GetCountCached(1))
51
52   def testCacheableMemberHasSeparateCachesForNextGenerationInstances(self):
53     foo = Foo()
54     last_generation_count = foo.GetCountCached(1)
55     foo = None
56     foo = Foo()
57
58     self.assertNotEquals(last_generation_count, foo.GetCountCached(1))