Home | History | Annotate | Download | only in tracks
      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.
      4 
      5 'use strict';
      6 
      7 base.require('tracing.test_utils');
      8 base.require('tracing.timeline_track_view');
      9 base.require('tracing.trace_model.slice_group');
     10 
     11 base.unittest.testSuite('tracing.tracks.slice_group_track', function() {
     12   var SliceGroup = tracing.trace_model.SliceGroup;
     13   var SliceGroupTrack = tracing.tracks.SliceGroupTrack;
     14   var newSliceNamed = tracing.test_utils.newSliceNamed;
     15 
     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));
     20 
     21     var track = new SliceGroupTrack(new tracing.TimelineViewport());
     22     track.group = group;
     23     var subRows = track.subRows;
     24 
     25     assertEquals(0, track.badSlices_.length);
     26     assertEquals(1, subRows.length);
     27     assertEquals(2, subRows[0].length);
     28     assertArrayEquals([sA, sB], subRows[0]);
     29   });
     30 
     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));
     35 
     36     var track = new SliceGroupTrack(new tracing.TimelineViewport());
     37     track.group = group;
     38     var subRows = track.subRows;
     39 
     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]);
     46   });
     47 
     48   test('subRowBuilderNestedExactly', function() {
     49     var group = new SliceGroup();
     50     var sA = group.pushSlice(newSliceNamed('a', 1, 4));
     51     var sB = group.pushSlice(newSliceNamed('b', 1, 4));
     52 
     53     var track = new SliceGroupTrack(new tracing.TimelineViewport());
     54     track.group = group;
     55     var subRows = track.subRows;
     56 
     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]);
     63   });
     64 
     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));
     69 
     70     var track = new SliceGroupTrack(new tracing.TimelineViewport());
     71     track.group = group;
     72     var subRows = track.subRows;
     73 
     74     assertEquals(0, track.badSlices_.length);
     75     assertEquals(1, subRows.length);
     76     assertEquals(2, subRows[0].length);
     77     assertArrayEquals([sA, sB], subRows[0]);
     78   });
     79 
     80   test('subRowBuilderTwoInstantEvents', function() {
     81     var group = new SliceGroup();
     82     var sB = group.pushSlice(newSliceNamed('b', 1, 0));
     83     var sA = group.pushSlice(newSliceNamed('a', 1, 0));
     84 
     85     var track = new SliceGroupTrack(new tracing.TimelineViewport());
     86     track.group = group;
     87     var subRows = track.subRows;
     88 
     89     assertEquals(0, track.badSlices_.length);
     90     assertEquals(2, subRows.length);
     91     assertArrayEquals([sA], subRows[0]);
     92     assertArrayEquals([sB], subRows[1]);
     93   });
     94 
     95   test('subRowBuilderOutOfOrderAddition', function() {
     96     var group = new SliceGroup();
     97 
     98     // Pattern being tested:
     99     // [    a     ][   b   ]
    100     // Where insertion is done backward.
    101     var sB = group.pushSlice(newSliceNamed('b', 3, 1));
    102     var sA = group.pushSlice(newSliceNamed('a', 1, 2));
    103 
    104     var track = new SliceGroupTrack(new tracing.TimelineViewport());
    105     track.group = group;
    106     var subRows = track.subRows;
    107 
    108     assertEquals(0, track.badSlices_.length);
    109     assertEquals(1, subRows.length);
    110     assertEquals(2, subRows[0].length);
    111     assertArrayEquals([sA, sB], subRows[0]);
    112   });
    113 
    114   test('subRowBuilderOutOfOrderAddition2', function() {
    115     var group = new SliceGroup();
    116 
    117     // Pattern being tested:
    118     // [    a     ]
    119     //   [  b   ]
    120     // Where insertion is done backward.
    121     var sB = group.pushSlice(newSliceNamed('b', 3, 1));
    122     var sA = group.pushSlice(newSliceNamed('a', 1, 5));
    123 
    124     var track = new SliceGroupTrack(new tracing.TimelineViewport());
    125     track.group = group;
    126     var subRows = track.subRows;
    127 
    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]);
    134   });
    135 
    136   test('subRowBuilderOnNestedZeroLength', function() {
    137     var group = new SliceGroup();
    138 
    139     // Pattern being tested:
    140     // [    a    ]
    141     // [  b1 ]  []<- b2 where b2.duration = 0 and b2.end == a.end.
    142     var sB1 = group.pushSlice(newSliceNamed('b1', 1, 2));
    143     var sB2 = group.pushSlice(newSliceNamed('b2', 4, 0));
    144     var sA = group.pushSlice(newSliceNamed('a', 1, 3));
    145 
    146     var track = new SliceGroupTrack(new tracing.TimelineViewport());
    147     track.group = group;
    148     var subRows = track.subRows;
    149 
    150     assertEquals(0, track.badSlices_.length);
    151     assertEquals(2, subRows.length);
    152     assertArrayEquals([sA], subRows[0]);
    153     assertArrayEquals([sB1, sB2], subRows[1]);
    154   });
    155 
    156   test('subRowBuilderOnGroup1', function() {
    157     var group = new SliceGroup();
    158 
    159     // Pattern being tested:
    160     // [    a     ]   [  c   ]
    161     //   [  b   ]
    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));
    165 
    166     var track = new SliceGroupTrack(new tracing.TimelineViewport());
    167     track.group = group;
    168     var subRows = track.subRows;
    169 
    170     assertEquals(0, track.badSlices_.length);
    171     assertEquals(2, subRows.length);
    172     assertArrayEquals([sA, sC], subRows[0]);
    173     assertArrayEquals([sB], subRows[1]);
    174   });
    175 
    176   test('subRowBuilderOnGroup2', function() {
    177     var group = new SliceGroup();
    178 
    179     // Pattern being tested:
    180     // [    a     ]   [  d   ]
    181     //   [  b   ]
    182     //    [ c ]
    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));
    187 
    188     var track = new SliceGroupTrack(new tracing.TimelineViewport());
    189     track.group = group;
    190 
    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]);
    197   });
    198 
    199   test('trackFiltering', function() {
    200     var group = new SliceGroup();
    201 
    202     var sA = group.pushSlice(newSliceNamed('a', 1, 3));
    203     var sB = group.pushSlice(newSliceNamed('b', 1.5, 1));
    204 
    205     var track = new SliceGroupTrack(new tracing.TimelineViewport());
    206     track.group = group;
    207 
    208     assertEquals(2, track.subRows.length);
    209     assertTrue(track.hasVisibleContent);
    210 
    211     track.categoryFilter = new tracing.TitleFilter('x');
    212     assertFalse(track.hasVisibleContent);
    213 
    214     track.categoryFilter = new tracing.TitleFilter('a');
    215     assertTrue(track.hasVisibleContent);
    216     assertEquals(1, track.subRows.length);
    217 
    218     track.categoryFilter = new tracing.TitleFilter('b');
    219     assertTrue(track.hasVisibleContent);
    220     assertEquals(1, track.subRows.length);
    221   });
    222 });
    223