3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/analysis/analysis_view.html">
9 <link rel="import" href="/tracing/analysis/stub_analysis_results.html">
10 <link rel="import" href="/tracing/test_utils.html">
11 <link rel="import" href="/tracing/selection.html">
12 <link rel="import" href="/tracing/trace_model.html">
17 tv.unittest.testSuite(function() {
18 var Model = tracing.TraceModel;
19 var Selection = tracing.Selection;
20 var AnalysisView = TracingAnalysisView;
21 var StubAnalysisResults = tracing.analysis.StubAnalysisResults;
22 var newSampleNamed = tracing.test_utils.newSampleNamed;
24 var createSelectionWithSingleSample = function() {
25 var model = new Model();
27 model.importTraces([], false, false, function() {
28 t53 = model.getOrCreateProcess(52).getOrCreateThread(53);
29 model.samples.push(newSampleNamed(t53, 'X', 'my-category',
30 ['a', 'b', 'c'], 0.184));
34 t53track.thread = t53;
36 var selection = new Selection();
38 assertEquals(0, selection.length);
39 selection.push(t53.samples[0]);
40 assertEquals(1, selection.length);
45 var createSelectionWithMultipleSamples = function() {
46 var model = new Model();
48 model.importTraces([], false, false, function() {
49 t53 = model.getOrCreateProcess(52).getOrCreateThread(53);
50 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['BBB'], 0));
51 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['AAA'], 0.02));
52 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['AAA'], 0.04));
53 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['Sleeping'], 0.06));
54 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['BBB'], 0.08));
55 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['AAA'], 0.10));
56 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['CCC'], 0.12));
57 model.samples.push(newSampleNamed(t53, 'X', 'cat', ['Sleeping'], 0.14));
61 t53track.thread = t53;
63 var selection = new Selection();
64 for (var i = 0; i < t53.samples.length; i++)
65 selection.push(t53.samples[i]);
69 test('instantiate_withSingleSample', function() {
70 var selection = createSelectionWithSingleSample();
72 var analysisEl = new AnalysisView();
73 analysisEl.selection = selection;
74 this.addHTMLOutput(analysisEl);
77 test('instantiate_withMultipleSamples', function() {
78 var selection = createSelectionWithMultipleSamples();
80 var analysisEl = new AnalysisView();
81 this.addHTMLOutput(analysisEl);
82 analysisEl.selection = selection;
85 test('analyzeSelectionWithSingleSample', function() {
86 var selection = createSelectionWithSingleSample();
88 var view = new SingleSampleAnalysisSubView();
89 var results = new StubAnalysisResults();
90 view.analyzeSingleSampleEvent_(results, selection[0], 'Sample Event');
91 assertEquals(1, results.tables.length);
92 var table = results.tables[0];
93 var header = results.headers[0];
94 assertEquals('Selected Sample Event:', header.label);
95 assertEquals(3, table.rows.length);
97 assertEquals('X', table.rows[0].text);
98 assertEquals(0.184, table.rows[1].time);
99 assertEquals('my-category: a', table.rows[2].text[0]);
100 assertEquals('my-category: b', table.rows[2].text[1]);
101 assertEquals('my-category: c', table.rows[2].text[2]);