UNPKG

dojox

Version:

Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.

117 lines (112 loc) 4.94 kB
<!DOCTYPE HTML> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <title>Button Tests</title> <script type="text/javascript" src="../../../deviceTheme.js"></script> <script type="text/javascript" src="../../../../../dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: true"></script> <script language="JavaScript" type="text/javascript"> var BUTTON_LABEL = "Button"; var BUTTON_WIDTH = 58; var BUTTON_WIDTH_FF = 64; var BUTTON_WIDTH_WINTHEME = 64; // IE10 var BUTTON_HEIGHT = 27; var BUTTON_HEIGHT_WINTHEME = 28; // IE10 // actual width/height should differ from the expected one by at most this // percentage of difference var DIFF_PERCENTAGE = 15; // at most 15% of difference require([ "dojo/sniff", "dojo/dom-class", "dojo/dom-construct", // dojo.place "dojo/ready", // dojo.ready "dojo/_base/window", "dijit/registry", // dijit.byId "doh/runner", //doh functions "dojox/mobile/Button", "dojox/mobile", // This is a mobile app. "dojox/mobile/View", // This mobile app uses mobile view "dojox/mobile/compat", // This mobile app supports running on desktop browsers "dojox/mobile/parser" // This mobile app uses declarative programming with fast mobile parser ], function(has, domClass, domConst, ready, win, registry, runner, Button){ function _createButtonDeclaratively(buttonId) { return registry.byId(buttonId); }; function _createButtonProgrammatically(placeHolderId){ var button = new Button({label:BUTTON_LABEL}); runner.assertNotEqual(null, button, placeHolderId); domConst.place(button.domNode, placeHolderId, "replace"); button.startup(); return button; }; function _createButtonProgrammaticallyWithSourceNodeReference(buttonId){ return new Button({label:BUTTON_LABEL}, buttonId); }; function _assertCorrectButton(width, height, button){ if(width < 0){ return; // Skip for IE<9 (a negative width is the convention we use for skipping) } runner.assertNotEqual(null, button); var widthDiffPercentage = Math.abs((width - button.domNode.clientWidth) / width) * 100; var heightDiffPercentage = Math.abs((height - button.domNode.clientHeight) / width) * 100; runner.assertTrue(widthDiffPercentage < DIFF_PERCENTAGE, "width got " + button.domNode.clientWidth + " expected: near " + width + " with less than " + DIFF_PERCENTAGE + "%" + " of difference; id=" + button.domNode.id); runner.assertTrue(heightDiffPercentage < DIFF_PERCENTAGE, "height got " + button.domNode.clientHeight + " expected: near " + height + " with less than " + DIFF_PERCENTAGE + "%" + " of difference; id=" + button.domNode.id); } function _showView2(){ var view1 = registry.byId("view1"); view1.performTransition("view2", 1, "none"); }; ready(function(){ var buttonWidth = domClass.contains(win.doc.documentElement, "windows_theme") ? BUTTON_WIDTH_WINTHEME : has("ff") ? BUTTON_WIDTH_FF : BUTTON_WIDTH; var buttonHeight = domClass.contains(win.doc.documentElement, "windows_theme") ? BUTTON_HEIGHT_WINTHEME : BUTTON_HEIGHT; // Skip the checks for IE<9 if(has("ie") < 9){ buttonWidth = -1; // negative value as convention for skipping tests } runner.register("dojox.mobile.test.doh.ButtonTests", [ function testInView1(){ var button1 = _createButtonDeclaratively("view1-button1"); var button2 = _createButtonProgrammatically("view1-button2"); var button3 = _createButtonProgrammaticallyWithSourceNodeReference("view1-button3"); _assertCorrectButton(buttonWidth, buttonHeight, button1); _assertCorrectButton(buttonWidth, buttonHeight, button2); _assertCorrectButton(buttonWidth, buttonHeight, button3); }, function testInView2(){ var button1 = _createButtonDeclaratively("view2-button1"); var button2 = _createButtonProgrammatically("view2-button2"); var button3 = _createButtonProgrammaticallyWithSourceNodeReference("view2-button3"); _showView2(); _assertCorrectButton(buttonWidth, buttonHeight, button1); _assertCorrectButton(buttonWidth, buttonHeight, button2); _assertCorrectButton(buttonWidth, buttonHeight, button3); } ]); runner.run(); }); }); </script> </head> <body> <div id="view1" data-dojo-type="dojox.mobile.View" selected="true"> <h1>View 1</h1> <button id="view1-button1" data-dojo-type="dojox.mobile.Button">Button</button> <div id="view1-button2"></div> <button id="view1-button3"></button> </div> <div id="view2" data-dojo-type="dojox.mobile.View"> <h1>View 2</h1> <button id="view2-button1" data-dojo-type="dojox.mobile.Button">Button</button> <div id="view2-button2"></div> <button id="view2-button3"></button> </div> </body> </html>