From f27002b56593cb140ae46c77119ede04ec12648f Mon Sep 17 00:00:00 2001 From: Gregers Gram Rygg Date: Mon, 21 May 2012 16:41:55 +0200 Subject: [PATCH] Tests for vendor prefix detection --- tests/Util.html | 68 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/tests/Util.html b/tests/Util.html index ecb583beb0..84f67b1664 100644 --- a/tests/Util.html +++ b/tests/Util.html @@ -1119,6 +1119,71 @@ t.eq(OpenLayers.Util.getFormattedLonLat(-181, "lon"), "179°00'00\"E", "crossing dateline from the west results in correct east coordinate"); t.eq(OpenLayers.Util.getFormattedLonLat(181, "lon"), "179°00'00\"W", "crossing dateline from the east results in correct west coordinate"); } + + /** + * Test vendor prefixing + */ + function test_vendor_prefixes(t) { + t.plan(12); + var o = {}, err; + var orgCreateElement = document.createElement; + // wrap document.createElement to control property values + document.createElement = function(type) { + var el = orgCreateElement.call(document, type); + // Since o is an object we can change prop for each test + if(o.prop) { + el.style[o.prop] = o.val; + } + return el; + }; + + function curryTestPrefix(type) { + return function(standardProp, expectedPrefix, msg) { + var prefixedProp, err, method = "getVendorPrefixed" + type; + try { + OpenLayers.Util[method]("clear cache"); + prefixedProp = OpenLayers.Util[method](standardProp); + } catch(e) { + err = e; + } + if(!err) { + t.eq(prefixedProp, expectedPrefix, msg); + } else { + t.fail("Error when testing " + type.toUpperCase() + " vendor prefix: " + err.message); + } + }; + } + var testDomPrefix = curryTestPrefix("Dom"), + testCssPrefix = curryTestPrefix("Css"); + + o.prop = "test"; + o.val = ""; + testDomPrefix("test", "test", "DOM vendor prefix - single word"); + testCssPrefix("test", "test", "CSS vendor prefix - single word"); + + o.prop = "testMultiWord"; + testDomPrefix("testMultiWord", "testMultiWord", "DOM vendor prefix - multiple words"); + testCssPrefix("test-multi-word", "test-multi-word", "CSS vendor prefix - multiple words"); + + o.prop = "WebkitMultiWord"; + testDomPrefix("multiWord", "WebkitMultiWord", "DOM vendor prefix - multiple words for WebKit"); + testCssPrefix("multi-word", "-webkit-multi-word", "CSS vendor prefix - multiple words for WebKit"); + + o.prop = "MozMultiWord"; + testDomPrefix("multiWord", "MozMultiWord", "DOM vendor prefix - multiple words for Mozilla"); + testCssPrefix("multi-word", "-moz-multi-word", "CSS vendor prefix - multiple words for Mozilla"); + + o.prop = "OMultiWord"; + testDomPrefix("multiWord", "OMultiWord", "DOM vendor prefix - multiple words for Opera"); + testCssPrefix("multi-word", "-o-multi-word", "CSS vendor prefix - multiple words for Opera"); + + o.prop = "msMultiWord"; + testDomPrefix("multiWord", "msMultiWord", "DOM vendor prefix - multiple words for Internet Explorer"); + testCssPrefix("multi-word", "-ms-multi-word", "CSS vendor prefix - multiple words for Internet Explorer"); + + // unwrap document.createElement + document.createElement = orgCreateElement; + } /** * To test that we can safely call OpenLayers.Util.extend with an Event @@ -1127,7 +1192,7 @@ var loadEvent; window.onload = function(evt) { loadEvent = evt || window.event; - } + }; function test_extend_event(t) { t.plan(2); t.ok(loadEvent, "loadEvent recorded"); @@ -1143,6 +1208,7 @@ t.eq(extended && extended.foo, "bar", "extended with event"); } } +