webgui/www/extras/yui/tests/yahoo.html
JT Smith 20f8df1291 upgrading to YUI 2.6
data tables are going to need some work yet, but the other stuff seems to be working 100%
2008-10-22 23:53:29 +00:00

445 lines
18 KiB
HTML

<html>
<head>
<title>YUI Tests</title>
<link type="text/css" rel="stylesheet" href="../build/logger/assets/logger.css" />
<link type="text/css" rel="stylesheet" href="../build/yuitest/assets/testlogger.css" />
<style type="text/css">
#xframe {
position: absolute;
visibility: hidden;
}
</style>
<script type="text/javascript">
var g_modules=[];
var YAHOO_config = {
listener: function(info) {
g_modules.push(info.name);
}
};
</script>
<script type="text/javascript" src="../build/yahoo/yahoo.js"></script>
<script type="text/javascript" src="../build/dom/dom.js"></script>
<script type="text/javascript" src="../build/event/event.js"></script>
<script type="text/javascript" src="../build/logger/logger.js"></script>
<script type="text/javascript" src="../build/yuitest/yuitest.js"></script>
</head>
<body>
<iframe name="xframe" id="xframe" src="assets/xframe.html"></iframe>
<h1>YAHOO test page</h1>
<p>This page contains tests being run by yuitest, the results of which<br />
are output in the logger to the right. <br />View the source to see how it's done.</p>
<p><input type="button" value="Run Tests" id="btnRun" /></p>
<script type="text/javascript">
(function() {
var Dom=YAHOO.util.Dom,
Assert=YAHOO.util.Assert,
ObjectAssert=YAHOO.util.ObjectAssert,
ArrayAssert=YAHOO.util.ArrayAssert,
suite=new YAHOO.tool.TestSuite("yuisuite");
suite.add(new YAHOO.tool.TestCase({
//name of the test case
name : "yahoo",
//extra information about tests
_should : {
//tests with these names should fail
fail : { test_to_fail: true },
//tests with these names should throw an error
error : { },
//ignore these tests
ignore : { }
},
test_config: function() {
ArrayAssert.itemsAreEqual(["yahoo", "dom", "event", "logger", "yuitest"], g_modules);
},
test_create_namespace: function () {
// set up YAHOO.my.namespace
var ns = YAHOO.namespace("my.namespace");
// use the returned reference, assign a value
ns.test = "yahoo_my_namespace_test";
// check for the assigned value using the full path
Assert.areEqual(YAHOO.my.namespace.test, "yahoo_my_namespace_test", "The namespace was not set up correctly");
// assign a value to my to test that it doesn't get wiped out
YAHOO.my.test = "yahoo_my_test";
// create another namespace on my
var ns2 = YAHOO.namespace("my.namespace2");
// make sure my stays the same
Assert.areEqual(YAHOO.my.test, "yahoo_my_test", "The namespace was obliterated");
},
test_is_array: function() {
Assert.isTrue(YAHOO.lang.isArray([1, 2]), "Array literals are arrays");
Assert.isFalse(YAHOO.lang.isArray({"one": "two"}), "Object literals are not arrays");
var a = new Array();
a["one"] = "two";
Assert.isTrue(YAHOO.lang.isArray(a), "Associative array are arrays");
Assert.isFalse(YAHOO.lang.isArray(document.getElementsByTagName("body")),
"Element collections are array-like, but not arrays");
Assert.isFalse(YAHOO.lang.isArray(null), "null is not an array");
Assert.isFalse(YAHOO.lang.isArray(''), "'' is not an array");
Assert.isFalse(YAHOO.lang.isArray(undefined), "undefined is not an array");
Assert.isTrue(YAHOO.lang.isArray(xframe.arr), "Cross frame array failure");
Assert.isFalse(YAHOO.lang.isArray(xframe.far), "Cross frame fake array failure");
Assert.isFalse(YAHOO.lang.isArray(xframe.obj), "Cross frame object failure");
Assert.isFalse(YAHOO.lang.isArray(xframe.fun), "Cross frame function failure");
Assert.isFalse(YAHOO.lang.isArray(xframe.boo), "Cross frame boolean failure");
Assert.isFalse(YAHOO.lang.isArray(xframe.str), "Cross frame string failure");
Assert.isFalse(YAHOO.lang.isArray(xframe.nul), "Cross frame null failure");
Assert.isFalse(YAHOO.lang.isArray(xframe.und), "Cross frame undefined failure");
// alert(xframe.arr.constructor.prototype == Array.prototype);
// alert(xframe.arr.constructor.prototype == xframe.Array.prototype);
},
test_is_boolean: function() {
Assert.isTrue(YAHOO.lang.isBoolean(false), "false failed boolean check");
Assert.isFalse(YAHOO.lang.isBoolean(1), "the number 1 is not a boolean");
Assert.isFalse(YAHOO.lang.isBoolean("true"), "the string 'true' is not a boolean");
},
test_is_function: function() {
Assert.isTrue(YAHOO.lang.isFunction(function(){}), "a function is a function");
Assert.isFalse(YAHOO.lang.isFunction({foo: "bar"}), "an object is not a function");
Assert.isTrue(YAHOO.lang.isFunction(xframe.fun), "Cross frame function failure");
Assert.isFalse(YAHOO.lang.isFunction(xframe.arr), "Cross frame array failure");
Assert.isFalse(YAHOO.lang.isFunction(xframe.obj), "Cross frame object failure");
Assert.isFalse(YAHOO.lang.isFunction(xframe.boo), "Cross frame boolean failure");
Assert.isFalse(YAHOO.lang.isFunction(xframe.str), "Cross frame string failure");
Assert.isFalse(YAHOO.lang.isFunction(xframe.nul), "Cross frame null failure");
Assert.isFalse(YAHOO.lang.isFunction(xframe.und), "Cross frame undefined failure");
},
test_is_null: function() {
Assert.isTrue(YAHOO.lang.isNull(null), "null is null");
Assert.isFalse(YAHOO.lang.isNull(undefined), "undefined is not null");
Assert.isFalse(YAHOO.lang.isNull(""), "empty string is not null");
},
test_is_number: function() {
Assert.isTrue(YAHOO.lang.isNumber(0), "0 is a number");
Assert.isTrue(YAHOO.lang.isNumber(123.123), "123.123 is a number");
Assert.isFalse(YAHOO.lang.isNumber('123.123'), "the string '123.123' is not a number, even though it can be cast into one");
Assert.isFalse(YAHOO.lang.isNumber(1/0), "undefined numbers and infinity are not numbers we want to use");
},
test_is_object: function() {
Assert.isTrue(YAHOO.lang.isObject({}), "an object is an object");
Assert.isTrue(YAHOO.lang.isObject(function(){}), "a function is an object");
Assert.isTrue(YAHOO.lang.isObject([]), "an array is an object");
Assert.isFalse(YAHOO.lang.isObject(1), "numbers are not objects");
Assert.isFalse(YAHOO.lang.isObject(true), "boolean values are not objects");
Assert.isFalse(YAHOO.lang.isObject("{}"), "strings are not objects");
Assert.isFalse(YAHOO.lang.isObject(null), "null should return false even though it technically is an object");
Assert.isTrue(YAHOO.lang.isObject(xframe.obj), "Cross frame object failure");
Assert.isTrue(YAHOO.lang.isObject(xframe.fun), "Cross frame function failure");
Assert.isTrue(YAHOO.lang.isObject(xframe.arr), "Cross frame array failure");
Assert.isFalse(YAHOO.lang.isObject(xframe.boo), "Cross frame boolean failure");
Assert.isFalse(YAHOO.lang.isObject(xframe.str), "Cross frame string failure");
Assert.isFalse(YAHOO.lang.isObject(xframe.nul), "Cross frame null failure");
Assert.isFalse(YAHOO.lang.isObject(xframe.und), "Cross frame undefined failure");
},
test_is_string: function() {
Assert.isTrue(YAHOO.lang.isString("{}"), "a string is a string");
Assert.isFalse(YAHOO.lang.isString({foo: "bar"}), "an object is not a string");
Assert.isFalse(YAHOO.lang.isString(123), "a number is not a string");
Assert.isFalse(YAHOO.lang.isString(true), "boolean values are not strings");
},
test_is_undefined: function() {
Assert.isTrue(YAHOO.lang.isUndefined(undefined), "undefined is undefined");
Assert.isFalse(YAHOO.lang.isUndefined(false), "boolean false is not undefined");
Assert.isFalse(YAHOO.lang.isUndefined(null), "null is not undefined");
},
test_trim: function() {
Assert.areEqual(YAHOO.lang.trim(" My String"), "My String");
Assert.areEqual(YAHOO.lang.trim("My String "), "My String");
Assert.areEqual(YAHOO.lang.trim(" My String "), "My String");
Assert.areEqual(YAHOO.lang.trim(null), null);
Assert.areEqual(YAHOO.lang.trim(undefined), undefined);
Assert.areEqual(YAHOO.lang.trim({}), "[object Object]");
},
test_isValue: function() {
Assert.isFalse(YAHOO.lang.isValue(null), "null should be false");
Assert.isFalse(YAHOO.lang.isValue(undefined), "undefined should be false");
Assert.isFalse(YAHOO.lang.isValue(parseInt("adsf", 10)), "NaN should be false");
Assert.isFalse(YAHOO.lang.isValue(1/0), "undefined numbers and infinity should be false");
Assert.isTrue(YAHOO.lang.isValue(new Date()), "date should be true");
Assert.isTrue(YAHOO.lang.isValue(""), "Empty string should be true");
Assert.isTrue(YAHOO.lang.isValue(false), "false should be true");
},
test_merge: function() {
var o1 = { one: "one" },
o2 = { two: "two" },
o3 = { two: "twofromthree", three: "three" },
o4 = { one: "one", two: "twofromthree", three: "three" },
o123 = YAHOO.lang.merge(o1, o2, o3);
ObjectAssert.propertiesAreEqual(o123, o4);
Assert.areEqual(o123.two, o4.two);
},
test_dump: function() {
Assert.areEqual("0", YAHOO.lang.dump(0));
Assert.areEqual("null", YAHOO.lang.dump(null));
Assert.areEqual("false", YAHOO.lang.dump(false));
// Other types tested in substitute
},
test_substitute: function() {
////////////////////////////////////////////////////////////////////////////////
var param = {domain: 'valvion.com',
media: 'http://media.{domain}/', /* nested */
contextdomain: { context1: 'context{domain}', context2: 'yahoo.com' }, /* the value is an object, we will use a custom function to extract the correct data */
contextmedia: 'http://contextmedia.{contextdomain context1}/'};
var url, l=YAHOO.lang;
// standard replace, nested
url = l.substitute("{media}logo.gif", param);
Assert.areEqual(url, "http://media.valvion.com/logo.gif");
// If the replacement value is an object, use the meta info as a key to extract the
// correct data. Otherwise just return the value.
function multipleChoice(key, val, meta) {
return (l.isObject(val)) ? val[meta] : val;
}
// "random data" is not used since the value for the contextmedia key is a string.
// contextdomain uses "context1" as a key to expand the string correctly
url = l.substitute("{contextmedia random data}logo.gif", param, multipleChoice);
Assert.areEqual(url, "http://contextmedia.contextvalvion.com/logo.gif");
////////////////////////////////////////////////////////////////////////////////
var obj = {
level1_1: 1.1,
level1_2: 1.2,
level1_3: {
level2_1: 2.1,
level2_2: 2.2,
level2_3: {
level3_1: 3.1,
level3_2: 3.2,
level3_3: 3.3,
level3_4: 3.4
},
level2_4: 2.4
},
level1_4: 1.4
};
Assert.areEqual(
l.substitute("{testobj 0}", { testobj: obj }),
"{level1_1 => 1.1, level1_2 => 1.2, level1_3 => {...}, level1_4 => 1.4}",
"failed one level object dump"
);
Assert.areEqual(
l.substitute("{testobj 1}", { testobj: obj }),
"{level1_1 => 1.1, level1_2 => 1.2, level1_3 => {level2_1 => 2.1, level2_2 => 2.2, level2_3 => {...}, level2_4 => 2.4}, level1_4 => 1.4}",
"failed two level object dump"
);
Assert.areEqual(
l.substitute(
"{testobj 10}", { testobj: obj }),
"{level1_1 => 1.1, level1_2 => 1.2, level1_3 => {level2_1 => 2.1, level2_2 => 2.2, level2_3 => {level3_1 => 3.1, level3_2 => 3.2, level3_3 => 3.3, level3_4 => 3.4}, level2_4 => 2.4}, level1_4 => 1.4}",
"failed deep object dump"
);
var arr = [
1.1,
1.2,
[
2.1,
2.2,
[
3.1,
3.2,
3.3,
3.4
],
2.4
],
1.4
];
Assert.areEqual(
l.substitute("{testarr 1}", { testarr: arr }),
"[1.1, 1.2, [2.1, 2.2, {...}, 2.4], 1.4]",
"failed two level array dump"
);
var mix = [
1.1,
new Date(),
{
level2_1: 2.1,
level2_2: 2.2,
level2_3: [
3.1,
3.2,
3.3,
3.4
],
level2_4: 2.4
},
1.4,
function(){}
];
var result = l.substitute("{testmix 1}", { testmix: mix });
Assert.isTrue(
(result.indexOf("GMT" > -1)) ? true : false,
"failed two level mixed object with a date (date should have produced an output with GMT in it"
);
////////////////////////////////////////////////////////////////////////////////
var tostr = {
custom1_1: 1.1,
custom1_2: 1.2,
custom1_3: {
custom2_1: 2.1,
custom2_2: 2.2,
custom2_3: {
custom3_1: 3.1,
custom3_2: 3.2,
custom3_3: 3.3,
custom3_4: 3.4
},
custom2_4: 2.4
},
custom1_4: 1.4,
toString: function() {
return "custom toString executed";
}
};
Assert.areEqual(
l.substitute("{customtostr 1}", { customtostr: tostr }),
"custom toString executed",
"failed: custom toString should have been used"
);
Assert.areEqual(
l.substitute("{customtostr dump 1}", { customtostr: tostr }),
"{custom1_1 => 1.1, custom1_2 => 1.2, custom1_3 => {custom2_1 => 2.1, custom2_2 => 2.2, custom2_3 => {...}, custom2_4 => 2.4}, custom1_4 => 1.4, toString => f(){...}}",
"failed: custom toString should NOT have been used because the dump keyword should override it"
);
////////////////////////////////////////////////////////////////////////////////
},
test_extend: function() {
},
test_augmentObject: function() {
var a = {
'bool' : false,
'num' : 0,
'nul' : null,
'undef': undefined,
'T' : 'blabber'
};
var b = {
'bool' : 'oops',
'num' : 'oops',
'nul' : 'oops',
'undef': 'oops',
'T' : 'oops'
};
YAHOO.lang.augmentObject(a,b,false);
Assert.isFalse((a.bool === 'oops'));
Assert.isFalse((a.num === 'oops'));
Assert.isFalse((a.nul === 'oops'));
Assert.isFalse((a.undef === 'oops'));
Assert.isFalse((a.T === 'oops'));
YAHOO.lang.augmentObject(a,b,true);
Assert.isTrue((a.bool === 'oops'));
Assert.isTrue((a.num === 'oops'));
Assert.isTrue((a.nul === 'oops'));
Assert.isTrue((a.undef === 'oops'));
Assert.isTrue((a.T === 'oops'));
},
test_augmentProto: function() {
},
test_to_fail : function (){
Assert.isNull("not null");;
}
}));
function runTests(){
YAHOO.tool.TestRunner.run();
}
// YAHOO.util.Event.onDomReady(function (){ // need to wait for the frame to load
YAHOO.util.Event.on(window, "load", function (){
//create the logger
var logger = new YAHOO.tool.TestLogger();
//add the tests
YAHOO.tool.TestRunner.add(suite);
//add event handler
YAHOO.util.Event.addListener("btnRun", "click", runTests);
if (parent && parent != window) {
YAHOO.tool.TestManager.load();
} else {
YAHOO.tool.TestRunner.run();
}
});
})();
</script>
</body>
</html>