object.html revision 4390434761f176b0f8d7a71c00a6e0141aa1752c
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<html>
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<head>
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<title>YUI Object Tests</title>
4bff34e37def8a90f9194d81bc345c52ba20086athurlow</head>
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<body class="yui-skin-sam">
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<h1>Object Tests</h1>
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<p><input type="button" value="Run Tests" id="btnRun" disabled="true" /></p>
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<script type="text/javascript" src="/build/yui/yui.js"></script>
4bff34e37def8a90f9194d81bc345c52ba20086athurlow<script type="text/javascript">
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow(function() {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow YUI({
4bff34e37def8a90f9194d81bc345c52ba20086athurlow base: "/build/",
4bff34e37def8a90f9194d81bc345c52ba20086athurlow logExclude: {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow attribute: true,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow dom: true,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow node: true,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow event: true,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow // deprecated: true,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow base: true,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow widget: true,
4bff34e37def8a90f9194d81bc345c52ba20086athurlow selector: true
4bff34e37def8a90f9194d81bc345c52ba20086athurlow },
4bff34e37def8a90f9194d81bc345c52ba20086athurlow useConsole: true
4bff34e37def8a90f9194d81bc345c52ba20086athurlow }).use("dump", "test", "console", "event-custom", function(Y) {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow var button = Y.get('#btnRun');
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow // Set up the page
4bff34e37def8a90f9194d81bc345c52ba20086athurlow button.set("disabled", false);
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.on("click", function() {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Test.Runner.run();
4bff34e37def8a90f9194d81bc345c52ba20086athurlow }, button);
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow var myConsole = new Y.Console().render();
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross var o = {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow a1: {
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross a2: {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow a3: 'a'
4bff34e37def8a90f9194d81bc345c52ba20086athurlow }
4bff34e37def8a90f9194d81bc345c52ba20086athurlow },
4bff34e37def8a90f9194d81bc345c52ba20086athurlow b1: {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow b2: 'b'
4bff34e37def8a90f9194d81bc345c52ba20086athurlow },
4bff34e37def8a90f9194d81bc345c52ba20086athurlow c1: 'c'
4bff34e37def8a90f9194d81bc345c52ba20086athurlow }
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow var testCase = new Y.Test.Case({
4bff34e37def8a90f9194d81bc345c52ba20086athurlow name: "Object tests",
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow test_deep_getValue: function() {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual('c', Y.Object.getValue(o, 'c1'));
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual('a', Y.Object.getValue(o, ['a1', 'a2', 'a3']));
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual(undefined, Y.Object.getValue(o, ['b1', 'b2', 'b3']));
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual(undefined, Y.Object.getValue(null, ['b1', 'b2', 'b3']));
4bff34e37def8a90f9194d81bc345c52ba20086athurlow },
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow test_deep_setValue: function() {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Object.setValue(o, 'c1', 'changed_c');
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Object.setValue(o, ['a1', 'a2', 'a3'], 'changed_a');
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Object.setValue(o, ['b1', 'b2', 'b3'], 'changed_b');
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual('changed_c', Y.Object.getValue(o, 'c1'));
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual('changed_a', Y.Object.getValue(o, ['a1', 'a2', 'a3']));
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual(undefined, Y.Object.getValue(o, ['b1', 'b2', 'b3']));
4bff34e37def8a90f9194d81bc345c52ba20086athurlow },
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross test_people_messing_up_object_prototype: function() {
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross var count = 0;
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross Object.prototype.foo = 'hello!';
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.isFalse(Y.Object.hasKey({}, 'foo'), 'hasKey should not find proto props');
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross Y.Assert.areEqual(0, Y.Object.size({}), 'size should not count proto additions');
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual(0, Y.Object.keys({}), 'keys should not include proto additions');
4bff34e37def8a90f9194d81bc345c52ba20086athurlow Y.Assert.areEqual(0, Y.Object.values({}), 'values should not count proto additions');
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross Y.Assert.isFalse(Y.Object.hasValue({}, 'hello!'), 'hasValue should not look at proto additions');
4bff34e37def8a90f9194d81bc345c52ba20086athurlow
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross Y.Object.each({}, function () {
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross count++;
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross });
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross Y.Assert.areEqual(0, count, 'each should not iterate proto props unless asked to do so.');
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
4bff34e37def8a90f9194d81bc345c52ba20086athurlow }
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross });
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross Y.Test.Runner.add(testCase);
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross Y.Test.Runner.run();
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross });
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross})();
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross</script>
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross</body>
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross</html>
613a2f6ba31e891e3d947a356daf5e563d43c1ceGordon Ross