70e741011b47bcf8424b33bb9ad8e443ff524402
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / page / page_filter_unittest.py
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.
4
5 import unittest
6
7 from telemetry.page import page
8 from telemetry.page import page_filter
9 from telemetry.page import page_set
10
11
12 class MockUrlFilterOptions(object):
13   def __init__(self, page_filter_include, page_filter_exclude):
14     self.page_filter = page_filter_include
15     self.page_filter_exclude = page_filter_exclude
16     self.page_label_filter = None
17     self.page_label_filter_exclude = None
18
19
20 class MockLabelFilterOptions(object):
21   def __init__(self, page_label_filter, page_label_filter_exclude):
22     self.page_filter = None
23     self.page_filter_exclude = None
24     self.page_label_filter = page_label_filter
25     self.page_label_filter_exclude = page_label_filter_exclude
26
27
28 class PageFilterTest(unittest.TestCase):
29   def setUp(self):
30     ps = page_set.PageSet()
31     self.p1 = page.Page('file://conformance/textures/tex-sub-image-2d.html', ps)
32     self.p1.name = 'WebglConformance.conformance_textures_tex_sub_image_2d'
33     self.p2 = page.Page('file://othersuite/textures/tex-sub-image-3d.html', ps)
34     self.p2.name = 'OtherSuite.textures_tex_sub_image_3d'
35     self.p3 = page.Page('file://othersuite/textures/tex-sub-image-3d.html', ps)
36     self.p3.name = None
37
38   def testURLPattern(self):
39     options = MockUrlFilterOptions('conformance/textures', '')
40     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
41     self.assertTrue(page_filter.PageFilter.IsSelected(self.p1))
42     self.assertFalse(page_filter.PageFilter.IsSelected(self.p2))
43     options = MockUrlFilterOptions('textures', '')
44     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
45     self.assertTrue(page_filter.PageFilter.IsSelected(self.p1))
46     self.assertTrue(page_filter.PageFilter.IsSelected(self.p2))
47     options = MockUrlFilterOptions('somethingelse', '')
48     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
49     self.assertFalse(page_filter.PageFilter.IsSelected(self.p1))
50     self.assertFalse(page_filter.PageFilter.IsSelected(self.p2))
51
52   def testName(self):
53     options = MockUrlFilterOptions('somethingelse', '')
54     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
55     self.assertFalse(page_filter.PageFilter.IsSelected(self.p1))
56     self.assertFalse(page_filter.PageFilter.IsSelected(self.p2))
57     options = MockUrlFilterOptions('textures_tex_sub_image', '')
58     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
59     self.assertTrue(page_filter.PageFilter.IsSelected(self.p1))
60     self.assertTrue(page_filter.PageFilter.IsSelected(self.p2))
61     options = MockUrlFilterOptions('WebglConformance', '')
62     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
63     self.assertTrue(page_filter.PageFilter.IsSelected(self.p1))
64     self.assertFalse(page_filter.PageFilter.IsSelected(self.p2))
65     options = MockUrlFilterOptions('OtherSuite', '')
66     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
67     self.assertFalse(page_filter.PageFilter.IsSelected(self.p1))
68     self.assertTrue(page_filter.PageFilter.IsSelected(self.p2))
69
70   def testNameNone(self):
71     options = MockUrlFilterOptions('othersuite/textures', '')
72     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
73     self.assertTrue(page_filter.PageFilter.IsSelected(self.p3))
74     options = MockUrlFilterOptions('conformance/textures', '')
75     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
76     self.assertFalse(page_filter.PageFilter.IsSelected(self.p3))
77
78   def testLabelFilters(self):
79     self.p1.label1 = True
80     self.p2.label1 = True
81     self.p3.label1 = False
82     self.p1.label2 = True
83     self.p2.label2 = False
84     self.p3.label2 = True
85
86     # Include both labels
87     options = MockLabelFilterOptions('label1,label2', '')
88     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
89     self.assertTrue(page_filter.PageFilter.IsSelected(self.p1))
90     self.assertTrue(page_filter.PageFilter.IsSelected(self.p2))
91     self.assertTrue(page_filter.PageFilter.IsSelected(self.p3))
92     # Exclude takes priority
93     options = MockLabelFilterOptions('label1', 'label2')
94     page_filter.PageFilter.ProcessCommandLineArgs(None, options)
95     self.assertFalse(page_filter.PageFilter.IsSelected(self.p1))
96     self.assertTrue(page_filter.PageFilter.IsSelected(self.p2))
97     self.assertFalse(page_filter.PageFilter.IsSelected(self.p3))