<!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>TimelineCpu tests</title>
<script src="base.js"></script>
<script>
  base.require('unittest');
  base.require('test_utils');
  base.require('timeline_cpu');
</script>
</head>
<body>
<script>
  'use strict';

  var TimelineCpu = tracing.TimelineCpu;
  var TimelineSlice = tracing.TimelineSlice;

  function testCpuBounds_Empty() {
    var cpu = new TimelineCpu(undefined, 1);
    cpu.updateBounds();
    assertEquals(undefined, cpu.minTimestamp);
    assertEquals(undefined, cpu.maxTimestamp);
  }

  function testCpuBounds_OneSlice() {
    var cpu = new TimelineCpu(undefined, 1);
    cpu.slices.push(test_utils.newSlice(1, 3));
    cpu.updateBounds();
    assertEquals(1, cpu.minTimestamp);
    assertEquals(4, cpu.maxTimestamp);
  }

  function testGetOrCreateCounter() {
    var cpu = new TimelineCpu(undefined, 1);
    var ctrBar = cpu.getOrCreateCounter('foo', 'bar');
    var ctrBar2 = cpu.getOrCreateCounter('foo', 'bar');
    assertEquals(ctrBar2, ctrBar);
  }

  function testShiftTimestampsForward() {
    var cpu = new TimelineCpu(undefined, 1);
    var ctr = cpu.getOrCreateCounter('foo', 'bar');
    cpu.slices.push(test_utils.newSlice(1, 3));
    var shiftCount = 0;
    ctr.shiftTimestampsForward = function(ts) {
      if (ts == 0.32)
        shiftCount++;
    };
    cpu.slices.push(test_utils.newSlice(1, 3));
    cpu.shiftTimestampsForward(0.32);
    assertEquals(shiftCount, 1);
    assertEquals(1.32, cpu.slices[0].start);
  }
</script>
</body>
</html>