<!DOCTYPE html>
<!--
Copyright 2015 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="/core/brushing_state_controller.html">
<link rel="import" href="/ui/base/view_specific_brushing_state.html">

<script>
'use strict';

tr.b.unittest.testSuite(function() {
  var BrushingStateController = tr.c.BrushingStateController;

  function setStateElement(containerEl, viewId) {
    var stateElement = document.createElement(
        'tr-ui-b-view-specific-brushing-state');
    stateElement.viewId = viewId;
    containerEl.appendChild(stateElement);
    return stateElement;
  }

  function addChildDiv(element) {
    var child = element.ownerDocument.createElement('div');
    element.appendChild(child);
    return child;
  }

  function addShadowChildDiv(element) {
    var shadowRoot = element.createShadowRoot();
    return addChildDiv(shadowRoot);
  }

  test('instantiate_withoutBrushingStateController', function() {
    var containerEl = document.createElement('div');

    var stateElement1 = setStateElement(containerEl, 'test-view');
    assert.isUndefined(stateElement1.get());
    stateElement1.set({e: 2.71828});
    assert.isUndefined(stateElement1.get());
  });

  test('instantiate_withBrushingStateController', function() {
    var rootEl = document.createElement('div');
    var containerEl = addChildDiv(addShadowChildDiv(addChildDiv(rootEl)));
    rootEl.brushingStateController = new BrushingStateController(undefined);

    var stateElement1 = setStateElement(containerEl, 'test-view');
    assert.isUndefined(stateElement1.get());
    stateElement1.set({e: 2.71828});
    assert.deepEqual(stateElement1.get(), {e: 2.71828});

    var stateElement2 = setStateElement(containerEl, 'test-view-2');
    assert.isUndefined(stateElement2.get());
    stateElement2.set({pi: 3.14159});
    assert.deepEqual(stateElement2.get(), {pi: 3.14159});

    var stateElement3 = setStateElement(containerEl, 'test-view');
    assert.deepEqual(stateElement3.get(), {e: 2.71828});

    var stateElement4 = setStateElement(containerEl, 'test-view-2');
    assert.deepEqual(stateElement4.get(), {pi: 3.14159});
  });
});
</script>
