blob: 0c403be14f57805b7c2bb46257c2da46d86ee577 [file] [log] [blame]
// Copyright (c) 2013 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.
'use strict';
base.requireStylesheet('ui.value_bar');
base.require('base.unittest');
base.require('base.bbox2');
base.require('ui.dom_helpers');
base.require('ui.value_bar');
base.require('ui.value_display');
base.unittest.testSuite('ui.value_bar', function() {
function synClick(element) {
var event = new MouseEvent('click', {});
element.dispatchEvent(event);
}
function createValueBar(testFramework) {
var container = ui.createDiv();
container.style.position = 'relative';
container.style.height = '200px';
var valueBar = new ui.ValueBar();
valueBar.style['-webkit-flex-direction'] = 'column';
testFramework.addHTMLOutput(container);
container.appendChild(valueBar);
return valueBar;
}
test('vertical', function() {
var valueBar = createValueBar(this);
// Test public change event api
var changeEventsTested = 0;
valueBar.addEventListener('lowestValueChange', function(event) {
assertEquals(event.newValue, valueBar.lowestValue);
changeEventsTested++;
});
valueBar.addEventListener('highestValueChange', function(event) {
assertEquals(event.newValue, valueBar.highestValue);
changeEventsTested++;
});
valueBar.addEventListener('valueChange', function(event) {
assertEquals(event.newValue, valueBar.value);
changeEventsTested++;
});
valueBar.addEventListener('previewValueChange', function(event) {
assertEquals(event.newValue, valueBar.previewValue);
changeEventsTested++;
});
valueBar.lowestValue = 0.2;
assertEquals(valueBar.lowestValue, 0.2);
valueBar.highestValue = 3.0;
assertEquals(valueBar.highestValue, 3.0);
valueBar.value = 1.0;
assertEquals(valueBar.value, 1.0);
valueBar.previewValue = 0.5;
assertEquals(valueBar.previewValue, 0.5);
// Verify that all change events fired.
assertEquals(changeEventsTested, 4);
});
test('rangeControl', function() {
var valueBar = createValueBar(this);
var controlRange = valueBar.rangeControlPixelRange;
assertEquals(valueBar.fractionalValue_(0), 0);
assertEquals(valueBar.fractionalValue_(controlRange), 1);
assertEquals(valueBar.pixelByValue_(0), 0);
assertEquals(valueBar.pixelByValue_(1), controlRange);
var lowestValueButton = valueBar.querySelector('.lowest-value-control');
synClick(lowestValueButton);
assertEquals(valueBar.value, valueBar.lowestValue);
var highestValueButton = valueBar.querySelector('.highest-value-control');
synClick(highestValueButton);
assertEquals(valueBar.value, valueBar.highestValue);
});
test('valueDisplay', function() {
var valueBar = createValueBar(this);
var valueDisplay = new ui.ValueDisplay();
valueDisplay.style.position = 'absolute';
valueDisplay.style.left = '60px';
valueDisplay.style.width = '200px';
valueDisplay.style.display = '-webkit-flex';
valueDisplay['-webkit-flex-direction'] = 'column';
valueDisplay.valueBar = valueBar;
valueBar.parentElement.appendChild(valueDisplay);
valueBar.lowestValue = 0.2;
var lowestValueButton = valueBar.querySelector('.lowest-value-control');
synClick(lowestValueButton);
assertEquals('0.20 (\u2192 0.20)', valueDisplay.textContent);
valueBar.highestValue = 3.0;
var highestValueButton = valueBar.querySelector('.highest-value-control');
synClick(highestValueButton);
assertEquals('3.00 (\u2192 3.00)', valueDisplay.textContent);
});
test('horizontal', function() {
var container = ui.createDiv();
container.style.position = 'relative';
container.style.height = '200px';
var valueBar = new ui.ValueBar();
valueBar.style['-webkit-flex-direction'] = 'row';
this.addHTMLOutput(container);
container.appendChild(valueBar);
valueBar.vertical = false;
valueBar.lowestValue = -70;
assertEquals(valueBar.lowestValue, -70);
valueBar.highestValue = 70;
assertEquals(valueBar.highestValue, 70);
valueBar.value = 0.0;
assertEquals(valueBar.value, 0.0);
valueBar.previewValue = 0.5;
assertEquals(valueBar.previewValue, 0.5);
var controlRange = valueBar.rangeControlPixelRange;
assertEquals(valueBar.fractionalValue_(0), 0);
assertEquals(valueBar.fractionalValue_(controlRange), 1);
assertEquals(valueBar.pixelByValue_(0), 0);
assertEquals(valueBar.pixelByValue_(1), controlRange);
});
test('overrideContent', function() {
var container = ui.createDiv();
container.style.position = 'relative';
container.style.height = '200px';
var ABBar = ui.define('ab-bar');
ABBar.prototype = {
__proto__: ui.ValueBar.prototype,
updateLowestValueElement: function(element) {
element.style.fontSize = '25px';
element.textContent = 'A';
},
updateHighestValueElement: function(element) {
element.style.fontSize = '25px';
element.textContent = 'B';
}
};
var aBBar = new ABBar();
assertEquals('AB', aBBar.textContent);
});
});