list_of_scalar_values_unittest.py revision f2477e01787aa58f445919b809d89e252beef54f
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.list_of_scalar_values import ListOfScalarValues
10
11class TestBase(unittest.TestCase):
12  def setUp(self):
13    self.page_set =  page_set.PageSet.FromDict({
14      "description": "hello",
15      "archive_path": "foo.wpr",
16      "pages": [
17        {"url": "http://www.bar.com/"},
18        {"url": "http://www.baz.com/"},
19        {"url": "http://www.foo.com/"}
20        ]
21      }, os.path.dirname(__file__))
22
23  @property
24  def pages(self):
25    return self.page_set.pages
26
27class ValueTest(TestBase):
28  def testListSamePageMergingWithSamePageConcatenatePolicy(self):
29    page0 = self.pages[0]
30    v0 = ListOfScalarValues(
31        page0, 'x', 'unit',
32        [1,2], same_page_merge_policy=value.CONCATENATE)
33    v1 = ListOfScalarValues(
34        page0, 'x', 'unit',
35        [3,4], same_page_merge_policy=value.CONCATENATE)
36    self.assertTrue(v1.IsMergableWith(v0))
37
38    vM = ListOfScalarValues.MergeLikeValuesFromSamePage([v0, v1])
39    self.assertEquals(page0, vM.page)
40    self.assertEquals('x', vM.name)
41    self.assertEquals('unit', vM.units)
42    self.assertEquals(value.CONCATENATE, vM.same_page_merge_policy)
43    self.assertEquals(True, vM.important)
44    self.assertEquals([1, 2, 3, 4], vM.values)
45
46  def testListSamePageMergingWithPickFirstPolicy(self):
47    page0 = self.pages[0]
48    v0 = ListOfScalarValues(
49        page0, 'x', 'unit',
50        [1,2], same_page_merge_policy=value.PICK_FIRST)
51    v1 = ListOfScalarValues(
52        page0, 'x', 'unit',
53        [3,4], same_page_merge_policy=value.PICK_FIRST)
54    self.assertTrue(v1.IsMergableWith(v0))
55
56    vM = ListOfScalarValues.MergeLikeValuesFromSamePage([v0, v1])
57    self.assertEquals(page0, vM.page)
58    self.assertEquals('x', vM.name)
59    self.assertEquals('unit', vM.units)
60    self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy)
61    self.assertEquals(True, vM.important)
62    self.assertEquals([1, 2], vM.values)
63
64  def testListDifferentPageMerging(self):
65    page0 = self.pages[0]
66    v0 = ListOfScalarValues(
67        page0, 'x', 'unit',
68        [1, 2], same_page_merge_policy=value.PICK_FIRST)
69    v1 = ListOfScalarValues(
70        page0, 'x', 'unit',
71        [3, 4], same_page_merge_policy=value.PICK_FIRST)
72    self.assertTrue(v1.IsMergableWith(v0))
73
74    vM = ListOfScalarValues.MergeLikeValuesFromDifferentPages([v0, v1])
75    self.assertEquals(None, vM.page)
76    self.assertEquals('x', vM.name)
77    self.assertEquals('unit', vM.units)
78    self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy)
79    self.assertEquals(True, vM.important)
80    self.assertEquals([1, 2, 3, 4], vM.values)
81