| <!DOCTYPE html> |
| <!-- |
| Copyright 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="/tracing/model/event_set.html"> |
| <link rel="import" href="/tracing/model/model.html"> |
| <link rel="import" href="/tracing/model/power_sample.html"> |
| <link rel="import" href="/tracing/model/power_series.html"> |
| <link rel="import" href="/tracing/ui/analysis/frame_power_usage_chart.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| test('instantiate_noSamples', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(undefined, [0]); |
| |
| assert.isUndefined(chart.chart); |
| }); |
| |
| test('instantiate_noVSyncs', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), []); |
| |
| assert.isUndefined(chart.chart); |
| }); |
| |
| test('instantiate_noSamplesOrVSyncs', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(undefined, []); |
| |
| assert.isUndefined(chart.chart); |
| }); |
| |
| test('instantiate_oneFrame', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var vSyncTimestamps = [0]; |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| this.addHTMLOutput(chart); |
| |
| var expectedChartData = [ |
| { x: 0, f1: 1 }, |
| { x: 1, f1: 2 }, |
| { x: 2, f1: 3 }, |
| { x: 3, f1: 2 } |
| ]; |
| assert.sameDeepMembers(chart.chart.data, expectedChartData); |
| }); |
| |
| test('instantiate_twoFrames', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var vSyncTimestamps = [0, 4]; |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| series.addPowerSample(4, 2000); |
| series.addPowerSample(5, 3000); |
| series.addPowerSample(6, 4000); |
| series.addPowerSample(7, 3000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| this.addHTMLOutput(chart); |
| |
| var expectedChartData = [ |
| { x: 0, f1: 1 }, |
| { x: 1, f1: 2 }, |
| { x: 2, f1: 3 }, |
| { x: 3, f1: 2 }, |
| { x: 0, f2: 2 }, |
| { x: 1, f2: 3 }, |
| { x: 2, f2: 4 }, |
| { x: 3, f2: 3 } |
| ]; |
| assert.sameDeepMembers(chart.chart.data, expectedChartData); |
| }); |
| |
| test('instantiate_twoFramesDifferentXValues', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| // Power samples taken at 0, 1, 2, and 3s after frame start. |
| var vSyncTimestamps = [0, 4]; |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| // Power samples taken at 0.5, 1.5, 2.5, and 3.5s after frame start. |
| series.addPowerSample(4.5, 2000); |
| series.addPowerSample(5.5, 3000); |
| series.addPowerSample(6.5, 4000); |
| series.addPowerSample(7.5, 3000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| this.addHTMLOutput(chart); |
| |
| var expectedChartData = [ |
| { x: 0, f1: 1 }, |
| { x: 1, f1: 2 }, |
| { x: 2, f1: 3 }, |
| { x: 3, f1: 2 }, |
| { x: 0.5, f2: 2 }, |
| { x: 1.5, f2: 3 }, |
| { x: 2.5, f2: 4 }, |
| { x: 3.5, f2: 3 } |
| ]; |
| assert.sameDeepMembers(chart.chart.data, expectedChartData); |
| }); |
| |
| test('instantiate_samplesBeforeFirstVSync', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var vSyncTimestamps = [4]; |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| series.addPowerSample(4, 2000); |
| series.addPowerSample(5, 3000); |
| series.addPowerSample(6, 4000); |
| series.addPowerSample(7, 3000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| this.addHTMLOutput(chart); |
| |
| var expectedChartData = [ |
| { x: 0, f1: 2 }, |
| { x: 1, f1: 3 }, |
| { x: 2, f1: 4 }, |
| { x: 3, f1: 3 } |
| ]; |
| assert.sameDeepMembers(chart.chart.data, expectedChartData); |
| }); |
| |
| test('instantiate_allSamplesBeforeFirstVSync', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var vSyncTimestamps = [4]; |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| var expectedChartData = [ |
| { x: 0, f1: 2 }, |
| { x: 1, f1: 3 }, |
| { x: 2, f1: 4 }, |
| { x: 3, f1: 3 } |
| ]; |
| assert.isUndefined(chart.chart); |
| }); |
| |
| test('instantiate_vSyncsAfterLastPowerSample', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var vSyncTimestamps = [0, 4, 8, 12]; |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| series.addPowerSample(4, 2000); |
| series.addPowerSample(5, 3000); |
| series.addPowerSample(6, 4000); |
| series.addPowerSample(7, 3000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| this.addHTMLOutput(chart); |
| |
| var expectedChartData = [ |
| { x: 0, f1: 1 }, |
| { x: 1, f1: 2 }, |
| { x: 2, f1: 3 }, |
| { x: 3, f1: 2 }, |
| { x: 0, f2: 2 }, |
| { x: 1, f2: 3 }, |
| { x: 2, f2: 4 }, |
| { x: 3, f2: 3 } |
| ]; |
| assert.sameDeepMembers(chart.chart.data, expectedChartData); |
| }); |
| |
| test('instantiate_onlyVSyncAfterLastPowerSample', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var vSyncTimestamps = [8]; |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| series.addPowerSample(4, 2000); |
| series.addPowerSample(5, 3000); |
| series.addPowerSample(6, 4000); |
| series.addPowerSample(7, 3000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| assert.isUndefined(chart.chart); |
| }); |
| |
| |
| test('instantiate_samplesNotInChronologicalOrder', function() { |
| var series = new tr.model.PowerSeries(new tr.Model().device); |
| |
| var vSyncTimestamps = [0, 4]; |
| series.addPowerSample(4, 2000); |
| series.addPowerSample(5, 3000); |
| series.addPowerSample(6, 4000); |
| series.addPowerSample(7, 3000); |
| series.addPowerSample(0, 1000); |
| series.addPowerSample(1, 2000); |
| series.addPowerSample(2, 3000); |
| series.addPowerSample(3, 2000); |
| |
| var chart = document.createElement('tr-ui-a-frame-power-usage-chart'); |
| chart.setData(new tr.model.EventSet(series.samples), vSyncTimestamps); |
| |
| this.addHTMLOutput(chart); |
| |
| var expectedChartData = [ |
| { x: 0, f1: 1 }, |
| { x: 1, f1: 2 }, |
| { x: 2, f1: 3 }, |
| { x: 3, f1: 2 }, |
| { x: 0, f2: 2 }, |
| { x: 1, f2: 3 }, |
| { x: 2, f2: 4 }, |
| { x: 3, f2: 3 } |
| ]; |
| assert.sameDeepMembers(chart.chart.data, expectedChartData); |
| }); |
| }); |
| </script> |