<!doctype html>
<!--
Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<html>
<head>
  <meta charset="UTF-8">
  <title>core-selector-template-repeat</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

  <script src="../../webcomponentsjs/webcomponents.js"></script>
  <script src="../../web-component-tester/browser.js"></script>

  <link rel="import" href="../core-selector.html">

  <style>
    .core-selected {
      background: #ccc;
    }
  </style>

</head>
<body>

  <core-selector id="selector" selected="1">
    <template id="itemsTemplate" repeat="{{items}}">
      <div name="{{}}">{{}}</div>
    </template>
  </core-selector>

  <script>

    var s = document.querySelector('#selector');
    var t = document.querySelector('#itemsTemplate');

    suite('<template repeat...>', function() {

      test('supports repeated children', function(done) {
        t.model = {items: ['Item1', 'Item2', 'Item3', "Item4"]};
        asyncPlatformFlush(function() {
          // check items
          assert.equal(s.items.length, 4);
          assert.equal(s.selected, 1);
          // check selectedItem
          var item = s.selectedItem;
          assert.equal(s.items[1], item);
          // check selected class
          assert.isTrue(item.classList.contains('core-selected'));
          done();
        });
      });

    });

  </script>

</body>
</html>
