Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
// Copyright 2008 The Closure Library Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
goog.provide('goog.ui.ContainerRendererTest');
|
||||
goog.setTestOnly('goog.ui.ContainerRendererTest');
|
||||
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.style');
|
||||
goog.require('goog.testing.ExpectedFailures');
|
||||
goog.require('goog.testing.PropertyReplacer');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.testing.ui.rendererasserts');
|
||||
goog.require('goog.ui.Container');
|
||||
goog.require('goog.ui.ContainerRenderer');
|
||||
goog.require('goog.userAgent');
|
||||
|
||||
var renderer;
|
||||
var expectedFailures;
|
||||
var stubs = new goog.testing.PropertyReplacer();
|
||||
|
||||
function setUpPage() {
|
||||
expectedFailures = new goog.testing.ExpectedFailures();
|
||||
}
|
||||
|
||||
function setUp() {
|
||||
var sandbox = goog.dom.getElement('sandbox');
|
||||
|
||||
sandbox.appendChild(goog.dom.createDom('span', {
|
||||
id: 'noTabIndex'
|
||||
}, 'Test'));
|
||||
sandbox.appendChild(goog.dom.createDom('div', {
|
||||
id: 'container',
|
||||
'class': 'goog-container-horizontal'
|
||||
}, goog.dom.createDom('div', {
|
||||
id: 'control',
|
||||
'class': 'goog-control'
|
||||
}, 'Hello, world!')));
|
||||
|
||||
renderer = goog.ui.ContainerRenderer.getInstance();
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
goog.dom.getElement('sandbox').innerHTML = '';
|
||||
stubs.reset();
|
||||
expectedFailures.handleTearDown();
|
||||
}
|
||||
|
||||
function testGetInstance() {
|
||||
assertTrue('getInstance() must return a ContainerRenderer',
|
||||
renderer instanceof goog.ui.ContainerRenderer);
|
||||
assertEquals('getInstance() must return the same object each time',
|
||||
renderer, goog.ui.ContainerRenderer.getInstance());
|
||||
}
|
||||
|
||||
function testGetCustomRenderer() {
|
||||
var cssClass = 'special-css-class';
|
||||
var containerRenderer = goog.ui.ContainerRenderer.getCustomRenderer(
|
||||
goog.ui.ContainerRenderer, cssClass);
|
||||
assertEquals(
|
||||
'Renderer should have returned the custom CSS class.',
|
||||
cssClass,
|
||||
containerRenderer.getCssClass());
|
||||
}
|
||||
|
||||
function testGetAriaRole() {
|
||||
assertUndefined('ARIA role must be undefined', renderer.getAriaRole());
|
||||
}
|
||||
|
||||
function testEnableTabIndex() {
|
||||
var container = goog.dom.getElement('container');
|
||||
assertFalse('Container must not have any tab index',
|
||||
goog.dom.isFocusableTabIndex(container));
|
||||
|
||||
// WebKit on Mac doesn't support tabIndex for arbitrary DOM elements
|
||||
// until version 527 or later.
|
||||
expectedFailures.expectFailureFor(goog.userAgent.WEBKIT &&
|
||||
goog.userAgent.MAC && !goog.userAgent.isVersionOrHigher('527'));
|
||||
try {
|
||||
renderer.enableTabIndex(container, true);
|
||||
assertTrue('Container must have a tab index',
|
||||
goog.dom.isFocusableTabIndex(container));
|
||||
assertEquals('Container\'s tab index must be 0', 0, container.tabIndex);
|
||||
|
||||
renderer.enableTabIndex(container, false);
|
||||
assertFalse('Container must not have a tab index',
|
||||
goog.dom.isFocusableTabIndex(container));
|
||||
assertEquals('Container\'s tab index must be -1', -1,
|
||||
container.tabIndex);
|
||||
} catch (e) {
|
||||
expectedFailures.handleException(e);
|
||||
}
|
||||
}
|
||||
|
||||
function testCreateDom() {
|
||||
var horizontal = new goog.ui.Container(
|
||||
goog.ui.Container.Orientation.HORIZONTAL);
|
||||
var element1 = renderer.createDom(horizontal);
|
||||
assertEquals('Element must be a DIV', 'DIV', element1.tagName);
|
||||
assertEquals('Element must have the expected class name',
|
||||
'goog-container goog-container-horizontal',
|
||||
element1.className);
|
||||
|
||||
var vertical = new goog.ui.Container(
|
||||
goog.ui.Container.Orientation.VERTICAL);
|
||||
var element2 = renderer.createDom(vertical);
|
||||
assertEquals('Element must be a DIV', 'DIV', element2.tagName);
|
||||
assertEquals('Element must have the expected class name',
|
||||
'goog-container goog-container-vertical',
|
||||
element2.className);
|
||||
}
|
||||
|
||||
function testGetContentElement() {
|
||||
assertNull('getContentElement() must return null if element is null',
|
||||
renderer.getContentElement(null));
|
||||
var element = goog.dom.getElement('container');
|
||||
assertEquals('getContentElement() must return its argument',
|
||||
element, renderer.getContentElement(element));
|
||||
}
|
||||
|
||||
function testCanDecorate() {
|
||||
assertFalse('canDecorate() must return false for a SPAN',
|
||||
renderer.canDecorate(goog.dom.getElement('noTabIndex')));
|
||||
assertTrue('canDecorate() must return true for a DIV',
|
||||
renderer.canDecorate(goog.dom.getElement('container')));
|
||||
}
|
||||
|
||||
function testDecorate() {
|
||||
var container = new goog.ui.Container();
|
||||
var element = goog.dom.getElement('container');
|
||||
|
||||
assertFalse('Container must not be in the document',
|
||||
container.isInDocument());
|
||||
container.decorate(element);
|
||||
assertTrue('Container must be in the document',
|
||||
container.isInDocument());
|
||||
|
||||
assertEquals('Container\'s ID must match the decorated element\'s ID',
|
||||
element.id, container.getId());
|
||||
assertEquals('Element must have the expected class name',
|
||||
'goog-container-horizontal goog-container', element.className);
|
||||
assertEquals('Container must have one child', 1,
|
||||
container.getChildCount());
|
||||
assertEquals('Child component\'s ID must be as expected', 'control',
|
||||
container.getChildAt(0).getId());
|
||||
|
||||
assertThrows('Redecorating must throw error', function() {
|
||||
container.decorate(element);
|
||||
});
|
||||
}
|
||||
|
||||
function testDecorateWithCustomContainerElement() {
|
||||
var element = goog.dom.getElement('container');
|
||||
var alternateContainerElement = goog.dom.createElement('div');
|
||||
element.appendChild(alternateContainerElement);
|
||||
|
||||
var container = new goog.ui.Container();
|
||||
stubs.set(renderer, 'getContentElement', function() {
|
||||
return alternateContainerElement;
|
||||
});
|
||||
|
||||
assertFalse('Container must not be in the document',
|
||||
container.isInDocument());
|
||||
container.decorate(element);
|
||||
assertTrue('Container must be in the document',
|
||||
container.isInDocument());
|
||||
|
||||
assertEquals('Container\'s ID must match the decorated element\'s ID',
|
||||
element.id, container.getId());
|
||||
assertEquals('Element must have the expected class name',
|
||||
'goog-container-horizontal goog-container', element.className);
|
||||
assertEquals('Container must have 0 children', 0,
|
||||
container.getChildCount());
|
||||
|
||||
assertThrows('Redecorating must throw error', function() {
|
||||
container.decorate(element);
|
||||
});
|
||||
}
|
||||
|
||||
function testSetStateFromClassName() {
|
||||
var container = new goog.ui.Container();
|
||||
|
||||
assertEquals('Container must be vertical',
|
||||
goog.ui.Container.Orientation.VERTICAL, container.getOrientation());
|
||||
renderer.setStateFromClassName(container, 'goog-container-horizontal',
|
||||
'goog-container');
|
||||
assertEquals('Container must be horizontal',
|
||||
goog.ui.Container.Orientation.HORIZONTAL, container.getOrientation());
|
||||
renderer.setStateFromClassName(container, 'goog-container-vertical',
|
||||
'goog-container');
|
||||
assertEquals('Container must be vertical',
|
||||
goog.ui.Container.Orientation.VERTICAL, container.getOrientation());
|
||||
|
||||
assertTrue('Container must be enabled', container.isEnabled());
|
||||
renderer.setStateFromClassName(container, 'goog-container-disabled',
|
||||
'goog-container');
|
||||
assertFalse('Container must be disabled', container.isEnabled());
|
||||
}
|
||||
|
||||
function testInitializeDom() {
|
||||
var container = new goog.ui.Container();
|
||||
var element = goog.dom.getElement('container');
|
||||
container.decorate(element);
|
||||
|
||||
assertTrue('Container\'s root element must be unselectable',
|
||||
goog.style.isUnselectable(container.getElement()));
|
||||
|
||||
assertEquals('On IE, container\'s root element must have hideFocus=true',
|
||||
goog.userAgent.IE, !!container.getElement().hideFocus);
|
||||
}
|
||||
|
||||
function testDoesntCallGetCssClassInConstructor() {
|
||||
goog.testing.ui.rendererasserts.
|
||||
assertNoGetCssClassCallsInConstructor(goog.ui.ContainerRenderer);
|
||||
}
|
||||
Reference in New Issue
Block a user