sku-pg
Version:
Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!
202 lines (179 loc) • 8.06 kB
HTML
<html>
<!--
Copyright 2008 The Closure Library Authors. All Rights Reserved.
Use of this source code is governed by the Apache License, Version 2.0.
See the COPYING file for details.
-->
<!--
Author: attila@google.com (Attila Bodis)
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Closure Unit Tests - goog.ui.MenuItemRenderer</title>
<script src="../base.js"></script>
<script>
goog.require('goog.a11y.aria.State');
goog.require('goog.dom');
goog.require('goog.dom.classes');
goog.require('goog.testing.jsunit');
goog.require('goog.ui.MenuItem');
goog.require('goog.ui.MenuItemRenderer');
goog.require('goog.testing.ui.rendererasserts');
</script>
</head>
<body>
<div id="sandbox"></div>
<script>
var sandbox = goog.dom.getElement('sandbox');
var item, renderer;
function setUp() {
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.classes.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.classes.get(element));
}
function testCreateDomForCheckableItem() {
item.setSupportedState(goog.ui.Component.State.CHECKED, true);
var element = renderer.createDom(item);
assertNotNull(element);
assertSameElements('Element must have the expected class names',
['goog-menuitem', 'goog-option'],
goog.dom.classes.get(element));
assertHTMLEquals('Child element must have the expected structure',
'<div class="goog-menuitem-content">' +
'<div class="goog-menuitem-checkbox"></div>Hello</div>',
element.innerHTML);
item.setChecked(true);
element = renderer.createDom(item);
assertNotNull(element);
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.classes.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);
var element = renderer.createDom(item);
assertNotNull(element);
assertSameElements('Element must have the expected class names',
['goog-menuitem', 'goog-option'],
goog.dom.classes.get(element));
assertHTMLEquals('Child element must have the expected structure',
'<div class="goog-menuitem-content">' +
'<div class="goog-menuitem-checkbox"></div>Hello</div>',
element.innerHTML);
item.setSelected(true);
element = renderer.createDom(item);
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.classes.get(element));
assertEquals('Item must have selected ARIA state', 'true',
goog.a11y.aria.getState(element, goog.a11y.aria.State.SELECTED));
}
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.classes.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.classes.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.classes.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.classes.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);
}
</script>
</body>
</html>