166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved.
266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be
366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file.
466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict';
666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('ui.container_that_decorates_its_children');
866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('ui.container_that_decorates_its_children', function() { // @suppress longLineCheck
1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  function createChild() {
1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var span = document.createElement('span');
1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    span.decorated = false;
1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    return span;
1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  }
1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  /**
1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis   * @constructor
1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis   */
2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  var SimpleContainer = ui.define('simple-container',
2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis                                  ui.ContainerThatDecoratesItsChildren);
2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  SimpleContainer.prototype = {
2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    __proto__: ui.ContainerThatDecoratesItsChildren.prototype,
2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    decorateChild_: function(child) {
2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertFalse(child.decorated);
2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      child.decorated = true;
2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    },
3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    undecorateChild_: function(child) {
3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertTrue(child.decorated);
3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      child.decorated = false;
3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    }
3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  };
3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('add', function() {
3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var container = new SimpleContainer();
3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(createChild());
4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(createChild());
4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(createChild());
4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(container.children[0].decorated);
4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(container.children[1].decorated);
4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(container.children[2].decorated);
4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('clearUsingTextContent', function() {
4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = createChild();
4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var container = new SimpleContainer();
5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(c0);
5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.textContent = '';
5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(c0.decorated);
5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('clear', function() {
5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = createChild();
5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var container = new SimpleContainer();
5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(c0);
5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.clear();
6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(c0.decorated);
6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('insertNewBefore', function() {
6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = createChild();
6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c1 = createChild();
6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var container = new SimpleContainer();
6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(c1);
6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.insertBefore(c0, c1);
6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(c0.decorated);
7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(c1.decorated);
7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('insertExistingBefore', function() {
7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = createChild();
7566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c1 = createChild();
7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var container = new SimpleContainer();
7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(c1);
7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(c0);
7966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.insertBefore(c0, c1);
8066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(c0.decorated);
8166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(c1.decorated);
8266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
8366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
8466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('testReplace', function() {
8566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c0 = createChild();
8666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var c1 = createChild();
8766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var container = new SimpleContainer();
8866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.appendChild(c0);
8966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    container.replaceChild(c1, c0);
9066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(c0.decorated);
9166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(c1.decorated);
9266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
9366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
9466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis});
95