blob: d5c15f3be92f2dfab05727926e8784fcf946affc [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2015 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.
-->
<link rel='import' href='/model/device.html'>
<link rel='import' href='/model/model.html'>
<link rel='import' href='/model/power_series.html'>
<link rel='import' href='/ui/timeline_viewport.html'>
<link rel='import' href='/ui/tracks/container_to_track_map.html'>
<link rel='import' href='/ui/tracks/drawing_container.html'>
<link rel="import" href="/ui/tracks/power_series_track.html">
<script>
'use strict';
tr.b.unittest.testSuite(function() {
var Device = tr.model.Device;
var Model = tr.Model;
var PowerSeries = tr.model.PowerSeries;
var PowerSeriesTrack = tr.ui.tracks.PowerSeriesTrack;
var createDrawingContainer = function(series) {
var div = document.createElement('div');
var viewport = new tr.ui.TimelineViewport(div);
var drawingContainer = new tr.ui.tracks.DrawingContainer(viewport);
div.appendChild(drawingContainer);
if (series) {
series.updateBounds();
setDisplayTransformFromBounds(viewport, series.bounds);
}
return drawingContainer;
};
/**
* Sets the mapping between the input range of timestamps and the output range
* of horizontal pixels.
*/
var setDisplayTransformFromBounds = function(viewport, bounds) {
var dt = new tr.ui.TimelineDisplayTransform();
var pixelRatio = window.devicePixelRatio || 1;
var chartPixelWidth =
(window.innerWidth - tr.c.constants.HEADING_WIDTH) * pixelRatio;
dt.xSetWorldBounds(bounds.min, bounds.max, chartPixelWidth);
viewport.setDisplayTransformImmediately(dt);
};
test('instantiate', function() {
var series = new PowerSeries(new Model().device);
series.addPowerSample(0, 1);
series.addPowerSample(0.5, 2);
series.addPowerSample(1, 3);
series.addPowerSample(1.5, 4);
var drawingContainer = createDrawingContainer(series);
var track = new PowerSeriesTrack(drawingContainer.viewport);
track.powerSeries = series;
drawingContainer.appendChild(track);
this.addHTMLOutput(drawingContainer);
});
test('hasVisibleContent_trueWithPowerSamplesPresent', function() {
var series = new PowerSeries(new Model().device);
series.addPowerSample(0, 1);
series.addPowerSample(0.5, 2);
series.addPowerSample(1, 3);
series.addPowerSample(1.5, 4);
var drawingContainer = createDrawingContainer(series);
var track = new PowerSeriesTrack(drawingContainer.viewport);
track.powerSeries = series;
assert.isTrue(track.hasVisibleContent);
});
test('hasVisibleContent_falseWithUndefinedPowerSeries', function() {
var drawingContainer = createDrawingContainer(undefined);
var track = new PowerSeriesTrack(drawingContainer.viewport);
track.powerSeries = undefined;
assert.notOk(track.hasVisibleContent);
});
test('hasVisibleContent_falseWithEmptyPowerSeries', function() {
var series = new PowerSeries(new Model().device);
var drawingContainer = createDrawingContainer(series);
var track = new PowerSeriesTrack(drawingContainer.viewport);
track.powerSeries = series;
assert.notOk(track.hasVisibleContent);
});
test('addContainersToTrackMap', function() {
var series = new PowerSeries(new Model().device);
var drawingContainer = createDrawingContainer(series);
var powerSeriesTrack = new PowerSeriesTrack(drawingContainer.viewport);
powerSeriesTrack.powerSeries = series;
var containerToTrackMap = new tr.ui.tracks.ContainerToTrackMap();
powerSeriesTrack.addContainersToTrackMap(containerToTrackMap);
assert.equal(
containerToTrackMap.getTrackByStableId('Device.PowerSeries'),
powerSeriesTrack);
});
});
</script>