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