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
9 from telemetry.value import none_values
10 from telemetry.value import string
13 class TestBase(unittest.TestCase):
15 self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
16 self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
17 self.page_set.AddPageWithDefaultRunNavigate("http://www.baz.com/")
18 self.page_set.AddPageWithDefaultRunNavigate("http://www.foo.com/")
22 return self.page_set.pages
24 class StringValueTest(TestBase):
25 def testBuildbotValueType(self):
27 v = string.StringValue(page0, 'x', 'label', 'L1', important=True)
28 self.assertEquals('default', v.GetBuildbotDataType(
29 value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
30 self.assertEquals(['L1'], v.GetBuildbotValue())
31 self.assertEquals(('x', page0.display_name),
32 v.GetChartAndTraceNameForPerPageResult())
34 v = string.StringValue(page0, 'x', 'label', 'L1', important=False)
37 v.GetBuildbotDataType(value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
39 def testStringSamePageMerging(self):
41 v0 = string.StringValue(page0, 'x', 'label', 'L1')
42 v1 = string.StringValue(page0, 'x', 'label', 'L2')
43 self.assertTrue(v1.IsMergableWith(v0))
45 vM = string.StringValue.MergeLikeValuesFromSamePage([v0, v1])
46 self.assertEquals(page0, vM.page)
47 self.assertEquals('x', vM.name)
48 self.assertEquals('label', vM.units)
49 self.assertEquals(True, vM.important)
50 self.assertEquals(['L1', 'L2'], vM.values)
52 def testStringDifferentPageMerging(self):
55 v0 = string.StringValue(page0, 'x', 'label', 'L1')
56 v1 = string.StringValue(page1, 'x', 'label', 'L2')
58 vM = string.StringValue.MergeLikeValuesFromDifferentPages([v0, v1])
59 self.assertEquals(None, vM.page)
60 self.assertEquals('x', vM.name)
61 self.assertEquals('label', vM.units)
62 self.assertEquals(True, vM.important)
63 self.assertEquals(['L1', 'L2'], vM.values)
65 def testStringWithNoneValueMerging(self):
67 v0 = string.StringValue(page0, 'x', 'unit', 'L1')
68 v1 = string.StringValue(page0, 'x', 'unit', None, none_value_reason='n')
69 self.assertTrue(v1.IsMergableWith(v0))
71 vM = string.StringValue.MergeLikeValuesFromSamePage([v0, v1])
72 self.assertEquals(None, vM.values)
73 self.assertEquals(none_values.MERGE_FAILURE_REASON,
76 def testStringWithNoneValueMustHaveNoneReason(self):
78 self.assertRaises(none_values.NoneValueMissingReason,
79 lambda: string.StringValue(page0, 'x', 'unit', None))
81 def testStringWithNoneReasonMustHaveNoneValue(self):
83 self.assertRaises(none_values.ValueMustHaveNoneValue,
84 lambda: string.StringValue(page0, 'x', 'unit', 'L1',
85 none_value_reason='n'))
88 v = string.StringValue(None, 'x', 'unit', 'foo', important=False)
89 d = v.AsDictWithoutBaseClassEntries()
91 self.assertEquals(d, {
95 def testNoneValueAsDict(self):
96 v = string.StringValue(None, 'x', 'unit', None, important=False,
97 none_value_reason='n')
98 d = v.AsDictWithoutBaseClassEntries()
100 self.assertEquals(d, {
102 'none_value_reason': 'n'
105 def testFromDict(self):
113 v = value.Value.FromDict(d, {})
115 self.assertTrue(isinstance(v, string.StringValue))
116 self.assertEquals(v.value, 'foo')
118 def testFromDictNoneValue(self):
124 'none_value_reason': 'n'
127 v = value.Value.FromDict(d, {})
129 self.assertTrue(isinstance(v, string.StringValue))
130 self.assertEquals(v.value, None)
131 self.assertEquals(v.none_value_reason, 'n')