blob: 416bea98ce3ca3dbf6bc71989e61b282ec4ea4e0 [file] [log] [blame]
Chris Craikb2cbf152015-07-28 16:26:29 -07001<!DOCTYPE html>
2<!--
3Copyright (c) 2013 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7
8<link rel="import" href="/core/test_utils.html">
9<link rel="import" href="/model/slice_group.html">
10
11<script>
12'use strict';
13
14tr.b.unittest.testSuite(function() {
15 var Slice = tr.model.Slice;
16 var SliceGroup = tr.model.SliceGroup;
17 var newSlice = tr.c.test_utils.newSlice;
18 var newSliceEx = tr.c.test_utils.newSliceEx;
19 var newSliceNamed = tr.c.test_utils.newSliceNamed;
20 var newFakeThread = tr.c.test_utils.newFakeThread;
21
22 test('findDescendentSlice', function() {
23 var group = new SliceGroup(newFakeThread());
24
25 var sA = group.pushSlice(newSliceEx(
26 { title: 'sA', start: 0.0, duration: 10.0 }));
27 var sB = group.pushSlice(newSliceEx(
28 { title: 'sB', start: 0.0, duration: 4.0 }));
29 var sC = group.pushSlice(newSliceEx(
30 { title: 'sC', start: 0.0, duration: 2.0 }));
31
32 group.createSubSlices();
33
34 assert.deepEqual(sB, sA.findDescendentSlice('sB'));
35 assert.deepEqual(sC, sA.findDescendentSlice('sC'));
36 assert.isUndefined(sA.findDescendentSlice('sD'));
37 });
38
39 test('iterateAllDescendents', function() {
40 var group = new SliceGroup(newFakeThread());
41
42 var sA = group.pushSlice(newSliceEx(
43 { title: 'sA', start: 0.0, duration: 10.0 }));
44 var sB = group.pushSlice(newSliceEx(
45 { title: 'sB', start: 0.0, duration: 4.0 }));
46 var sC = group.pushSlice(newSliceEx(
47 { title: 'sC', start: 0.0, duration: 2.0 }));
48
49 group.createSubSlices();
50
51 assert.deepEqual(sA.descendentSlices, [sB, sC]);
52 assert.deepEqual(sC.descendentSlices, []);
53 });
54
55 test('mostTopLevelSlice', function() {
56 var group = new SliceGroup(newFakeThread());
57
58 var sA = group.pushSlice(newSliceEx(
59 { title: 'sA', start: 0.0, duration: 10.0 }));
60 var sB = group.pushSlice(newSliceEx(
61 { title: 'sB', start: 0.0, duration: 4.0 }));
62 var sC = group.pushSlice(newSliceEx(
63 { title: 'sC', start: 0.0, duration: 2.0 }));
64
65 group.createSubSlices();
66
67 assert.equal(sA.mostTopLevelSlice, sA);
68 assert.equal(sB.mostTopLevelSlice, sA);
69 assert.equal(sC.mostTopLevelSlice, sA);
70 });
71
72 test('iterateAllAncestors', function() {
73 var group = new SliceGroup(newFakeThread());
74
75 var sA = group.pushSlice(newSliceEx(
76 { title: 'sA', start: 0.0, duration: 10.0 }));
77 var sB = group.pushSlice(newSliceEx(
78 { title: 'sB', start: 0.0, duration: 4.0 }));
79 var sC = group.pushSlice(newSliceEx(
80 { title: 'sC', start: 0.0, duration: 2.0 }));
81
82 group.createSubSlices();
83
84 // Note that we iterate ancestors from the leaves to the root
85 assert.deepEqual(sC.ancestorSlices, [sB, sA]);
86 assert.deepEqual(sA.ancestorSlices, []);
87 });
88
89 test('iterateAllSubsequentSlices', function() {
90 var group = new SliceGroup(newFakeThread());
91
92 // [ A ]
93 // [ B ][ D ][F]
94 // [C] [E]
95
96 var sA = group.pushSlice(newSliceEx(
97 { title: 'sA', start: 0.0, duration: 10.0 }));
98 var sB = group.pushSlice(newSliceEx(
99 { title: 'sB', start: 0.0, duration: 4.0 }));
100 var sC = group.pushSlice(newSliceEx(
101 { title: 'sC', start: 0.0, duration: 2.0 }));
102 var sD = group.pushSlice(newSliceEx(
103 { title: 'sD', start: 5.0, duration: 2.0 }));
104 var sE = group.pushSlice(newSliceEx(
105 { title: 'sE', start: 5.0, duration: 1.0 }));
106 var sF = group.pushSlice(newSliceEx(
107 { title: 'sF', start: 8.0, duration: 2.0 }));
108
109 group.createSubSlices();
110
111 assert.deepEqual(sA.subsequentSlices, [sB, sC, sD, sE, sF]);
112 assert.deepEqual(sD.subsequentSlices, [sE, sF]);
113 assert.deepEqual(sF.subsequentSlices, []);
114 });
115
116 test('ancestorAndSubsequentSlices', function() {
117 var group = new SliceGroup(newFakeThread());
118
119 // [ A ]
120 // [ B ][ D ][F]
121 // [C] [E]
122
123 var sA = group.pushSlice(newSliceEx(
124 { title: 'sA', start: 0.0, duration: 10.0 }));
125 var sB = group.pushSlice(newSliceEx(
126 { title: 'sB', start: 0.0, duration: 4.0 }));
127 var sC = group.pushSlice(newSliceEx(
128 { title: 'sC', start: 0.0, duration: 2.0 }));
129 var sD = group.pushSlice(newSliceEx(
130 { title: 'sD', start: 5.0, duration: 2.0 }));
131 var sE = group.pushSlice(newSliceEx(
132 { title: 'sE', start: 5.0, duration: 1.0 }));
133 var sF = group.pushSlice(newSliceEx(
134 { title: 'sF', start: 8.0, duration: 2.0 }));
135
136 group.createSubSlices();
137
138 assert.deepEqual(sD.ancestorAndSubsequentSlices, [sD, sA, sE, sF]);
139 });
140
141 test('entireHierarchy', function() {
142 var group = new SliceGroup(newFakeThread());
143
144 // [ A ]
145 // [ B ][ D ][F]
146 // [C] [E]
147
148 var sA = group.pushSlice(newSliceEx(
149 { title: 'sA', start: 0.0, duration: 10.0 }));
150 var sB = group.pushSlice(newSliceEx(
151 { title: 'sB', start: 0.0, duration: 4.0 }));
152 var sC = group.pushSlice(newSliceEx(
153 { title: 'sC', start: 0.0, duration: 2.0 }));
154 var sD = group.pushSlice(newSliceEx(
155 { title: 'sD', start: 5.0, duration: 2.0 }));
156 var sE = group.pushSlice(newSliceEx(
157 { title: 'sE', start: 5.0, duration: 1.0 }));
158 var sF = group.pushSlice(newSliceEx(
159 { title: 'sF', start: 8.0, duration: 2.0 }));
160
161 group.createSubSlices();
162
163 assert.deepEqual(sD.entireHierarchy, [sA, sB, sC, sD, sE, sF]);
164 });
165});
166</script>