Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / src / tracing / tracks / slice_group_track_test.js
1 // Copyright (c) 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 'use strict';
6
7 tvcm.require('tracing.test_utils');
8 tvcm.require('tracing.timeline_track_view');
9 tvcm.require('tracing.trace_model.slice_group');
10
11 tvcm.unittest.testSuite('tracing.tracks.slice_group_track_test', function() {
12   var SliceGroup = tracing.trace_model.SliceGroup;
13   var SliceGroupTrack = tracing.tracks.SliceGroupTrack;
14   var newSliceNamed = tracing.test_utils.newSliceNamed;
15
16   test('subRowBuilderBasic', function() {
17     var group = new SliceGroup();
18     var sA = group.pushSlice(newSliceNamed('a', 1, 2));
19     var sB = group.pushSlice(newSliceNamed('a', 3, 1));
20
21     var track = new SliceGroupTrack(new tracing.TimelineViewport());
22     track.group = group;
23     var subRows = track.subRows;
24
25     assertEquals(0, track.badSlices_.length);
26     assertEquals(1, subRows.length);
27     assertEquals(2, subRows[0].length);
28     assertArrayEquals([sA, sB], subRows[0]);
29   });
30
31   test('subRowBuilderBasic2', function() {
32     var group = new SliceGroup();
33     var sA = group.pushSlice(newSliceNamed('a', 1, 4));
34     var sB = group.pushSlice(newSliceNamed('b', 3, 1));
35
36     var track = new SliceGroupTrack(new tracing.TimelineViewport());
37     track.group = group;
38     var subRows = track.subRows;
39
40     assertEquals(0, track.badSlices_.length);
41     assertEquals(2, subRows.length);
42     assertEquals(1, subRows[0].length);
43     assertEquals(1, subRows[1].length);
44     assertArrayEquals([sA], subRows[0]);
45     assertArrayEquals([sB], subRows[1]);
46   });
47
48   test('subRowBuilderNestedExactly', function() {
49     var group = new SliceGroup();
50     var sB = group.pushSlice(newSliceNamed('b', 1, 4));
51     var sA = group.pushSlice(newSliceNamed('a', 1, 4));
52
53     var track = new SliceGroupTrack(new tracing.TimelineViewport());
54     track.group = group;
55     var subRows = track.subRows;
56
57     assertEquals(0, track.badSlices_.length);
58     assertEquals(2, subRows.length);
59     assertEquals(1, subRows[0].length);
60     assertEquals(1, subRows[1].length);
61     assertArrayEquals([sB], subRows[0]);
62     assertArrayEquals([sA], subRows[1]);
63   });
64
65   test('subRowBuilderInstantEvents', function() {
66     var group = new SliceGroup();
67     var sA = group.pushSlice(newSliceNamed('a', 1, 0));
68     var sB = group.pushSlice(newSliceNamed('b', 2, 0));
69
70     var track = new SliceGroupTrack(new tracing.TimelineViewport());
71     track.group = group;
72     var subRows = track.subRows;
73
74     assertEquals(0, track.badSlices_.length);
75     assertEquals(1, subRows.length);
76     assertEquals(2, subRows[0].length);
77     assertArrayEquals([sA, sB], subRows[0]);
78   });
79
80   test('subRowBuilderTwoInstantEvents', function() {
81     var group = new SliceGroup();
82     var sA = group.pushSlice(newSliceNamed('a', 1, 0));
83     var sB = group.pushSlice(newSliceNamed('b', 1, 0));
84
85     var track = new SliceGroupTrack(new tracing.TimelineViewport());
86     track.group = group;
87     var subRows = track.subRows;
88
89     assertEquals(0, track.badSlices_.length);
90     assertEquals(2, subRows.length);
91     assertArrayEquals([sA], subRows[0]);
92     assertArrayEquals([sB], subRows[1]);
93   });
94
95   test('subRowBuilderOutOfOrderAddition', function() {
96     var group = new SliceGroup();
97
98     // Pattern being tested:
99     // [    a     ][   b   ]
100     // Where insertion is done backward.
101     var sB = group.pushSlice(newSliceNamed('b', 3, 1));
102     var sA = group.pushSlice(newSliceNamed('a', 1, 2));
103
104     var track = new SliceGroupTrack(new tracing.TimelineViewport());
105     track.group = group;
106     var subRows = track.subRows;
107
108     assertEquals(0, track.badSlices_.length);
109     assertEquals(1, subRows.length);
110     assertEquals(2, subRows[0].length);
111     assertArrayEquals([sA, sB], subRows[0]);
112   });
113
114   test('subRowBuilderOutOfOrderAddition2', function() {
115     var group = new SliceGroup();
116
117     // Pattern being tested:
118     // [    a     ]
119     //   [  b   ]
120     // Where insertion is done backward.
121     var sB = group.pushSlice(newSliceNamed('b', 3, 1));
122     var sA = group.pushSlice(newSliceNamed('a', 1, 5));
123
124     var track = new SliceGroupTrack(new tracing.TimelineViewport());
125     track.group = group;
126     var subRows = track.subRows;
127
128     assertEquals(0, track.badSlices_.length);
129     assertEquals(2, subRows.length);
130     assertEquals(1, subRows[0].length);
131     assertEquals(1, subRows[1].length);
132     assertArrayEquals([sA], subRows[0]);
133     assertArrayEquals([sB], subRows[1]);
134   });
135
136   test('subRowBuilderOnNestedZeroLength', function() {
137     var group = new SliceGroup();
138
139     // Pattern being tested:
140     // [    a    ]
141     // [  b1 ]  []<- b2 where b2.duration = 0 and b2.end == a.end.
142     var sA = group.pushSlice(newSliceNamed('a', 1, 3));
143     var sB1 = group.pushSlice(newSliceNamed('b1', 1, 2));
144     var sB2 = group.pushSlice(newSliceNamed('b2', 4, 0));
145
146     var track = new SliceGroupTrack(new tracing.TimelineViewport());
147     track.group = group;
148     var subRows = track.subRows;
149
150     assertEquals(0, track.badSlices_.length);
151     assertEquals(2, subRows.length);
152     assertArrayEquals([sA], subRows[0]);
153     assertArrayEquals([sB1, sB2], subRows[1]);
154   });
155
156   test('subRowBuilderOnGroup1', function() {
157     var group = new SliceGroup();
158
159     // Pattern being tested:
160     // [    a     ]   [  c   ]
161     //   [  b   ]
162     var sA = group.pushSlice(newSliceNamed('a', 1, 3));
163     var sB = group.pushSlice(newSliceNamed('b', 1.5, 1));
164     var sC = group.pushSlice(newSliceNamed('c', 5, 0));
165
166     var track = new SliceGroupTrack(new tracing.TimelineViewport());
167     track.group = group;
168     var subRows = track.subRows;
169
170     assertEquals(0, track.badSlices_.length);
171     assertEquals(2, subRows.length);
172     assertArrayEquals([sA, sC], subRows[0]);
173     assertArrayEquals([sB], subRows[1]);
174   });
175
176   test('subRowBuilderOnGroup2', function() {
177     var group = new SliceGroup();
178
179     // Pattern being tested:
180     // [    a     ]   [  d   ]
181     //   [  b   ]
182     //    [ c ]
183     var sA = group.pushSlice(newSliceNamed('a', 1, 3));
184     var sB = group.pushSlice(newSliceNamed('b', 1.5, 1));
185     var sC = group.pushSlice(newSliceNamed('c', 1.75, 0.5));
186     var sD = group.pushSlice(newSliceNamed('c', 5, 0.25));
187
188     var track = new SliceGroupTrack(new tracing.TimelineViewport());
189     track.group = group;
190
191     var subRows = track.subRows;
192     assertEquals(0, track.badSlices_.length);
193     assertEquals(3, subRows.length);
194     assertArrayEquals([sA, sD], subRows[0]);
195     assertArrayEquals([sB], subRows[1]);
196     assertArrayEquals([sC], subRows[2]);
197   });
198
199   test('trackFiltering', function() {
200     var group = new SliceGroup();
201
202     var sA = group.pushSlice(newSliceNamed('a', 1, 3));
203     var sB = group.pushSlice(newSliceNamed('b', 1.5, 1));
204
205     var track = new SliceGroupTrack(new tracing.TimelineViewport());
206     track.group = group;
207
208     assertEquals(2, track.subRows.length);
209     assertTrue(track.hasVisibleContent);
210   });
211 });