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

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

  var SimpleView = tr.ui.b.define('div');
  SimpleView.prototype = {
    __proto__: HTMLDivElement.prototype,

    decorate: function() {
      this.item_ = undefined;
    },

    set item(item) {
      this.item_ = item;
    },
    get item() {
      return this.item_;
    }
  };

  test('listViewNamingWithField', function() {
    var lav = new ListAndAssociatedView();
    var list = [
      {x: '1'},
      {x: '2'},
      {x: '3'}
    ];
    var view = new SimpleView();

    lav.list = list;
    lav.listProperty = 'x';
    lav.view = view;
    lav.viewProperty = 'item';

    var lavListView = lav.listView;
    assert.equal(lavListView.children.length, 3);
    assert.equal(lavListView.children[0].textContent, '1');
  });

  test('listViewNamingWithProperty', function() {
    var lav = new ListAndAssociatedView();

    function X(x) {
      this.x = x;
    }
    X.prototype = {
      get title() {
        return this.x;
      }
    };

    var list = [
      new X('1'),
      new X('2'),
      new X('3')
    ];
    var view = new SimpleView();

    lav.list = list;
    lav.listProperty = 'title';
    lav.view = view;
    lav.viewProperty = 'item';

    var lavListView = lav.listView;
    assert.equal(lavListView.children.length, 3);
    assert.equal(lavListView.children[0].textContent, '1');
  });

  test('selectionChangesView', function() {
    var lav = new ListAndAssociatedView();
    var list = [
      {x: '1'},
      {x: '2'},
      {x: '3'}
    ];
    var view = new SimpleView();

    lav.list = list;
    lav.listProperty = 'x';
    lav.view = view;
    lav.viewProperty = 'item';
    var lavListView = lav.listView;

    assert.equal(list[0], view.item);
    lavListView.children[1].selected = true;
    assert.equal(list[1], view.item);
  });
});
</script>
