sku-pg
Version:
Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!
502 lines (412 loc) • 14.8 kB
HTML
<html>
<!--
Copyright 2006 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.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Closure Unit Tests - goog.dom.forms</title>
<script src="../base.js"></script>
<script>
goog.require('goog.dom');
goog.require('goog.dom.forms');
goog.require('goog.testing.jsunit');
</script>
</head>
<body>
<!-- empty div to test against -->
<div id="testdiv1"></div>
<form id="testform1" onsubmit="return false">
<!-- text input with one value -->
<input id="in1" name="in1" value="foo">
<!-- text inputs with two values -->
<input id="in2" name="in2" value="bar">
<input id="in2" name="in2" value="baaz">
<!-- empty text input -->
<input id="in3" name="in3" value="">
<!-- password -->
<input id="pass" name="pass" type="password" value="bar">
<!-- textarea -->
<textarea id="textarea1" name="textarea">foo bar baz</textarea>
<!-- select single -->
<select id="select1" name="select1">
<option value="1" selected>one</option>
<option value="2">two</option>
</select>
<!-- select multiple -->
<select id="select2" name="select2" multiple=true>
<option value="a" selected>A</option>
<option value="b">B</option>
<option value="c" selected>C</option>
</select>
<!-- select no value -->
<select id="select3" name="select3">
<option></option>
<option value="1">one</option>
<option value="2">two</option>
</select>
<!-- checkboxes -->
<fieldset id="testfieldset1">
<legend id="testlegend1">Checkboxes</legend>
<input id="checkbox1" type="checkbox" name="checkbox1" checked>
<input id="checkbox2" type="checkbox" name="checkbox2">
</fieldset>
<!-- radio buttons -->
<fieldset>
<legend>Radio Buttons</legend>
<input id="radio1" type="radio" name="radio" value="X" checked>
<input id="radio2" type="radio" name="radio" value="Y">
</fieldset>
<fieldset>
<legend>Radio Buttons</legend>
<input id="radio3" type="radio" name="radio2" value="X">
<input id="radio4" type="radio" name="radio2" value="Y" checked>
</fieldset>
<!-- button -->
<button id="button" name="button" type="button" value="button" onclick="testSetValueSelectMultiple()">button</button>
<!-- submit -->
<input id="submit" type="submit" name="submit" value="submit">
<!-- reset -->
<input id="reset" type="reset" name="reset" value="reset">
</form>
<form id="testform2">
<input type="file" name="file">
</form>
<form id="testform3">
<!-- text input -->
<input id="in4" name="in4">
<!-- textarea -->
<textarea id="textarea2" name="textarea"></textarea>
<!-- select single -->
<select id="select4" name="select1">
<option value="1">one</option>
<option value="2">two</option>
</select>
<!-- select multiple -->
<select id="select5" name="select5" multiple=true>
<option value="a">A</option>
<option value="b">B</option>
<option value="c">C</option>
</select>
<!-- radio -->
<input id="radio3" type="radio" name="radio3" value="Z">
<!-- checkbox -->
<input id="checkbox2" type="checkbox" name="checkbox2">
<!-- select multiple no value -->
<select id="select6" name="select6" multiple=true>
<option value="a">A</option>
<option value="b">B</option>
</select>
<!-- select with empty value -->
<select id="select7" name="select7">
<option value="">Empty</option>
<option value="a">A</option>
<option value="b">B</option>
</select>
</form>
<form id="testform4">
<embed ></embed>
<embed type="foo/bar"></embed>
<object></object>
</form>
<script>
function testGetFormDataString() {
var el = goog.dom.getElement('testform1');
var result = goog.dom.forms.getFormDataString(el);
assertEquals('in1=foo&in2=bar&in2=baaz&in3=&pass=bar&textarea=foo%20bar%20baz&select1=1&select2=a&select2=c&select3=&checkbox1=on&radio=X&radio2=Y', result);
}
function testGetFormDataMap() {
var el = goog.dom.getElement('testform1');
var result = goog.dom.forms.getFormDataMap(el);
assertArrayEquals(['foo'], result.get('in1'));
assertArrayEquals(['bar', 'baaz'], result.get('in2'));
assertArrayEquals(['1'], result.get('select1'));
assertArrayEquals(['a', 'c'], result.get('select2'));
assertArrayEquals(['on'], result.get('checkbox1'));
assertUndefined(result.get('select6'));
assertUndefined(result.get('checkbox2'));
assertArrayEquals(['X'], result.get('radio'));
assertArrayEquals(['Y'], result.get('radio2'));
}
function testHasFileInput() {
var el = goog.dom.getElement('testform1');
assertFalse(goog.dom.forms.hasFileInput(el));
el = goog.dom.getElement('testform2');
assertTrue(goog.dom.forms.hasFileInput(el));
}
function testGetValueOnAtypicalValueElements() {
var el = goog.dom.getElement('testdiv1');
var result = goog.dom.forms.getValue(el);
assertNull(result);
var el = goog.dom.getElement('testfieldset1');
var result = goog.dom.forms.getValue(el);
assertNull(result);
var el = goog.dom.getElement('testlegend1');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testHasValueInput() {
var el = goog.dom.getElement('in1');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testGetValueByNameForNonExistentElement() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'non_existent');
assertNull(result);
}
function testHasValueByNameInput() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'in1');
assertTrue(result);
}
function testHasValueInputEmpty() {
var el = goog.dom.getElement('in3');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameEmpty() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'in3');
assertFalse(result);
}
function testHasValueRadio() {
var el = goog.dom.getElement('radio1');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testHasValueByNameRadio() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'radio');
assertTrue(result);
}
function testHasValueRadioNotChecked() {
var el = goog.dom.getElement('radio2');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameRadioNotChecked() {
var form = goog.dom.getElement('testform3');
var result = goog.dom.forms.hasValueByName(form, 'radio3');
assertFalse(result);
}
function testHasValueSelectSingle() {
var el = goog.dom.getElement('select1');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testHasValueByNameSelectSingle() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'select1');
assertTrue(result);
}
function testHasValueSelectMultiple() {
var el = goog.dom.getElement('select2');
var result = goog.dom.forms.hasValue(el);
assertTrue(result);
}
function testHasValueByNameSelectMultiple() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'select2');
assertTrue(result);
}
function testHasValueSelectNotSelected() {
// select without value
var el = goog.dom.getElement('select3');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameSelectNotSelected() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.hasValueByName(form, 'select3');
assertFalse(result);
}
function testHasValueSelectMultipleNotSelected() {
var el = goog.dom.getElement('select6');
var result = goog.dom.forms.hasValue(el);
assertFalse(result);
}
function testHasValueByNameSelectMultipleNotSelected() {
var form = goog.dom.getElement('testform3');
var result = goog.dom.forms.hasValueByName(form, 'select6');
assertFalse(result);
}
// TODO(user): make this a meaningful selenium test
function testSetDisabledFalse() {
}
function testSetDisabledTrue() {
}
// TODO(user): make this a meaningful selenium test
function testFocusAndSelect() {
var el = goog.dom.getElement('in1');
goog.dom.forms.focusAndSelect(el);
}
function testGetValueInput() {
var el = goog.dom.getElement('in1');
var result = goog.dom.forms.getValue(el);
assertEquals('foo', result);
}
function testSetValueInput() {
var el = goog.dom.getElement('in3');
goog.dom.forms.setValue(el, 'foo');
assertEquals('foo', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, 3500);
assertEquals('3500', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, 0);
assertEquals('0', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, null);
assertEquals('', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, undefined);
assertEquals('', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, false);
assertEquals('false', goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, {});
assertEquals({}.toString(), goog.dom.forms.getValue(el));
goog.dom.forms.setValue(el, {
toString: function() {
return 'test';
}
});
assertEquals('test', goog.dom.forms.getValue(el));
// unset
goog.dom.forms.setValue(el);
assertEquals('', goog.dom.forms.getValue(el));
}
function testGetValuePassword() {
var el = goog.dom.getElement('pass');
var result = goog.dom.forms.getValue(el);
assertEquals('bar', result);
}
function testGetValueByNamePassword() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'pass');
assertEquals('bar', result);
}
function testGetValueTextarea() {
var el = goog.dom.getElement('textarea1');
var result = goog.dom.forms.getValue(el);
assertEquals('foo bar baz', result);
}
function testGetValueByNameTextarea() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'textarea1');
assertEquals('foo bar baz', result);
}
function testSetValueTextarea() {
var el = goog.dom.getElement('textarea2');
goog.dom.forms.setValue(el, 'foo bar baz');
var result = goog.dom.forms.getValue(el);
assertEquals('foo bar baz', result);
}
function testGetValueSelectSingle() {
var el = goog.dom.getElement('select1');
var result = goog.dom.forms.getValue(el);
assertEquals('1', result);
}
function testGetValueByNameSelectSingle() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'select1');
assertEquals('1', result);
}
function testSetValueSelectSingle() {
var el = goog.dom.getElement('select4');
goog.dom.forms.setValue(el, '2');
var result = goog.dom.forms.getValue(el);
assertEquals('2', result);
// unset
goog.dom.forms.setValue(el);
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testSetValueSelectSingleEmptyString() {
var el = goog.dom.getElement('select7');
// unset
goog.dom.forms.setValue(el);
var result = goog.dom.forms.getValue(el);
assertNull(result);
goog.dom.forms.setValue(el, '');
result = goog.dom.forms.getValue(el);
assertEquals('', result);
}
function testGetValueSelectMultiple() {
var el = goog.dom.getElement('select2');
var result = goog.dom.forms.getValue(el);
assertArrayEquals(['a', 'c'], result);
}
function testGetValueSelectMultipleNotSelected() {
var el = goog.dom.getElement('select6');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueByNameSelectMultiple() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'select2');
assertArrayEquals(['a', 'c'], result);
}
function testSetValueSelectMultiple() {
var el = goog.dom.getElement('select5');
goog.dom.forms.setValue(el, ['a', 'c']);
var result = goog.dom.forms.getValue(el);
assertArrayEquals(['a', 'c'], result);
goog.dom.forms.setValue(el, 'a');
var result = goog.dom.forms.getValue(el);
assertArrayEquals(['a'], result);
// unset
goog.dom.forms.setValue(el);
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueCheckbox() {
var el = goog.dom.getElement('checkbox1');
var result = goog.dom.forms.getValue(el);
assertEquals('on', result);
var el = goog.dom.getElement('checkbox2');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueByNameCheckbox() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'checkbox1');
assertEquals('on', result);
result = goog.dom.forms.getValueByName(form, 'checkbox2');
assertNull(result);
}
function testGetValueRadio() {
var el = goog.dom.getElement('radio1');
var result = goog.dom.forms.getValue(el);
assertEquals('X', result);
var el = goog.dom.getElement('radio2');
var result = goog.dom.forms.getValue(el);
assertNull(result);
}
function testGetValueByNameRadio() {
var form = goog.dom.getElement('testform1');
var result = goog.dom.forms.getValueByName(form, 'radio');
assertEquals('X', result);
result = goog.dom.forms.getValueByName(form, 'radio2');
assertEquals('Y', result);
}
function testGetValueButton() {
var el = goog.dom.getElement('button');
var result = goog.dom.forms.getValue(el);
assertEquals('button', result);
}
function testGetValueSubmit() {
var el = goog.dom.getElement('submit');
var result = goog.dom.forms.getValue(el);
assertEquals('submit', result);
}
function testGetValueReset() {
var el = goog.dom.getElement('reset');
var result = goog.dom.forms.getValue(el);
assertEquals('reset', result);
}
function testGetFormDataHelperAndNonInputElements() {
var el = goog.dom.getElement('testform4');
goog.dom.forms.getFormDataHelper_(el, {}, goog.nullFunction);
}
</script>
</body>
</html>