Html程序  |  124行  |  3.5 KB

<!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 i18n-values="dir:textdirection;">
<title>Track tests</title>
<style>
.container {
  border: 1px solid red;
}
</style>
<script src="/src/base.js"></script>
<script>
  base.require('unittest');
  base.require('test_utils');
  base.require('timeline_track_view');
</script>
</head>
<body>
<script>
  'use strict';

  var Counter = tracing.model.Counter;
  var Viewport = tracing.TimelineViewport;
  var CounterTrack = tracing.tracks.CounterTrack;


  function testBasicCounter() {
    var testEl = this.addHTMLOutput();

    var ctr = new Counter(undefined,
                          'testBasicCounter', '', 'testBasicCounter');
    ctr.seriesNames = ['value1', 'value2'];
    ctr.seriesColors = [tracing.getStringColorId('testBasicCounter.value1'),
                        tracing.getStringColorId('testBasicCounter.value2')];
    ctr.timestamps = [0, 1, 2, 3, 4, 5, 6, 7];
    ctr.samples = [0, 5,
                   3, 3,
                   1, 1,
                   2, 1.1,
                   3, 0,
                   1, 7,
                   3, 0,
                   3.1, 0.5];
    ctr.updateBounds();

    var track = new CounterTrack();
    testEl.appendChild(track);
    track.heading = ctr.name;
    track.counter = ctr;
    track.viewport = new Viewport(testEl);
    track.viewport.xSetWorldBounds(0, 7.7, track.clientWidth);
  }

  function runTest(timestamps, samples, testFn) {
    var testEl = document.createElement('div');
    var ctr = new Counter(undefined,
                                  'foo', '', 'foo');
    var n = samples.length / timestamps.length;
    ctr.timestamps = timestamps;
    ctr.samples = samples;
    ctr.seriesNames = []
    ctr.seriesColors = []
    for (var i = 0; i < n; ++i) {
      ctr.seriesNames.push('value' + i);
      ctr.seriesColors.push(tracing.getStringColorId(ctr.seriesNames[i]));
    }
    ctr.updateBounds();

    var track = new CounterTrack();
    testEl.appendChild(track);
    this.addHTMLOutput(undefined, testEl);

    track.heading = ctr.name;
    track.counter = ctr;
    track.viewport = new Viewport(testEl);
    track.viewport.xSetWorldBounds(0, 10,
        track.firstCanvas.getBoundingClientRect().width);

    testFn(ctr, track);
  }

  function testBasicCounterXPointPicking() {
    var timestamps = [0, 1, 2, 3, 4, 5, 6, 7];
    var samples = [0, 5,
                   3, 3,
                   1, 1,
                   2, 1.1,
                   3, 0,
                   1, 7,
                   3, 0,
                   3.1, 0.5];
    runTest.call(this, timestamps, samples, function(ctr, track) {
      var clientRect = track.firstCanvas.getBoundingClientRect();
      var y75 = clientRect.top + 0.75 * clientRect.height;
      var sel;
      var vW = 10;
      var wW = clientRect.width;

      // In bounds.
      sel = new tracing.Selection();
      track.addIntersectingItemsToSelection((1.5/vW)*wW, y75, sel);
      assertEquals(1, sel.length);
      assertEquals(track, sel[0].track);
      assertEquals(ctr, sel[0].counter);
      assertEquals(1, sel[0].sampleIndex);

      // Outside bouds.
      sel = new tracing.Selection();
      track.addIntersectingItemsToSelection((-1/vW)*wW, y75, sel);
      assertEquals(0, sel.length);

      sel = new tracing.Selection();
      track.addIntersectingItemsToSelection((8/vW)*wW, y75, sel);
      assertEquals(0, sel.length);
    });
  }
</script>
</body>
</html>