Home | History | Annotate | Download | only in tracks
      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 Copyright (c) 2012 The Chromium Authors. All rights reserved.
      5 Use of this source code is governed by a BSD-style license that can be
      6 found 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