@qooxdoo/framework
Version:
The JS Framework for Coders
513 lines (428 loc) • 19.7 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2011 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Martin Wittemann (martinwittemann)
************************************************************************ */
/**
* @require(qx.io.remote.Request)
* @require(qx.ui.core.scroll.MScrollBarFactory)
*/
qx.Class.define("qx.test.core.Environment",
{
extend : qx.test.ui.LayoutTestCase,
members :
{
// /////////////////////////////////
// TESTS FOR THE ENVIRONMENT CLASS
// ////////////////////////////// //
testGet : function() {
// fake the check
qx.core.Environment.getChecks()["affe"] = function() {
return "affe";
};
this.assertEquals("affe", qx.core.Environment.get("affe"));
// clear the fake check
delete qx.core.Environment.getChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
},
testGetAsync : function() {
// fake the check
qx.core.Environment.getAsyncChecks()["affe"] = function(clb, self) {
window.setTimeout(function() {
clb.call(self, "affe");
}, 0);
};
qx.core.Environment.getAsync("affe", function(result) {
this.resume(function() {
this.assertEquals("affe", result);
// clear the fake check
delete qx.core.Environment.getAsyncChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
}, this);
}, this);
this.wait();
},
testSelect : function() {
// fake the check
qx.core.Environment.getChecks()["affe"] = function() {
return "affe";
};
var test;
test = qx.core.Environment.select("affe", {
"affe" : "affe"
});
this.assertEquals(test, "affe");
// clear the fake check
delete qx.core.Environment.getChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
},
testSelectDefault : function() {
// fake the check
qx.core.Environment.getChecks()["affe"] = function() {
return "affe";
};
var test;
test = qx.core.Environment.select("affe", {
"default" : "affe"
});
this.assertEquals(test, "affe");
// clear the fake check
delete qx.core.Environment.getChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
},
testSelectAsync :function() {
// fake the check
qx.core.Environment.addAsync("affe", function(clb, self) {
window.setTimeout(function() {
clb.call(self, "AFFE");
}, 0);
});
qx.core.Environment.selectAsync("affe", {
"affe" : function(result) {
this.resume(function() {
// clear the fake check
delete qx.core.Environment.getChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
this.assertEquals("AFFE", result);
}, this);
}
}, this);
this.wait();
},
testCache: function() {
// fake the check
qx.core.Environment.getChecks()["affe"] = function() {
return "affe";
};
this.assertEquals("affe", qx.core.Environment.get("affe"));
// clear the fake check
delete qx.core.Environment.getChecks()["affe"];
this.assertEquals("affe", qx.core.Environment.get("affe"));
qx.core.Environment.invalidateCacheKey("affe");
},
testCacheInvalidation: function() {
// fake the check
qx.core.Environment.getChecks()["affe"] = function() {
return "affe";
};
this.assertEquals("affe", qx.core.Environment.get("affe"));
qx.core.Environment.invalidateCacheKey("affe");
// fake another check
qx.core.Environment.getChecks()["affe"] = function() {
return "affe2";
};
this.assertEquals("affe2", qx.core.Environment.get("affe"));
// clear the fake check
delete qx.core.Environment.getChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
},
testAddFunction : function() {
qx.core.Environment.add("affe", function() {
return "AFFE";
});
this.assertEquals("AFFE", qx.core.Environment.get("affe"));
// clear the check
delete qx.core.Environment.getChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
},
testAddValue : function() {
qx.core.Environment.add("affe", "AFFE");
this.assertEquals("AFFE", qx.core.Environment.get("affe"));
// clear the check
delete qx.core.Environment.getChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
},
testAddAsyncFunction : function() {
qx.core.Environment.addAsync("affe", function(clb, self) {
window.setTimeout(function() {
clb.call(self, "AFFE");
}, 0);
});
qx.core.Environment.getAsync("affe", function(result) {
this.resume(function() {
this.assertEquals("AFFE", result);
// clear the fake check
delete qx.core.Environment.getAsyncChecks()["affe"];
qx.core.Environment.invalidateCacheKey("affe");
}, this);
}, this);
this.wait();
},
testFilter : function() {
// fake the checks
qx.core.Environment.getChecks()["affe1"] = function() {
return true;
};
qx.core.Environment.getChecks()["affe2"] = function() {
return false;
};
qx.core.Environment.getChecks()["affe3"] = function() {
return true;
};
var array = qx.core.Environment.filter({
"affe1" : 1,
"affe2" : 2,
"affe3" : 3
});
this.assertEquals(2, array.length);
this.assertEquals(1, array[0]);
this.assertEquals(3, array[1]);
// clear the fake check
delete qx.core.Environment.getChecks()["affe1"];
delete qx.core.Environment.getChecks()["affe2"];
delete qx.core.Environment.getChecks()["affe3"];
qx.core.Environment.invalidateCacheKey("affe1");
qx.core.Environment.invalidateCacheKey("affe2");
qx.core.Environment.invalidateCacheKey("affe3");
},
// //////////////////////////////
// TESTS FOR THE CHECKS
// //////////////////////////////
testEngineName : function() {
this.assertNotEquals("", qx.core.Environment.get("engine.name"));
},
testEngineVersion : function() {
this.assertNotEquals("", qx.core.Environment.get("engine.version"));
},
testBrowser : function() {
this.assertNotEquals("", qx.core.Environment.get("browser.name"));
this.assertNotEquals("", qx.core.Environment.get("browser.version"));
qx.core.Environment.get("browser.documentmode");
this.assertBoolean(qx.core.Environment.get("browser.quirksmode"));
},
testLocale : function() {
this.assertNotEquals("", qx.core.Environment.get("locale"));
},
testVariant : function() {
// just make sure the call is working
qx.core.Environment.get("locale.variant");
},
testOS : function() {
// just make sure the call is working
this.assertString(qx.core.Environment.get("os.name"));
this.assertString(qx.core.Environment.get("os.version"));
},
testQuicktime : function() {
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("plugin.quicktime"));
qx.core.Environment.get("plugin.quicktime.version");
},
testSkype : function() {
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("plugin.skype"));
},
testWmv : function() {
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("plugin.windowsmedia"));
qx.core.Environment.get("plugin.windowsmedia.version");
},
testDivx : function() {
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("plugin.divx"));
qx.core.Environment.get("plugin.divx.version");
},
testSilverlight : function() {
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("plugin.silverlight"));
qx.core.Environment.get("plugin.silverlight.version");
},
testFlash : function() {
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("plugin.flash"));
qx.core.Environment.get("plugin.flash.version");
this.assertBoolean(qx.core.Environment.get("plugin.flash.express"));
this.assertBoolean(qx.core.Environment.get("plugin.flash.strictsecurity"));
},
testPdf : function()
{
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("plugin.pdf"));
qx.core.Environment.get("plugin.pdf.version");
},
testIO : function() {
// just make sure the call is working
qx.core.Environment.get("io.maxrequests");
this.assertBoolean(qx.core.Environment.get("io.ssl"));
},
testIOXhr : function() {
var xhr = qx.core.Environment.get("io.xhr");
this.assertString(xhr);
// Should return "xhr" when standard XHR is available
if (window.XMLHttpRequest &&
window.location.protocol !== "file:") {
this.assertEquals("xhr", xhr);
}
},
testHtml : function() {
// just make sure the call is working
this.assertBoolean(qx.core.Environment.get("html.webworker"));
this.assertBoolean(qx.core.Environment.get("html.geolocation"));
this.assertBoolean(qx.core.Environment.get("html.audio"));
this.assertString(qx.core.Environment.get("html.audio.ogg"));
this.assertString(qx.core.Environment.get("html.audio.mp3"));
this.assertString(qx.core.Environment.get("html.audio.wav"));
this.assertString(qx.core.Environment.get("html.audio.aif"));
this.assertString(qx.core.Environment.get("html.audio.au"));
this.assertBoolean(qx.core.Environment.get("html.video"));
this.assertString(qx.core.Environment.get("html.video.ogg"));
this.assertString(qx.core.Environment.get("html.video.h264"));
this.assertString(qx.core.Environment.get("html.video.webm"));
this.assertBoolean(qx.core.Environment.get("html.storage.local"));
this.assertBoolean(qx.core.Environment.get("html.storage.session"));
this.assertBoolean(qx.core.Environment.get("html.storage.userdata"));
this.assertBoolean(qx.core.Environment.get("html.classlist"));
this.assertBoolean(qx.core.Environment.get("html.xpath"));
this.assertBoolean(qx.core.Environment.get("html.xul"));
this.assertBoolean(qx.core.Environment.get("html.canvas"));
this.assertBoolean(qx.core.Environment.get("html.svg"));
this.assertBoolean(qx.core.Environment.get("html.vml"));
this.assertBoolean(qx.core.Environment.get("html.console"));
this.assertBoolean(qx.core.Environment.get("html.stylesheet.createstylesheet"));
this.assertBoolean(qx.core.Environment.get("html.stylesheet.insertrule"));
this.assertBoolean(qx.core.Environment.get("html.stylesheet.deleterule"));
this.assertBoolean(qx.core.Environment.get("html.stylesheet.addimport"));
this.assertBoolean(qx.core.Environment.get("html.stylesheet.removeimport"));
this.assertBoolean(qx.core.Environment.get("html.element.contains"));
this.assertBoolean(qx.core.Environment.get("html.element.compareDocumentPosition"));
this.assertBoolean(qx.core.Environment.get("html.element.textcontent"));
this.assertBoolean(qx.core.Environment.get("html.image.naturaldimensions"));
this.assertBoolean(qx.core.Environment.get("html.history.state"));
this.assertString(qx.core.Environment.get("html.selection"));
this.assertBoolean(qx.core.Environment.get("html.node.isequalnode"));
},
testXml : function()
{
this.assertBoolean(qx.core.Environment.get("xml.implementation"));
this.assertBoolean(qx.core.Environment.get("xml.domparser"));
this.assertBoolean(qx.core.Environment.get("xml.selectsinglenode"));
this.assertBoolean(qx.core.Environment.get("xml.selectnodes"));
this.assertBoolean(qx.core.Environment.get("xml.getelementsbytagnamens"));
this.assertBoolean(qx.core.Environment.get("xml.domproperties"));
this.assertBoolean(qx.core.Environment.get("xml.attributens"));
this.assertBoolean(qx.core.Environment.get("xml.createnode"));
this.assertBoolean(qx.core.Environment.get("xml.getqualifieditem"));
this.assertBoolean(qx.core.Environment.get("xml.createelementns"));
},
testGears : function() {
this.assertBoolean(qx.core.Environment.get("plugin.gears"));
},
testActiveX : function() {
this.assertBoolean(qx.core.Environment.get("plugin.activex"));
},
testCss : function() {
this.assertNotEquals("", qx.core.Environment.get("css.boxmodel"));
this.assertBoolean(qx.core.Environment.get("css.placeholder"));
this.assertBoolean(qx.core.Environment.get("css.rgba"));
var boxShadow = qx.core.Environment.get("css.boxshadow");
this.assert(typeof boxShadow === "string" || boxShadow === null);
var borderRadius = qx.core.Environment.get("css.borderradius");
this.assert(typeof borderRadius == "string" || borderRadius === null);
var borderImage = qx.core.Environment.get("css.borderimage");
this.assert(typeof borderImage == "string" || borderImage === null);
var borderImageSyntax = qx.core.Environment.get("css.borderimage.standardsyntax");
this.assert(typeof borderImageSyntax == "boolean" || borderImageSyntax === null);
var textOverflow = qx.core.Environment.get("css.textoverflow");
this.assert(typeof textOverflow == "string" || textOverflow === null);
var userSelect = qx.core.Environment.get("css.userselect");
this.assert(typeof userSelect == "string" || userSelect === null);
var userSelectNone = qx.core.Environment.get("css.userselect.none");
this.assert(typeof userSelectNone == "string" || userSelectNone === null);
var userModify = qx.core.Environment.get("css.usermodify");
this.assert(typeof userModify == "string" || userModify === null);
var appearance = qx.core.Environment.get("css.appearance");
this.assert(typeof appearance == "string" || appearance === null);
var boxSizing = qx.core.Environment.get("css.boxsizing");
this.assert(typeof boxSizing == "string" || boxSizing === null);
var inlineBlock = qx.core.Environment.get("css.inlineblock");
this.assert(typeof inlineBlock == "string" || inlineBlock === null);
this.assertBoolean(qx.core.Environment.get("css.opacity"));
var linearGradient = qx.core.Environment.get("css.gradient.linear");
this.assert(typeof linearGradient == "string" || linearGradient === null);
this.assertBoolean(qx.core.Environment.get("css.gradient.filter"));
var radialGradient = qx.core.Environment.get("css.gradient.radial");
this.assert(typeof radialGradient == "string" || radialGradient === null);
this.assertBoolean(qx.core.Environment.get("css.gradient.legacywebkit"));
this.assertBoolean(qx.core.Environment.get("css.alphaimageloaderneeded"));
this.assertBoolean(qx.core.Environment.get("css.pointerevents"));
},
testPhoneGap : function() {
this.assertBoolean(qx.core.Environment.get("phonegap"));
this.assertBoolean(qx.core.Environment.get("phonegap.notification"));
},
testEvent : function() {
this.assertBoolean(qx.core.Environment.get("event.touch"));
this.assertBoolean(qx.core.Environment.get("event.help"));
this.assertBoolean(qx.core.Environment.get("event.hashchange"));
this.assertBoolean(qx.core.Environment.get("event.dispatchevent"));
this.assertBoolean(qx.core.Environment.get("event.customevent"));
this.assertBoolean(qx.core.Environment.get("event.mouseevent"));
},
testEcmaScript : function() {
var stackTrace = qx.core.Environment.get("ecmascript.error.stacktrace");
this.assert(typeof stackTrace == "string" || stackTrace === null);
this.assertBoolean(qx.core.Environment.get("ecmascript.array.indexof"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.lastindexof"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.foreach"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.filter"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.map"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.some"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.every"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.reduce"));
this.assertBoolean(qx.core.Environment.get("ecmascript.array.reduceright"));
this.assertBoolean(qx.core.Environment.get("ecmascript.function.bind"));
this.assertBoolean(qx.core.Environment.get("ecmascript.object.keys"));
this.assertBoolean(qx.core.Environment.get("ecmascript.date.now"));
this.assertBoolean(qx.core.Environment.get("ecmascript.error.toString"));
this.assertBoolean(qx.core.Environment.get("ecmascript.string.trim"));
this.assertBoolean(qx.core.Environment.get("ecmascript.string.endsWith"));
this.assertBoolean(qx.core.Environment.get("ecmascript.string.startsWith"));
},
testDataUrl : function() {
qx.core.Environment.getAsync("html.dataurl", function(result) {
this.resume(function() {
this.assertBoolean(result);
}, this);
}, this);
this.wait();
},
testDevice : function() {
this.assertString(qx.core.Environment.get("device.name"));
},
testDeviceType : function() {
this.assertString(qx.core.Environment.get("device.type"));
},
testDevicePixelRatio : function() {
this.assertNumber(qx.core.Environment.get("device.pixelRatio"));
},
testQx : function() {
this.assertBoolean(qx.core.Environment.get("qx.allowUrlSettings"), "1");
this.assertBoolean(qx.core.Environment.get("qx.allowUrlVariants"), "2");
this.assertString(qx.core.Environment.get("qx.application"), "3");
this.assertNumber(qx.core.Environment.get("qx.debug.dispose.level"), "5");
this.assertBoolean(qx.core.Environment.get("qx.globalErrorHandling"), "6");
this.assertBoolean(qx.core.Environment.get("qx.debug.io.remote"), "7");
this.assertBoolean(qx.core.Environment.get("qx.debug.io.remote.data"), "8");
this.assertBoolean(qx.core.Environment.get("qx.nativeScrollBars"), "9");
this.assertNumber(qx.core.Environment.get("qx.debug.property.level"), "10");
this.assertBoolean(qx.core.Environment.get("qx.debug"), "11");
this.assertBoolean(qx.core.Environment.get("qx.aspects"), "12");
this.assertBoolean(qx.core.Environment.get("qx.dynlocale"), "13");
this.assertBoolean(qx.core.Environment.get("qx.mobile.nativescroll"), "15");
this.assertBoolean(qx.core.Environment.get("qx.dynlocale"), "17");
},
testAnimationTransformTransition : function() {
// smoke test... make sure the method is doing something
qx.core.Environment.get("css.animation");
qx.core.Environment.get("css.transform");
qx.core.Environment.get("css.transition");
// 3d transform support
this.assertBoolean(qx.core.Environment.get("css.transform.3d"));
}
}
});