• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE HTML>
2<html>
3<!--
4Copyright (c) 2012 The Chromium Authors. All rights reserved.
5Use of this source code is governed by a BSD-style license that can be
6found in the LICENSE file.
7-->
8<head i18n-values="dir:textdirection;">
9<title>TimelineAsyncSliceGroupTrack tests</title>
10<style>
11.timeline-container {
12  border: 1px solid red;
13}
14</style>
15<script src="/src/base.js"></script>
16<script>
17  base.require('unittest');
18  base.require('test_utils');
19  base.require('timeline');
20  base.require('timeline_model');
21</script>
22</head>
23<body>
24<script>
25  'use strict';
26
27  var TimelineAsyncSliceGroup = tracing.TimelineAsyncSliceGroup;
28  var TimelineAsyncSliceGroupTrack = tracks.TimelineAsyncSliceGroupTrack;
29  var TimelineProcess = tracing.TimelineProcess;
30  var TimelineThread = tracing.TimelineThread;
31  var newAsyncSlice = test_utils.newAsyncSlice;
32
33  function testAsyncSliceGroup_filterSubRows() {
34    var p1 = new TimelineProcess(1);
35    var t1 = new TimelineThread(p1, 1);
36    var g = new TimelineAsyncSliceGroup('a');
37    g.slices.push(newAsyncSlice(0, 1, t1, t1));
38    var track = new TimelineAsyncSliceGroupTrack();
39    track.group = g;
40
41    assertEquals(1, track.subRows_.length);
42    assertTrue(track.visible);
43
44    track.categoryFilter = new tracing.TimelineTitleFilter('x');
45    assertFalse(track.visible);
46
47    track.categoryFilter = new tracing.TimelineTitleFilter('a');
48    assertTrue(track.visible);
49    assertEquals(1, track.subRows_.length);
50  }
51
52  function testAsyncSliceGroup_rebuildSubRows_twoNonOverlappingSlices() {
53    var p1 = new TimelineProcess(1);
54    var t1 = new TimelineThread(p1, 1);
55    var g = new TimelineAsyncSliceGroup('a');
56    g.slices.push(newAsyncSlice(0, 1, t1, t1));
57    g.slices.push(newAsyncSlice(1, 1, t1, t1));
58    var track = new TimelineAsyncSliceGroupTrack();
59    track.group = g;
60    var subRows = track.subRows_;
61
62    assertEquals(1, subRows.length);
63    assertEquals(2, subRows[0].length);
64    assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
65    assertEquals(g.slices[1].subSlices[0], subRows[0][1]);
66  }
67
68  function testAsyncSliceGroup_rebuildSubRows_twoOverlappingSlices() {
69    var p1 = new TimelineProcess(1);
70    var t1 = new TimelineThread(p1, 1);
71    var g = new TimelineAsyncSliceGroup('a');
72    g.slices.push(newAsyncSlice(0, 1, t1, t1));
73    g.slices.push(newAsyncSlice(0, 1.5, t1, t1));
74    g.updateBounds();
75    var track = new TimelineAsyncSliceGroupTrack();
76    track.group = g;
77    var subRows = track.subRows_;
78
79    assertEquals(2, subRows.length);
80    assertEquals(1, subRows[0].length);
81    assertEquals(g.slices[0], subRows[0][0]);
82    assertEquals(1, subRows[1].length);
83    assertEquals(g.slices[1], subRows[1][0]);
84  }
85
86  function testAsyncSliceGroup_rebuildSubRows_threePartlyOverlappingSlices() {
87    var p1 = new TimelineProcess(1);
88    var t1 = new TimelineThread(p1, 1);
89    var g = new TimelineAsyncSliceGroup('a');
90    g.slices.push(newAsyncSlice(0, 1, t1, t1));
91    g.slices.push(newAsyncSlice(0, 1.5, t1, t1));
92    g.slices.push(newAsyncSlice(1, 1.5, t1, t1));
93    g.updateBounds();
94    var track = new TimelineAsyncSliceGroupTrack();
95    track.group = g;
96    var subRows = track.subRows_;
97
98    assertEquals(2, subRows.length);
99    assertEquals(2, subRows[0].length);
100    assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
101    assertEquals(g.slices[2].subSlices[0], subRows[0][1]);
102    assertEquals(1, subRows[1].length);
103    assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
104  }
105
106  function testAsyncSliceGroup_rebuildSubRows_twoOverlappingSlices() {
107    var p1 = new TimelineProcess(1);
108    var t1 = new TimelineThread(p1, 1);
109    var g = new TimelineAsyncSliceGroup('a');
110    g.slices.push(newAsyncSlice(0, 1, t1, t1));
111    g.slices.push(newAsyncSlice(0, 1.5, t1, t1));
112    g.slices.push(newAsyncSlice(2, 1, t1, t1));
113    g.updateBounds();
114    var track = new TimelineAsyncSliceGroupTrack();
115    track.group = g;
116    var subRows = track.subRows_;
117
118    assertEquals(2, subRows.length);
119    assertEquals(2, subRows[0].length);
120    assertEquals(g.slices[0].subSlices[0], subRows[0][0]);
121    assertEquals(g.slices[2].subSlices[0], subRows[0][1]);
122    assertEquals(1, subRows[1].length);
123    assertEquals(g.slices[1].subSlices[0], subRows[1][0]);
124  }
125
126  function testAsyncSliceGroup_computeSubGroups_twoThreadSpecificSlices() {
127    var p1 = new TimelineProcess(1);
128    var t1 = new TimelineThread(p1, 1);
129    var t2 = new TimelineThread(p1, 2);
130    var g = new TimelineAsyncSliceGroup('a');
131    g.slices.push(newAsyncSlice(0, 1, t1, t1));
132    g.slices.push(newAsyncSlice(0, 1, t2, t2));
133    var track = new TimelineAsyncSliceGroupTrack();
134    track.group = g;
135    var subRows = track.subRows_;
136
137    var subGroups = g.computeSubGroups();
138    assertEquals(2, subGroups.length);
139
140    assertEquals(g.name, subGroups[0].name);
141    assertEquals(1, subGroups[0].slices.length);
142    assertEquals(g.slices[0], subGroups[0].slices[0]);
143
144    assertEquals(g.name, subGroups[1].name);
145    assertEquals(1, subGroups[1].slices.length);
146    assertEquals(g.slices[1], subGroups[1].slices[0]);
147  }
148</script>
149</body>
150</html>
151