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. 4import os 5import unittest 6 7from telemetry import value 8from telemetry.page import page_set 9from telemetry.value import list_of_scalar_values 10 11class TestBase(unittest.TestCase): 12 def setUp(self): 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/") 17 18 @property 19 def pages(self): 20 return self.page_set.pages 21 22class ValueTest(TestBase): 23 def testListSamePageMergingWithSamePageConcatenatePolicy(self): 24 page0 = self.pages[0] 25 v0 = list_of_scalar_values.ListOfScalarValues( 26 page0, 'x', 'unit', 27 [1,2], same_page_merge_policy=value.CONCATENATE) 28 v1 = list_of_scalar_values.ListOfScalarValues( 29 page0, 'x', 'unit', 30 [3,4], same_page_merge_policy=value.CONCATENATE) 31 self.assertTrue(v1.IsMergableWith(v0)) 32 33 vM = (list_of_scalar_values.ListOfScalarValues. 34 MergeLikeValuesFromSamePage([v0, v1])) 35 self.assertEquals(page0, vM.page) 36 self.assertEquals('x', vM.name) 37 self.assertEquals('unit', vM.units) 38 self.assertEquals(value.CONCATENATE, vM.same_page_merge_policy) 39 self.assertEquals(True, vM.important) 40 self.assertEquals([1, 2, 3, 4], vM.values) 41 42 def testListSamePageMergingWithPickFirstPolicy(self): 43 page0 = self.pages[0] 44 v0 = list_of_scalar_values.ListOfScalarValues( 45 page0, 'x', 'unit', 46 [1,2], same_page_merge_policy=value.PICK_FIRST) 47 v1 = list_of_scalar_values.ListOfScalarValues( 48 page0, 'x', 'unit', 49 [3,4], same_page_merge_policy=value.PICK_FIRST) 50 self.assertTrue(v1.IsMergableWith(v0)) 51 52 vM = (list_of_scalar_values.ListOfScalarValues. 53 MergeLikeValuesFromSamePage([v0, v1])) 54 self.assertEquals(page0, vM.page) 55 self.assertEquals('x', vM.name) 56 self.assertEquals('unit', vM.units) 57 self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy) 58 self.assertEquals(True, vM.important) 59 self.assertEquals([1, 2], vM.values) 60 61 def testListDifferentPageMerging(self): 62 page0 = self.pages[0] 63 v0 = list_of_scalar_values.ListOfScalarValues( 64 page0, 'x', 'unit', 65 [1, 2], same_page_merge_policy=value.PICK_FIRST) 66 v1 = list_of_scalar_values.ListOfScalarValues( 67 page0, 'x', 'unit', 68 [3, 4], same_page_merge_policy=value.PICK_FIRST) 69 self.assertTrue(v1.IsMergableWith(v0)) 70 71 vM = (list_of_scalar_values.ListOfScalarValues. 72 MergeLikeValuesFromDifferentPages([v0, v1])) 73 self.assertEquals(None, vM.page) 74 self.assertEquals('x', vM.name) 75 self.assertEquals('unit', vM.units) 76 self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy) 77 self.assertEquals(True, vM.important) 78 self.assertEquals([1, 2, 3, 4], vM.values) 79