sku-pg
Version:
Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!
208 lines (180 loc) • 6.85 kB
HTML
<html>
<!--
Copyright 2008 The Closure Library Authors. All Rights Reserved.
Use of this source code is governed by an Apache 2.0 License.
See the COPYING file for details.
-->
<!--
@author gboyer@google.com (Garrett Boyer)
-->
<head>
<title>Closure Unit Tests - goog.ui.ComboBox</title>
<style type='text/css'>
.goog-menu {
position: absolute;
}
</style>
<script src="../base.js"></script>
<script>
goog.require('goog.dom');
goog.require('goog.dom.TagName');
goog.require('goog.dom.classes');
goog.require('goog.events');
goog.require('goog.events.KeyCodes');
goog.require('goog.testing.events');
goog.require('goog.testing.jsunit');
goog.require('goog.ui.ComboBox');
</script>
</head>
<body>
<h2 style="color:red">
This test is rudimentary.
The fact that it passes should not (yet) make you too confident.
</h2>
<div id="combo">
</div>
<div id="menu">
<div class="goog-combobox-item">Red</div>
<div class="goog-combobox-item">Green</div>
<div class="goog-combobox-item">Blue</div>
</div>
<script>
var comboBox;
var input;
function setUp() {
goog.dom.getElement('combo').innerHTML = '';
comboBox = new goog.ui.ComboBox();
comboBox.setDefaultText('Select a color...');
comboBox.addItem(new goog.ui.ComboBoxItem('Red'));
comboBox.addItem(new goog.ui.ComboBoxItem('Maroon'));
comboBox.addItem(new goog.ui.ComboBoxItem('Gre<en'));
comboBox.addItem(new goog.ui.ComboBoxItem('Blue', 'Blue>Data'));
comboBox.addItem(new goog.ui.ComboBoxItem('Royal Blue'));
comboBox.addItem(new goog.ui.ComboBoxItem('Yellow'));
comboBox.addItem(new goog.ui.ComboBoxItem('Magenta'));
comboBox.addItem(new goog.ui.ComboBoxItem('Mouve'));
comboBox.addItem(new goog.ui.ComboBoxItem('Grey'));
comboBox.render(goog.dom.getElement('combo'));
input = comboBox.getElement().getElementsByTagName(
goog.dom.TagName.INPUT)[0];
}
function tearDown() {
comboBox.dispose();
goog.events.removeAll();
}
function testGetMenu() {
assertTrue('Menu should be instance of goog.ui.Menu',
comboBox.getMenu() instanceof goog.ui.Menu);
assertEquals('Menu should have correct number of children',
9, comboBox.getMenu().getChildCount());
}
function testMenuBeginsInvisible() {
assertFalse('Menu should begin invisible', comboBox.getMenu().isVisible());
}
function testClickCausesPopup() {
goog.testing.events.fireClickSequence(input);
assertTrue('Menu becomes visible after click',
comboBox.getMenu().isVisible());
}
function testUpKeyCausesPopup() {
goog.testing.events.fireKeySequence(input, goog.events.KeyCodes.UP);
assertTrue('Menu becomes visible after UP key',
comboBox.getMenu().isVisible());
}
function testActionSelectsItem() {
comboBox.getMenu().getItemAt(2).dispatchEvent(
goog.ui.Component.EventType.ACTION);
assertEquals('Gre<en', input.value);
}
function testActionSelectsItemWithData() {
comboBox.getMenu().getItemAt(3).dispatchEvent(
goog.ui.Component.EventType.ACTION);
assertEquals('Blue>Data', input.value);
}
function testRedisplayMenuAfterBackspace() {
input.value = 'mx';
comboBox.onInputChange_();
input.value = 'm';
comboBox.onInputChange_();
assertEquals('Three items should be displayed',
3, comboBox.getNumberOfVisibleItems_());
}
function testExternallyCreatedMenu() {
var menu = new goog.ui.Menu();
menu.decorate(goog.dom.getElement('menu'));
assertTrue('Menu items should be instances of goog.ui.ComboBoxItem',
menu.getChildAt(0) instanceof goog.ui.ComboBoxItem);
comboBox = new goog.ui.ComboBox(null, menu);
comboBox.render(goog.dom.getElement('combo'));
input = comboBox.getElement().getElementsByTagName(
goog.dom.TagName.INPUT)[0];
menu.getItemAt(2).dispatchEvent(
goog.ui.Component.EventType.ACTION);
assertEquals('Blue', input.value);
}
function testRecomputeVisibleCountAfterChangingItems() {
input.value = 'Black';
comboBox.onInputChange_();
assertEquals('No items should be displayed',
0, comboBox.getNumberOfVisibleItems_());
comboBox.addItem(new goog.ui.ComboBoxItem('Black'));
assertEquals('One item should be displayed',
1, comboBox.getNumberOfVisibleItems_());
input.value = 'Red';
comboBox.onInputChange_();
assertEquals('One item should be displayed',
1, comboBox.getNumberOfVisibleItems_());
comboBox.removeItemAt(0); // Red
assertEquals('No items should be displayed',
0, comboBox.getNumberOfVisibleItems_());
}
function testSetEnabled() {
// By default, everything should be enabled.
assertFalse('Text input should initially not be disabled', input.disabled);
assertFalse('Text input should initially not look disabled',
goog.dom.classes.has(input,
goog.getCssName(goog.ui.LabelInput.prototype.LABEL_CLASS_NAME,
'disabled')));
assertFalse('Combo box should initially not look disabled',
goog.dom.classes.has(comboBox.getElement(),
goog.getCssName('goog-combobox-disabled')));
goog.testing.events.fireClickSequence(comboBox.getElement());
assertTrue('Menu initially becomes visible after click',
comboBox.getMenu().isVisible());
goog.testing.events.fireClickSequence(document);
assertFalse('Menu initially becomes invisible after document click',
comboBox.getMenu().isVisible());
comboBox.setEnabled(false);
assertTrue('Text input should be disabled after being disabled',
input.disabled);
assertTrue('Text input should appear disabled after being disabled',
goog.dom.classes.has(input,
goog.getCssName(goog.ui.LabelInput.prototype.LABEL_CLASS_NAME,
'disabled')));
assertTrue('Combo box should appear disabled after being disabled',
goog.dom.classes.has(comboBox.getElement(),
goog.getCssName('goog-combobox-disabled')));
goog.testing.events.fireClickSequence(comboBox.getElement());
assertFalse('Menu should not become visible after click if disabled',
comboBox.getMenu().isVisible());
comboBox.setEnabled(true);
assertFalse('Text input should not be disabled after being re-enabled',
input.disabled);
assertFalse('Text input should not appear disabled after being re-enabled',
goog.dom.classes.has(input,
goog.getCssName(goog.ui.LabelInput.prototype.LABEL_CLASS_NAME,
'disabled')));
assertFalse('Combo box should not appear disabled after being re-enabled',
goog.dom.classes.has(comboBox.getElement(),
goog.getCssName('goog-combobox-disabled')));
goog.testing.events.fireClickSequence(comboBox.getElement());
assertTrue('Menu becomes visible after click when re-enabled',
comboBox.getMenu().isVisible());
goog.testing.events.fireClickSequence(document);
assertFalse('Menu becomes invisible after document click when re-enabled',
comboBox.getMenu().isVisible());
}
</script>
</body>
</html>