Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,243 @@
|
||||
// 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.MenuItemRendererTest');
|
||||
goog.setTestOnly('goog.ui.MenuItemRendererTest');
|
||||
|
||||
goog.require('goog.a11y.aria');
|
||||
goog.require('goog.a11y.aria.Role');
|
||||
goog.require('goog.a11y.aria.State');
|
||||
goog.require('goog.dom');
|
||||
goog.require('goog.dom.classlist');
|
||||
goog.require('goog.testing.jsunit');
|
||||
goog.require('goog.testing.ui.rendererasserts');
|
||||
goog.require('goog.ui.Component');
|
||||
goog.require('goog.ui.MenuItem');
|
||||
goog.require('goog.ui.MenuItemRenderer');
|
||||
|
||||
var sandbox;
|
||||
var item, renderer;
|
||||
|
||||
function setUp() {
|
||||
sandbox = goog.dom.getElement('sandbox');
|
||||
item = new goog.ui.MenuItem('Hello');
|
||||
renderer = goog.ui.MenuItemRenderer.getInstance();
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
item.dispose();
|
||||
goog.dom.removeChildren(sandbox);
|
||||
}
|
||||
|
||||
function testMenuItemRenderer() {
|
||||
assertNotNull('Instance must not be null', renderer);
|
||||
assertEquals('Singleton getter must always return same instance',
|
||||
renderer, goog.ui.MenuItemRenderer.getInstance());
|
||||
}
|
||||
|
||||
function testCreateDom() {
|
||||
var element = renderer.createDom(item);
|
||||
assertNotNull('Element must not be null', element);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem'], goog.dom.classlist.get(element));
|
||||
assertEquals('Element must have exactly one child element', 1,
|
||||
element.childNodes.length);
|
||||
assertHTMLEquals('Child element must have the expected structure',
|
||||
'<div class="goog-menuitem-content">Hello</div>',
|
||||
element.innerHTML);
|
||||
}
|
||||
|
||||
function testCreateDomWithHoverState() {
|
||||
item.setHighlighted(true);
|
||||
var element = renderer.createDom(item);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem', 'goog-menuitem-highlight'],
|
||||
goog.dom.classlist.get(element));
|
||||
}
|
||||
|
||||
function testCreateDomForCheckableItem() {
|
||||
item.setSupportedState(goog.ui.Component.State.CHECKED, true);
|
||||
item.render();
|
||||
var element = item.getElement();
|
||||
assertNotNull(element);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem', 'goog-option'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Element must have ARIA role menuitemcheckbox',
|
||||
goog.a11y.aria.Role.MENU_ITEM_CHECKBOX,
|
||||
goog.a11y.aria.getRole(element));
|
||||
|
||||
item.setChecked(true);
|
||||
assertTrue('Item must be checked', item.isChecked());
|
||||
assertSameElements('Checked item must have the expected class names',
|
||||
['goog-menuitem', 'goog-option', 'goog-option-selected'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Item must have checked ARIA state', 'true',
|
||||
goog.a11y.aria.getState(element, goog.a11y.aria.State.CHECKED));
|
||||
}
|
||||
|
||||
function testCreateUpdateDomForCheckableItem() {
|
||||
// Render the item first, then update its supported states to include CHECKED.
|
||||
item.render();
|
||||
var element = item.getElement();
|
||||
item.setSupportedState(goog.ui.Component.State.CHECKED, true);
|
||||
assertNotNull(element);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem', 'goog-option'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Element must have ARIA role menuitemcheckbox',
|
||||
goog.a11y.aria.Role.MENU_ITEM_CHECKBOX,
|
||||
goog.a11y.aria.getRole(element));
|
||||
|
||||
// Now actually check the item.
|
||||
item.setChecked(true);
|
||||
assertTrue('Item must be checked', item.isChecked());
|
||||
assertSameElements('Checked item must have the expected class names',
|
||||
['goog-menuitem', 'goog-option', 'goog-option-selected'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Item must have checked ARIA state', 'true',
|
||||
goog.a11y.aria.getState(element, goog.a11y.aria.State.CHECKED));
|
||||
}
|
||||
|
||||
function testCreateDomForSelectableItem() {
|
||||
item.setSupportedState(goog.ui.Component.State.SELECTED, true);
|
||||
item.render();
|
||||
var element = item.getElement();
|
||||
assertNotNull(element);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem', 'goog-option'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Element must have ARIA role menuitemradio',
|
||||
goog.a11y.aria.Role.MENU_ITEM_RADIO,
|
||||
goog.a11y.aria.getRole(element));
|
||||
|
||||
item.setSelected(true);
|
||||
assertTrue('Item must be selected', item.isSelected());
|
||||
assertSameElements('Selected item must have the expected class names',
|
||||
['goog-menuitem', 'goog-option', 'goog-option-selected'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Item must have selected ARIA state', 'true',
|
||||
goog.a11y.aria.getState(element, goog.a11y.aria.State.CHECKED));
|
||||
}
|
||||
|
||||
function testCreateUpdateDomForSelectableItem() {
|
||||
// Render the item first, then update its supported states to include
|
||||
// SELECTED.
|
||||
item.render();
|
||||
var element = item.getElement();
|
||||
item.setSupportedState(goog.ui.Component.State.SELECTED, true);
|
||||
assertNotNull(element);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem', 'goog-option'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Element must have ARIA role menuitemradio',
|
||||
goog.a11y.aria.Role.MENU_ITEM_RADIO,
|
||||
goog.a11y.aria.getRole(element));
|
||||
|
||||
// Now actually select the item.
|
||||
item.setSelected(true);
|
||||
assertTrue('Item must be selected', item.isSelected());
|
||||
assertSameElements('Selected item must have the expected class names',
|
||||
['goog-menuitem', 'goog-option', 'goog-option-selected'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertEquals('Item must have selected ARIA state', 'true',
|
||||
goog.a11y.aria.getState(element, goog.a11y.aria.State.CHECKED));
|
||||
}
|
||||
|
||||
function testGetContentElement() {
|
||||
assertNull('Content element must be the null initially',
|
||||
item.getContentElement());
|
||||
item.createDom();
|
||||
assertEquals('Content element must be the element\'s first child',
|
||||
item.getElement().firstChild, item.getContentElement());
|
||||
}
|
||||
|
||||
function testDecorate() {
|
||||
sandbox.innerHTML = '<div id="foo">Hello</div>';
|
||||
var foo = goog.dom.getElement('foo');
|
||||
|
||||
var element = renderer.decorate(item, foo);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem'], goog.dom.classlist.get(element));
|
||||
assertEquals('Element must have exactly one child element', 1,
|
||||
element.childNodes.length);
|
||||
assertHTMLEquals('Child element must have the expected structure',
|
||||
'<div class="goog-menuitem-content">Hello</div>',
|
||||
element.innerHTML);
|
||||
}
|
||||
|
||||
function testDecorateWithContentStructure() {
|
||||
sandbox.innerHTML =
|
||||
'<div id="foo"><div class="goog-menuitem-content">Hello</div></div>';
|
||||
var foo = goog.dom.getElement('foo');
|
||||
|
||||
var element = renderer.decorate(item, foo);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem'], goog.dom.classlist.get(element));
|
||||
assertEquals('Element must have exactly one child element', 1,
|
||||
element.childNodes.length);
|
||||
assertHTMLEquals('Child element must have the expected structure',
|
||||
'<div class="goog-menuitem-content">Hello</div>',
|
||||
element.innerHTML);
|
||||
}
|
||||
|
||||
function testDecorateWithHoverState() {
|
||||
sandbox.innerHTML =
|
||||
'<div id="foo" class="goog-menuitem-highlight">Hello</div>';
|
||||
var foo = goog.dom.getElement('foo');
|
||||
|
||||
assertFalse('Item must not be highlighted', item.isHighlighted());
|
||||
var element = renderer.decorate(item, foo);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem', 'goog-menuitem-highlight'],
|
||||
goog.dom.classlist.get(element));
|
||||
assertTrue('Item must be highlighted', item.isHighlighted());
|
||||
}
|
||||
|
||||
function testDecorateCheckableItem() {
|
||||
sandbox.innerHTML = '<div id="foo" class="goog-option">Hello</div>';
|
||||
var foo = goog.dom.getElement('foo');
|
||||
|
||||
assertFalse('Item must not be checkable',
|
||||
item.isSupportedState(goog.ui.Component.State.CHECKED));
|
||||
var element = renderer.decorate(item, foo);
|
||||
assertSameElements('Element must have the expected class names',
|
||||
['goog-menuitem', 'goog-option'], goog.dom.classlist.get(element));
|
||||
assertTrue('Item must be checkable',
|
||||
item.isSupportedState(goog.ui.Component.State.CHECKED));
|
||||
assertHTMLEquals('Child element must have the expected structure',
|
||||
'<div class="goog-menuitem-content">' +
|
||||
'<div class="goog-menuitem-checkbox"></div>Hello</div>',
|
||||
element.innerHTML);
|
||||
}
|
||||
|
||||
function testSetContent() {
|
||||
item.setSupportedState(goog.ui.Component.State.CHECKED, true);
|
||||
var element = renderer.createDom(item);
|
||||
assertHTMLEquals('Child element must have the expected structure',
|
||||
'<div class="goog-menuitem-content">' +
|
||||
'<div class="goog-menuitem-checkbox"></div>Hello</div>',
|
||||
element.innerHTML);
|
||||
|
||||
renderer.setContent(element, 'Goodbye');
|
||||
assertHTMLEquals('Child element must have the expected structure',
|
||||
'<div class="goog-menuitem-content">' +
|
||||
'<div class="goog-menuitem-checkbox"></div>Goodbye</div>',
|
||||
element.innerHTML);
|
||||
}
|
||||
|
||||
function testDoesntCallGetCssClassInConstructor() {
|
||||
goog.testing.ui.rendererasserts.
|
||||
assertNoGetCssClassCallsInConstructor(goog.ui.MenuItemRenderer);
|
||||
}
|
||||
Reference in New Issue
Block a user