| <!DOCTYPE HTML> |
| <html> |
| <!-- |
| Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| <head> |
| <title>TimelineSliceGroup tests</title> |
| <script src="base.js"></script> |
| <script> |
| base.require('unittest'); |
| base.require('test_utils'); |
| base.require('timeline_slice_group'); |
| </script> |
| </head> |
| <body> |
| <script> |
| 'use strict'; |
| |
| var TimelineSlice = tracing.TimelineSlice; |
| var TimelineSliceGroup = tracing.TimelineSliceGroup; |
| var newSlice = test_utils.newSlice; |
| var newSliceNamed = test_utils.newSliceNamed; |
| |
| function testBasicBeginEnd() { |
| var group = new TimelineSliceGroup(); |
| assertEquals(group.openSliceCount, 0); |
| var sliceA = group.beginSlice('', 'a', 1, {a: 1}); |
| assertEquals(1, group.openSliceCount); |
| assertEquals('a', sliceA.title); |
| assertEquals(1, sliceA.start); |
| assertEquals(1, sliceA.args.a); |
| |
| var sliceB = group.endSlice(3); |
| assertEquals(sliceA, sliceB); |
| assertEquals(2, sliceB.duration); |
| } |
| |
| function testNestedBeginEnd() { |
| var group = new TimelineSliceGroup(); |
| assertEquals(group.openSliceCount, 0); |
| group.beginSlice('', 'a', 1); |
| group.beginSlice('', 'b', 2); |
| group.endSlice(2.5); |
| group.endSlice(3); |
| |
| assertEquals(2, group.slices.length); |
| assertEquals('b', group.slices[0].title); |
| assertEquals(0.5, group.slices[0].duration); |
| |
| assertEquals('a', group.slices[1].title); |
| assertEquals(2, group.slices[1].duration); |
| } |
| |
| function testBounds() { |
| var group = new TimelineSliceGroup(); |
| group.updateBounds(); |
| assertEquals(group.minTimestamp, undefined); |
| assertEquals(group.maxTimestamp, undefined); |
| |
| group.pushSlice(newSlice(1, 3)); |
| group.pushSlice(newSlice(7, 2)); |
| group.updateBounds(); |
| assertEquals(1, group.minTimestamp); |
| assertEquals(9, group.maxTimestamp); |
| } |
| |
| function testBoundsWithPartial() { |
| var group = new TimelineSliceGroup(); |
| group.beginSlice('', 'a', 7); |
| group.updateBounds(); |
| assertEquals(7, group.minTimestamp); |
| assertEquals(7, group.maxTimestamp); |
| } |
| |
| function testBoundsWithTwoPartials() { |
| var group = new TimelineSliceGroup(); |
| group.beginSlice('', 'a', 0); |
| group.beginSlice('', 'a', 1); |
| group.updateBounds(); |
| assertEquals(0, group.minTimestamp); |
| assertEquals(1, group.maxTimestamp); |
| } |
| |
| function testBoundsWithBothPartialAndRegular() { |
| var group = new TimelineSliceGroup(); |
| group.updateBounds(); |
| assertEquals(undefined, group.minTimestamp); |
| assertEquals(undefined, group.maxTimestamp); |
| |
| group.pushSlice(newSlice(1, 3)); |
| group.beginSlice('', 'a', 7); |
| group.updateBounds(); |
| assertEquals(1, group.minTimestamp); |
| assertEquals(7, group.maxTimestamp); |
| } |
| |
| function testAutocloserBasic() { |
| var group = new TimelineSliceGroup(); |
| assertEquals(group.openSliceCount, 0); |
| |
| group.pushSlice(newSliceNamed('a', 1, 0.5)); |
| |
| group.beginSlice('', 'b', 2); |
| group.beginSlice('', 'c', 2.5); |
| group.endSlice(3); |
| |
| group.autoCloseOpenSlices(); |
| group.updateBounds(); |
| |
| assertEquals(1, group.minTimestamp); |
| assertEquals(3, group.maxTimestamp); |
| assertEquals(3, group.slices.length); |
| assertEquals('a', group.slices[0].title); |
| assertEquals('c', group.slices[1].title); |
| assertEquals('b', group.slices[2].title); |
| assertTrue(group.slices[2].didNotFinish); |
| assertEquals(1, group.slices[2].duration); |
| } |
| |
| function testAutocloserWithSubTasks() { |
| var group = new TimelineSliceGroup(); |
| assertEquals(group.openSliceCount, 0); |
| |
| group.beginSlice('', 'a', 1); |
| group.beginSlice('', 'b1', 2); |
| group.endSlice(3); |
| group.beginSlice('', 'b2', 3); |
| |
| group.autoCloseOpenSlices(); |
| assertEquals(3, group.slices.length); |
| assertEquals('b1', group.slices[0].title); |
| |
| assertEquals('b2', group.slices[1].title); |
| assertTrue(group.slices[1].didNotFinish); |
| assertEquals(0, group.slices[1].duration); |
| |
| assertEquals('a', group.slices[2].title); |
| assertTrue(group.slices[2].didNotFinish); |
| assertEquals(2, group.slices[2].duration); |
| } |
| |
| // TODO: test cretion of subSlices |
| </script> |
| </body> |
| </html> |