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.timeline_viewport');
8 tvcm.require('tracing.test_utils');
9 tvcm.require('tracing.trace_model');
10 tvcm.require('tracing.selection');
11 tvcm.require('tracing.tracks.slice_track');
13 tvcm.unittest.testSuite('tracing.selection_test', function() {
14 test('selectionObject', function() {
15 var model = new tracing.TraceModel();
16 var p1 = model.getOrCreateProcess(1);
17 var t1 = p1.getOrCreateThread(1);
18 t1.sliceGroup.pushSlice(
19 new tracing.trace_model.ThreadSlice('', 'a', 0, 1, {}, 3));
20 t1.sliceGroup.pushSlice(
21 new tracing.trace_model.ThreadSlice('', 'a', 0, 5, {}, 1));
23 var sel = new tracing.Selection();
24 sel.push(t1.sliceGroup.slices[0]);
26 assertEquals(1, sel.bounds.min);
27 assertEquals(4, sel.bounds.max);
28 assertEquals(t1.sliceGroup.slices[0], sel[0]);
30 sel.push(t1.sliceGroup.slices[1]);
31 assertEquals(1, sel.bounds.min);
32 assertEquals(6, sel.bounds.max);
33 assertEquals(t1.sliceGroup.slices[1], sel[1]);
36 assertEquals(0, sel.length);
39 test('shiftedSelection', function() {
40 var model = new tracing.TraceModel();
41 var p1 = model.getOrCreateProcess(1);
42 var t1 = p1.getOrCreateThread(1);
43 t1.sliceGroup.pushSlice(
44 new tracing.trace_model.ThreadSlice('', 'a', 0, 1, {}, 3));
45 t1.sliceGroup.pushSlice(
46 new tracing.trace_model.ThreadSlice('', 'a', 0, 5, {}, 1));
48 var viewport = new tracing.TimelineViewport();
49 var track = new tracing.tracks.SliceTrack(viewport);
50 viewport.modelTrackContainer = track;
51 track.slices = t1.sliceGroup.slices;
53 viewport.rebuildEventToTrackMap();
56 var sel = new tracing.Selection();
57 sel.push(t1.sliceGroup.slices[0]);
59 var shifted = sel.getShiftedSelection(track.viewport, 1);
60 assertEquals(1, shifted.length);
61 assertEquals(t1.sliceGroup.slices[1], shifted[0]);