<!DOCTYPE html>
<!--
Copyright (c) 2014 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="/ui/analysis/analysis_link.html">
<link rel="import" href="/model/event_set.html">
<link rel="import" href="/model/model.html">

<script>
'use strict';

tr.b.unittest.testSuite(function() {
  test('testBasic', function() {
    var link = document.createElement('tr-ui-a-analysis-link');

    var i10 = new tr.model.ObjectInstance(
    {}, '0x1000', 'cat', 'name', 10);
    var s10 = i10.addSnapshot(10, {foo: 1});

    link.selection = new tr.model.EventSet(s10);
    this.addHTMLOutput(link);

    var didRSC = false;
    link.addEventListener('requestSelectionChange', function(e) {
      didRSC = true;
      assert.equal(e.selection[0], s10);
    });
    link.click();
    assert.isTrue(didRSC);
  });

  test('testGeneratorVersion', function() {
    var link = document.createElement('tr-ui-a-analysis-link');

    var i10 = new tr.model.ObjectInstance(
    {}, '0x1000', 'cat', 'name', 10);
    var s10 = i10.addSnapshot(10, {foo: 1});

    function selectionGenerator() {
      return new tr.model.EventSet(s10);
    }
    selectionGenerator.userFriendlyName = 'hello world';
    link.selection = selectionGenerator;
    this.addHTMLOutput(link);

    var didRSC = false;
    link.addEventListener('requestSelectionChange', function(e) {
      assert.equal(e.selection[0], s10);
      didRSC = true;
    });
    link.click();
    assert.isTrue(didRSC);
  });

});
</script>
