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.
7 from telemetry import value
8 from telemetry.page import page_set
11 class TestBase(unittest.TestCase):
13 self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
14 self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
15 self.page_set.AddPageWithDefaultRunNavigate("http://www.baz.com/")
16 self.page_set.AddPageWithDefaultRunNavigate("http://www.foo.com/")
20 return self.page_set.pages
22 class ValueForTest(value.Value):
24 def MergeLikeValuesFromSamePage(cls, values):
28 def MergeLikeValuesFromDifferentPages(cls, values,
29 group_by_name_suffix=False):
32 def GetBuildbotDataType(self, output_context):
35 def GetBuildbotValue(self):
38 def GetBuildbotMeasurementAndTraceNameForComputedSummaryResult(
42 def GetRepresentativeNumber(self):
45 def GetRepresentativeString(self):
49 def GetJSONTypeName():
52 class ValueForAsDictTest(ValueForTest):
54 def GetJSONTypeName():
57 class ValueForFromDictTest(ValueForTest):
59 def FromDict(value_dict, page_dict):
60 kwargs = value.Value.GetConstructorKwArgs(value_dict, page_dict)
61 return ValueForFromDictTest(**kwargs)
64 def GetJSONTypeName():
65 return 'value_for_from_dict_test'
67 class ValueTest(TestBase):
72 a = value.Value(page0, 'x', 'unit', important=False, description=None)
73 b = value.Value(page1, 'x', 'unit', important=False, description=None)
74 self.assertTrue(b.IsMergableWith(a))
76 def testIncompat(self):
79 a = value.Value(page0, 'x', 'unit', important=False, description=None)
80 b = value.Value(page0, 'x', 'incompatUnit', important=False,
82 self.assertFalse(b.IsMergableWith(a))
84 a = value.Value(page0, 'x', 'unit', important=False, description=None)
85 b = value.Value(page0, 'x', 'unit', important=True, description=None)
86 self.assertFalse(b.IsMergableWith(a))
88 a = value.Value(page0, 'x', 'unit', important=False, description=None)
89 b = ValueForTest(page0, 'x', 'unit', important=True, description=None)
90 self.assertFalse(b.IsMergableWith(a))
92 def testAsDictBaseKeys(self):
93 v = ValueForAsDictTest(None, 'x', 'unit', important=True, description=None)
96 self.assertEquals(d, {
102 def testAsDictWithPage(self):
103 page0 = self.pages[0]
105 v = ValueForAsDictTest(page0, 'x', 'unit', important=False,
109 self.assertIn('page_id', d)
111 def testAsDictWithoutPage(self):
112 v = ValueForAsDictTest(None, 'x', 'unit', important=False, description=None)
115 self.assertNotIn('page_id', d)
117 def testAsDictWithDescription(self):
118 v = ValueForAsDictTest(None, 'x', 'unit', important=False,
119 description='Some description.')
121 self.assertEqual('Some description.', d['description'])
123 def testAsDictWithoutDescription(self):
124 v = ValueForAsDictTest(None, 'x', 'unit', important=False, description=None)
125 self.assertNotIn('description', v.AsDict())
127 def testFromDictBaseKeys(self):
129 'type': 'value_for_from_dict_test',
134 v = value.Value.FromDict(d, None)
135 self.assertEquals(v.name, 'x')
136 self.assertTrue(isinstance(v, ValueForFromDictTest))
137 self.assertEquals(v.units, 'unit')
139 def testFromDictWithPage(self):
140 page0 = self.pages[0]
141 page_dict = {page0.id: page0}
144 'type': 'value_for_from_dict_test',
150 v = value.Value.FromDict(d, page_dict)
152 self.assertEquals(v.page.id, page0.id)
154 def testFromDictWithoutPage(self):
156 'type': 'value_for_from_dict_test',
161 v = value.Value.FromDict(d, {})
163 self.assertEquals(v.page, None)
165 def testFromDictWithDescription(self):
167 'type': 'value_for_from_dict_test',
173 v = value.Value.FromDict(d, {})
174 self.assertEquals(v.description, 'foo')
176 def testFromDictWithoutDescription(self):
178 'type': 'value_for_from_dict_test',
183 v = value.Value.FromDict(d, {})
184 self.assertEquals(v.description, None)
186 def testListOfValuesFromListOfDicts(self):
188 'type': 'value_for_from_dict_test',
193 'type': 'value_for_from_dict_test',
197 vs = value.Value.ListOfValuesFromListOfDicts([d0, d1], {})
198 self.assertEquals(vs[0].name, 'x')
199 self.assertEquals(vs[1].name, 'y')