<!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/base/list_view.html">
<script>
'use strict';

tr.b.unittest.testSuite(function() {
  var ListView = tr.ui.b.ListView;

  test('instantiate', function() {
    var view = new ListView();
    var i1 = view.addItem('item 1');
    var i2 = view.addItem('item 2');
    var i3 = view.addItem('item 3');
    this.addHTMLOutput(view);
  });

  test('programmaticSelection', function() {
    var view = new ListView();
    var i1 = view.addItem('item 1');
    var i2 = view.addItem('item 2');
    var i3 = view.addItem('item 3');

    i2.selected = true;
    assert.isTrue(i2.hasAttribute('selected'));
    i3.selected = true;
    assert.isFalse(i2.hasAttribute('selected'));
    assert.isTrue(i3.hasAttribute('selected'));
  });

  test('clickSelection', function() {
    var view = new ListView();
    var didFireSelectionChange = false;
    view.addEventListener('selection-changed', function() {
      didFireSelectionChange = true;
    });
    var i1 = view.addItem('item 1');
    var i2 = view.addItem('item 2');
    var i3 = view.addItem('item 3');

    didFireSelectionChange = false;
    i2.click();
    assert.isTrue(didFireSelectionChange);
    assert.equal(view.selectedElement, i2);

    didFireSelectionChange = false;
    i3.click();
    assert.isTrue(didFireSelectionChange);
    assert.equal(view.selectedElement, i3);

    // Click the same target again.
    didFireSelectionChange = false;
    i3.click();
    assert.isTrue(didFireSelectionChange);
    assert.isUndefined(view.selectedElement);

    didFireSelectionChange = false;
    i1.click();
    assert.isTrue(didFireSelectionChange);
    assert.equal(view.selectedElement, i1);
  });
});
</script>
