3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/timeline_viewport.html">
9 <link rel="import" href="/tracing/test_utils.html">
10 <link rel="import" href="/tracing/trace_model.html">
11 <link rel="import" href="/tracing/selection.html">
12 <link rel="import" href="/tracing/tracks/slice_track.html">
17 tv.unittest.testSuite(function() {
18 test('selectionObject', function() {
19 var model = new tracing.TraceModel();
20 var p1 = model.getOrCreateProcess(1);
21 var t1 = p1.getOrCreateThread(1);
22 t1.sliceGroup.pushSlice(
23 new tracing.trace_model.ThreadSlice('', 'a', 0, 1, {}, 3));
24 t1.sliceGroup.pushSlice(
25 new tracing.trace_model.ThreadSlice('', 'a', 0, 5, {}, 1));
27 var sel = new tracing.Selection();
28 sel.push(t1.sliceGroup.slices[0]);
30 assertEquals(1, sel.bounds.min);
31 assertEquals(4, sel.bounds.max);
32 assertEquals(t1.sliceGroup.slices[0], sel[0]);
34 sel.push(t1.sliceGroup.slices[1]);
35 assertEquals(1, sel.bounds.min);
36 assertEquals(6, sel.bounds.max);
37 assertEquals(t1.sliceGroup.slices[1], sel[1]);
40 assertEquals(0, sel.length);
43 test('shiftedSelection', function() {
44 var model = new tracing.TraceModel();
45 var p1 = model.getOrCreateProcess(1);
46 var t1 = p1.getOrCreateThread(1);
47 t1.sliceGroup.pushSlice(
48 new tracing.trace_model.ThreadSlice('', 'a', 0, 1, {}, 3));
49 t1.sliceGroup.pushSlice(
50 new tracing.trace_model.ThreadSlice('', 'a', 0, 5, {}, 1));
52 var viewport = new tracing.TimelineViewport();
53 var track = new tracing.tracks.SliceTrack(viewport);
54 viewport.modelTrackContainer = track;
55 track.slices = t1.sliceGroup.slices;
57 viewport.rebuildEventToTrackMap();
60 var sel = new tracing.Selection();
61 sel.push(t1.sliceGroup.slices[0]);
63 var shifted = sel.getShiftedSelection(track.viewport, 1);
64 assertEquals(1, shifted.length);
65 assertEquals(t1.sliceGroup.slices[1], shifted[0]);
68 test('uniqueContents', function() {
69 var sample1 = {guid:1};
70 var sample2 = {guid:2};
72 var selection = new tracing.Selection();
74 selection.push(sample1);
75 selection.push(sample2);
76 assertEquals(2, selection.length);
78 selection.push(sample1);
79 assertEquals(2, selection.length);