OLD | NEW |
| (Empty) |
1 # Copyright 2013 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 import os | |
5 import unittest | |
6 | |
7 from telemetry.core import discover | |
8 from telemetry.core import util | |
9 | |
10 | |
11 class DiscoverTest(unittest.TestCase): | |
12 | |
13 def setUp(self): | |
14 self._base_dir = util.GetUnittestDataDir() | |
15 self._start_dir = os.path.join(self._base_dir, 'discoverable_classes') | |
16 self._base_class = Exception | |
17 | |
18 def testDiscoverClassesWithIndexByModuleName(self): | |
19 classes = discover.DiscoverClasses(self._start_dir, | |
20 self._base_dir, | |
21 self._base_class, | |
22 index_by_class_name=False) | |
23 | |
24 actual_classes = dict((name, cls.__name__) | |
25 for name, cls in classes.iteritems()) | |
26 expected_classes = { | |
27 'another_discover_dummyclass': 'DummyExceptionWithParameterImpl1', | |
28 'discover_dummyclass': 'DummyException', | |
29 'parameter_discover_dummyclass': 'DummyExceptionWithParameterImpl2' | |
30 } | |
31 self.assertEqual(actual_classes, expected_classes) | |
32 | |
33 def testDiscoverDirectlyConstructableClassesWithIndexByClassName(self): | |
34 classes = discover.DiscoverClasses(self._start_dir, | |
35 self._base_dir, | |
36 self._base_class, | |
37 directly_constructable=True) | |
38 | |
39 actual_classes = dict((name, cls.__name__) | |
40 for name, cls in classes.iteritems()) | |
41 expected_classes = { | |
42 'dummy_exception': 'DummyException', | |
43 'dummy_exception_impl1': 'DummyExceptionImpl1', | |
44 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
45 } | |
46 self.assertEqual(actual_classes, expected_classes) | |
47 | |
48 def testDiscoverClassesWithIndexByClassName(self): | |
49 classes = discover.DiscoverClasses(self._start_dir, self._base_dir, | |
50 self._base_class) | |
51 | |
52 actual_classes = dict((name, cls.__name__) | |
53 for name, cls in classes.iteritems()) | |
54 expected_classes = { | |
55 'dummy_exception': 'DummyException', | |
56 'dummy_exception_impl1': 'DummyExceptionImpl1', | |
57 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
58 'dummy_exception_with_parameter_impl1': | |
59 'DummyExceptionWithParameterImpl1', | |
60 'dummy_exception_with_parameter_impl2': | |
61 'DummyExceptionWithParameterImpl2' | |
62 } | |
63 self.assertEqual(actual_classes, expected_classes) | |
64 | |
65 def testDiscoverClassesWithPatternAndIndexByModule(self): | |
66 classes = discover.DiscoverClasses(self._start_dir, | |
67 self._base_dir, | |
68 self._base_class, | |
69 pattern='another*', | |
70 index_by_class_name=False) | |
71 | |
72 actual_classes = dict((name, cls.__name__) | |
73 for name, cls in classes.iteritems()) | |
74 expected_classes = { | |
75 'another_discover_dummyclass': 'DummyExceptionWithParameterImpl1' | |
76 } | |
77 self.assertEqual(actual_classes, expected_classes) | |
78 | |
79 def testDiscoverDirectlyConstructableClassesWithPatternAndIndexByClassName( | |
80 self): | |
81 classes = discover.DiscoverClasses(self._start_dir, | |
82 self._base_dir, | |
83 self._base_class, | |
84 pattern='another*', | |
85 directly_constructable=True) | |
86 | |
87 actual_classes = dict((name, cls.__name__) | |
88 for name, cls in classes.iteritems()) | |
89 expected_classes = { | |
90 'dummy_exception_impl1': 'DummyExceptionImpl1', | |
91 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
92 } | |
93 self.assertEqual(actual_classes, expected_classes) | |
94 | |
95 def testDiscoverClassesWithPatternAndIndexByClassName(self): | |
96 classes = discover.DiscoverClasses(self._start_dir, | |
97 self._base_dir, | |
98 self._base_class, | |
99 pattern='another*') | |
100 | |
101 actual_classes = dict((name, cls.__name__) | |
102 for name, cls in classes.iteritems()) | |
103 expected_classes = { | |
104 'dummy_exception_impl1': 'DummyExceptionImpl1', | |
105 'dummy_exception_impl2': 'DummyExceptionImpl2', | |
106 'dummy_exception_with_parameter_impl1': | |
107 'DummyExceptionWithParameterImpl1', | |
108 } | |
109 self.assertEqual(actual_classes, expected_classes) | |
110 | |
111 | |
112 class ClassWithoutInitDefOne: # pylint: disable=old-style-class, no-init | |
113 pass | |
114 | |
115 | |
116 class ClassWithoutInitDefTwo(object): | |
117 pass | |
118 | |
119 | |
120 class ClassWhoseInitOnlyHasSelf(object): | |
121 def __init__(self): | |
122 pass | |
123 | |
124 | |
125 class ClassWhoseInitWithDefaultArguments(object): | |
126 def __init__(self, dog=1, cat=None, cow=None, fud='a'): | |
127 pass | |
128 | |
129 | |
130 class ClassWhoseInitWithDefaultArgumentsAndNonDefaultArguments(object): | |
131 def __init__(self, x, dog=1, cat=None, fish=None, fud='a'): | |
132 pass | |
133 | |
134 | |
135 class IsDirectlyConstructableTest(unittest.TestCase): | |
136 | |
137 def testIsDirectlyConstructableReturnsTrue(self): | |
138 self.assertTrue(discover.IsDirectlyConstructable(ClassWithoutInitDefOne)) | |
139 self.assertTrue(discover.IsDirectlyConstructable(ClassWithoutInitDefTwo)) | |
140 self.assertTrue(discover.IsDirectlyConstructable(ClassWhoseInitOnlyHasSelf)) | |
141 self.assertTrue( | |
142 discover.IsDirectlyConstructable(ClassWhoseInitWithDefaultArguments)) | |
143 | |
144 def testIsDirectlyConstructableReturnsFalse(self): | |
145 self.assertFalse( | |
146 discover.IsDirectlyConstructable( | |
147 ClassWhoseInitWithDefaultArgumentsAndNonDefaultArguments)) | |
OLD | NEW |