166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.test_utils'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.slice_group'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.trace_model.slice_group', function() { 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var Slice = tracing.trace_model.Slice; 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var SliceGroup = tracing.trace_model.SliceGroup; 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var newSlice = tracing.test_utils.newSlice; 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var newSliceNamed = tracing.test_utils.newSliceNamed; 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('basicBeginEnd', function() { 1706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 1806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(group.openSliceCount, 0); 1906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var sliceA = group.beginSlice('', 'a', 1, {a: 1}); 2006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, group.openSliceCount); 2106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('a', sliceA.title); 2206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, sliceA.start); 2306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, sliceA.args.a); 2406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 2506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var sliceB = group.endSlice(3); 2606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(sliceA, sliceB); 2706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, sliceB.duration); 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 2906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('nestedBeginEnd', function() { 3106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 3206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(group.openSliceCount, 0); 3306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'a', 1); 3406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'b', 2); 3506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.endSlice(2.5); 3606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.endSlice(3); 3706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 3806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, group.slices.length); 3906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('b', group.slices[0].title); 4006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(0.5, group.slices[0].duration); 4106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 4206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('a', group.slices[1].title); 4306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, group.slices[1].duration); 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 4506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('basicMerge', function() { 4706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 4806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 4906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 1); 5006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(2); 5106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'two', 3); 5206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(5); 5306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 5406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 5506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices.length); 5606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 5706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[0].title); 5806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].start); 5906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 6006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 6106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[1].title); 6206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[1].start); 6306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].duration); 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 6506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('nestedMerge', function() { 6706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 6806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 6906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 1); 7006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(4); 7106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'two', 2); 7206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(3); 7306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 7406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 7506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices.length); 7606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 7706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[0].title); 7806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[0].start); 7906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 8006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 8106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[1].title); 8206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[1].start); 8306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[1].duration); 8466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 8506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 8666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('startSplitMerge', function() { 8706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 8806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 8906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 2); 9006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(4); 9106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'two', 1); 9206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(3); 9306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 9406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 9506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices.length); 9606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 9706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[0].title); 9806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].start); 9906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 10006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 10106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two (cont.)', m.slices[1].title); 10206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].start); 10306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[1].duration); 10406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 10506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[2].title); 10606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[2].start); 10706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[2].duration); 10866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 10906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 11066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('startSplitTwoMerge', function() { 11106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 11206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 11306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 3); 11406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(6); 11506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'two', 1); 11606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'three', 2); 11706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(4); 11806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(5); 11906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 12006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 12106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(5, m.slices.length); 12206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 12306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three', m.slices[0].title); 12406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[0].start); 12506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 12606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 12706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[1].title); 12806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[1].start); 12906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].duration); 13006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 13106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[2].title); 13206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[2].start); 13306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[2].duration); 13406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 13506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two (cont.)', m.slices[3].title); 13606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[3].start); 13706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[3].duration); 13806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 13906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[4].title); 14006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[4].start); 14106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[4].duration); 14266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 14306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 14466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('startSplitTwiceMerge', function() { 14506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 14606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 14706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 2); 14806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'two', 3); 14906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(5); 15006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(6); 15106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'three', 1); 15206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(4); 15306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 15406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 15506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(5, m.slices.length); 15606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 15706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three', m.slices[0].title); 15806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].start); 15906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 16006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 16106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[1].title); 16206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].start); 16306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[1].duration); 16406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 16506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[2].title); 16606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[2].start); 16706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[2].duration); 16806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 16906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[3].title); 17006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[3].start); 17106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[3].duration); 17206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 17306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[4].title); 17406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[4].start); 17506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(4, m.slices[4].duration); 17666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 17706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 17866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('endSplitMerge', function() { 17906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 18006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 18106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 1); 18206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(3); 18306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'two', 2); 18406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(4); 18506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 18606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 18706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices.length); 18806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 18906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[0].title); 19006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[0].start); 19106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 19206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 19306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[1].title); 19406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[1].start); 19506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].duration); 19606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 19706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two (cont.)', m.slices[2].title); 19806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[2].start); 19906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[2].duration); 20066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 20106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 20266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('endSplitTwoMerge', function() { 20306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 20406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 20506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 1); 20606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(4); 20706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'two', 2); 20806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'three', 3); 20906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(5); 21006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(6); 21106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 21206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 21306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(5, m.slices.length); 21406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 21506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three', m.slices[0].title); 21606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[0].start); 21706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 21806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 21906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[1].title); 22006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].start); 22106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].duration); 22206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 22306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[2].title); 22406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[2].start); 22506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[2].duration); 22606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 22706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[3].title); 22806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(4, m.slices[3].start); 22906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[3].duration); 23006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 23106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two (cont.)', m.slices[4].title); 23206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(4, m.slices[4].start); 23306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[4].duration); 23466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 23506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 23666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('endSplitTwiceMerge', function() { 23706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 23806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 23906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 1); 24006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'two', 2); 24106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(4); 24206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(5); 24306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'three', 3); 24406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(6); 24506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 24606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 24706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(5, m.slices.length); 24806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 24906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three', m.slices[0].title); 25006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[0].start); 25106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 25206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 25306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[1].title); 25406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].start); 25506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].duration); 25606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 25706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[2].title); 25806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(4, m.slices[2].start); 25906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[2].duration); 26006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 26106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[3].title); 26206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[3].start); 26306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(4, m.slices[3].duration); 26406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 26506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[4].title); 26606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(5, m.slices[4].start); 26706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[4].duration); 26866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 26906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 27006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // Input: 27106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // A: | one | | two | 27206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // 27306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // B: | three | 27406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // 27506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // Output: 27606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // | one | three | two | 27706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // | three | | three | 27866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('splitTwiceMerge', function() { 27906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var a = new SliceGroup(); 28006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var b = new SliceGroup(); 28106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'one', 1); 28206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(3); 28306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.beginSlice('', 'two', 4); 28406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis a.endSlice(6); 28506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.beginSlice('', 'three', 2); 28606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis b.endSlice(5); 28706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 28806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var m = SliceGroup.merge(a, b); 28906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(5, m.slices.length); 29006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 29106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three', m.slices[0].title); 29206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[0].start); 29306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[0].duration); 29406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 29506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('one', m.slices[1].title); 29606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[1].start); 29706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[1].duration); 29806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 29906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[2].title); 30006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, m.slices[2].start); 30106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[2].duration); 30206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 30306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('three (cont.)', m.slices[3].title); 30406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(4, m.slices[3].start); 30506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, m.slices[3].duration); 30606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 30706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('two', m.slices[4].title); 30806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(4, m.slices[4].start); 30906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, m.slices[4].duration); 31066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 31106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 31266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('bounds', function() { 31306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 31406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.updateBounds(); 31506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(group.bounds.min, undefined); 31606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(group.bounds.max, undefined); 31706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 31806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.pushSlice(newSlice(1, 3)); 31906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.pushSlice(newSlice(7, 2)); 32006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.updateBounds(); 32106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, group.bounds.min); 32206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(9, group.bounds.max); 32366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 32406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 32566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('boundsWithPartial', function() { 32606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 32706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'a', 7); 32806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.updateBounds(); 32906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(7, group.bounds.min); 33006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(7, group.bounds.max); 33166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 33206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 33366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('boundsWithTwoPartials', function() { 33406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 33506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'a', 0); 33606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'a', 1); 33706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.updateBounds(); 33806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(0, group.bounds.min); 33906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, group.bounds.max); 34066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 34106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 34266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('boundsWithBothPartialAndRegular', function() { 34306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 34406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.updateBounds(); 34506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(undefined, group.bounds.min); 34606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(undefined, group.bounds.max); 34706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 34806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.pushSlice(newSlice(1, 3)); 34906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'a', 7); 35006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.updateBounds(); 35106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, group.bounds.min); 35206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(7, group.bounds.max); 35366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 35406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 35566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('autocloserBasic', function() { 35606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 35706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(group.openSliceCount, 0); 35806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 35906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.pushSlice(newSliceNamed('a', 1, 0.5)); 36006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 36106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'b', 2); 36206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'c', 2.5); 36306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.endSlice(3); 36406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 36506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.autoCloseOpenSlices(); 36606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.updateBounds(); 36706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 36806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, group.bounds.min); 36906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, group.bounds.max); 37006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, group.slices.length); 37106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('a', group.slices[0].title); 37206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('c', group.slices[1].title); 37306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('b', group.slices[2].title); 37406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertTrue(group.slices[2].didNotFinish); 37506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(1, group.slices[2].duration); 37666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 37706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 37866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis test('autocloserWithSubTasks', function() { 37906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis var group = new SliceGroup(); 38006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(group.openSliceCount, 0); 38106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 38206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'a', 1); 38306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'b1', 2); 38406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.endSlice(3); 38506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.beginSlice('', 'b2', 3); 38606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 38706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis group.autoCloseOpenSlices(); 38806db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(3, group.slices.length); 38906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('b1', group.slices[0].title); 39006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 39106db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('b2', group.slices[1].title); 39206db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertTrue(group.slices[1].didNotFinish); 39306db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(0, group.slices[1].duration); 39406db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 39506db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals('a', group.slices[2].title); 39606db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertTrue(group.slices[2].didNotFinish); 39706db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis assertEquals(2, group.slices[2].duration); 39866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }); 39906db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis 40006db268ddce368501b62bd8999fcf2c3255b6de9Jamie Gennis // TODO: test cretion of subSlices 40166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 402