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.
7 tvcm.require('tracing.test_utils');
8 tvcm.require('tracing.timeline_track_view');
9 tvcm.require('tracing.trace_model.slice_group');
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;
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));
21 var track = new SliceGroupTrack(new tracing.TimelineViewport());
23 var subRows = track.subRows;
25 assertEquals(0, track.badSlices_.length);
26 assertEquals(1, subRows.length);
27 assertEquals(2, subRows[0].length);
28 assertArrayEquals([sA, sB], subRows[0]);
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));
36 var track = new SliceGroupTrack(new tracing.TimelineViewport());
38 var subRows = track.subRows;
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]);
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));
53 var track = new SliceGroupTrack(new tracing.TimelineViewport());
55 var subRows = track.subRows;
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]);
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));
70 var track = new SliceGroupTrack(new tracing.TimelineViewport());
72 var subRows = track.subRows;
74 assertEquals(0, track.badSlices_.length);
75 assertEquals(1, subRows.length);
76 assertEquals(2, subRows[0].length);
77 assertArrayEquals([sA, sB], subRows[0]);
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));
85 var track = new SliceGroupTrack(new tracing.TimelineViewport());
87 var subRows = track.subRows;
89 assertEquals(0, track.badSlices_.length);
90 assertEquals(2, subRows.length);
91 assertArrayEquals([sA], subRows[0]);
92 assertArrayEquals([sB], subRows[1]);
95 test('subRowBuilderOutOfOrderAddition', function() {
96 var group = new SliceGroup();
98 // Pattern being tested:
100 // Where insertion is done backward.
101 var sB = group.pushSlice(newSliceNamed('b', 3, 1));
102 var sA = group.pushSlice(newSliceNamed('a', 1, 2));
104 var track = new SliceGroupTrack(new tracing.TimelineViewport());
106 var subRows = track.subRows;
108 assertEquals(0, track.badSlices_.length);
109 assertEquals(1, subRows.length);
110 assertEquals(2, subRows[0].length);
111 assertArrayEquals([sA, sB], subRows[0]);
114 test('subRowBuilderOutOfOrderAddition2', function() {
115 var group = new SliceGroup();
117 // Pattern being tested:
120 // Where insertion is done backward.
121 var sB = group.pushSlice(newSliceNamed('b', 3, 1));
122 var sA = group.pushSlice(newSliceNamed('a', 1, 5));
124 var track = new SliceGroupTrack(new tracing.TimelineViewport());
126 var subRows = track.subRows;
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]);
136 test('subRowBuilderOnNestedZeroLength', function() {
137 var group = new SliceGroup();
139 // Pattern being tested:
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));
146 var track = new SliceGroupTrack(new tracing.TimelineViewport());
148 var subRows = track.subRows;
150 assertEquals(0, track.badSlices_.length);
151 assertEquals(2, subRows.length);
152 assertArrayEquals([sA], subRows[0]);
153 assertArrayEquals([sB1, sB2], subRows[1]);
156 test('subRowBuilderOnGroup1', function() {
157 var group = new SliceGroup();
159 // Pattern being tested:
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));
166 var track = new SliceGroupTrack(new tracing.TimelineViewport());
168 var subRows = track.subRows;
170 assertEquals(0, track.badSlices_.length);
171 assertEquals(2, subRows.length);
172 assertArrayEquals([sA, sC], subRows[0]);
173 assertArrayEquals([sB], subRows[1]);
176 test('subRowBuilderOnGroup2', function() {
177 var group = new SliceGroup();
179 // Pattern being tested:
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));
188 var track = new SliceGroupTrack(new tracing.TimelineViewport());
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]);
199 test('trackFiltering', function() {
200 var group = new SliceGroup();
202 var sA = group.pushSlice(newSliceNamed('a', 1, 3));
203 var sB = group.pushSlice(newSliceNamed('b', 1.5, 1));
205 var track = new SliceGroupTrack(new tracing.TimelineViewport());
208 assertEquals(2, track.subRows.length);
209 assertTrue(track.hasVisibleContent);