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 list_of_string_values
12 class TestBase(unittest.TestCase):
14 self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
15 self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
16 self.page_set.AddPageWithDefaultRunNavigate("http://www.baz.com/")
17 self.page_set.AddPageWithDefaultRunNavigate("http://www.foo.com/")
21 return self.page_set.pages
23 class ListOfStringValuesTest(TestBase):
24 def testListSamePageMergingWithSamePageConcatenatePolicy(self):
26 v0 = list_of_string_values.ListOfStringValues(
28 ['L1','L2'], same_page_merge_policy=value.CONCATENATE)
29 v1 = list_of_string_values.ListOfStringValues(
31 ['L3','L4'], same_page_merge_policy=value.CONCATENATE)
32 self.assertTrue(v1.IsMergableWith(v0))
34 vM = (list_of_string_values.ListOfStringValues.
35 MergeLikeValuesFromSamePage([v0, v1]))
36 self.assertEquals(page0, vM.page)
37 self.assertEquals('x', vM.name)
38 self.assertEquals('label', vM.units)
39 self.assertEquals(value.CONCATENATE, vM.same_page_merge_policy)
40 self.assertEquals(True, vM.important)
41 self.assertEquals(['L1', 'L2', 'L3', 'L4'], vM.values)
43 def testListSamePageMergingWithPickFirstPolicy(self):
45 v0 = list_of_string_values.ListOfStringValues(
47 ['L1','L2'], same_page_merge_policy=value.PICK_FIRST)
48 v1 = list_of_string_values.ListOfStringValues(
50 ['L3','L4'], same_page_merge_policy=value.PICK_FIRST)
51 self.assertTrue(v1.IsMergableWith(v0))
53 vM = (list_of_string_values.ListOfStringValues.
54 MergeLikeValuesFromSamePage([v0, v1]))
55 self.assertEquals(page0, vM.page)
56 self.assertEquals('x', vM.name)
57 self.assertEquals('label', vM.units)
58 self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy)
59 self.assertEquals(True, vM.important)
60 self.assertEquals(['L1', 'L2'], vM.values)
62 def testListDifferentPageMerging(self):
64 v0 = list_of_string_values.ListOfStringValues(
66 ['L1', 'L2'], same_page_merge_policy=value.PICK_FIRST)
67 v1 = list_of_string_values.ListOfStringValues(
69 ['L3', 'L4'], same_page_merge_policy=value.PICK_FIRST)
70 self.assertTrue(v1.IsMergableWith(v0))
72 vM = (list_of_string_values.ListOfStringValues.
73 MergeLikeValuesFromDifferentPages([v0, v1]))
74 self.assertEquals(None, vM.page)
75 self.assertEquals('x', vM.name)
76 self.assertEquals('label', vM.units)
77 self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy)
78 self.assertEquals(True, vM.important)
79 self.assertEquals(['L1', 'L2', 'L3', 'L4'], vM.values)
82 v = list_of_string_values.ListOfStringValues(
83 None, 'x', 'unit', ['foo', 'bar'],
84 same_page_merge_policy=value.PICK_FIRST, important=False)
85 d = v.AsDictWithoutBaseClassEntries()
87 self.assertEquals(d, {
88 'values': ['foo', 'bar']
91 def testFromDict(self):
93 'type': 'list_of_string_values',
96 'values': ['foo', 'bar']
98 v = value.Value.FromDict(d, {})
100 self.assertTrue(isinstance(v, list_of_string_values.ListOfStringValues))
101 self.assertEquals(v.values, ['foo', 'bar'])