<!DOCTYPE html>
<!--
Copyright (c) 2013 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="/perf_insights/value/value.html">
<link rel="import" href="/perf_insights/value/run_info.html">
<link rel="import" href="/perf_insights/results/results.html">
<link rel="import" href="/perf_insights/wr/weather_report_map_function.html">
<link rel="import" href="/tracing/core/test_utils.html">
<link rel="import" href="/tracing/extras/rail/idle_interaction_record.html">

<script>
'use strict';

tr.b.unittest.testSuite(function() {
  var test_utils = tr.c.test_utils;
  var ThreadSlice = tr.model.ThreadSlice;

  test('basicWrTest', function() {
    var m = test_utils.newModel(function(m) {
      var p1 = m.getOrCreateProcess(1);
      var t2 = p1.getOrCreateThread(2);
      var t2_s1 = t2.sliceGroup.pushSlice(test_utils.newSliceEx({
        type: ThreadSlice,
        name: 'some_slice',
        start: 0, end: 10
      }));
      var t2_s2 = t2.sliceGroup.pushSlice(test_utils.newSliceEx({
        type: ThreadSlice,
        name: 'some_slice',
        start: 20, end: 30
      }));

      var idleIr = new tr.e.rail.IdleInteractionRecord(0, 10);
      m.interaction_records.push(idleIr);
      idleIr.associatedEvents.push(t2_s2);
    });

    var wr = pi.wr.getWeatherReportFromModel(m);
    assert.isDefined(wr.sliceCosts);
    assert.equal(wr.sliceCosts.length, 2);
  });
});

</script>