UNPKG

accessibility-developer-tools

Version:

This is a library of accessibility-related testing and utility code.

178 lines (160 loc) 6.09 kB
<!DOCTYPE html> <html> <!-- Copyright 2008 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <!-- Author: attila@google.com (Attila Bodis) --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Closure Performance Tests - goog.ui.Button</title> <link rel="stylesheet" type="text/css" href="../testing/performancetable.css" /> <script src="../base.js"></script> <script> goog.require('goog.dom'); goog.require('goog.events'); goog.require('goog.events.EventHandler'); goog.require('goog.events.EventType'); goog.require('goog.testing.PerformanceTable'); goog.require('goog.testing.jsunit'); goog.require('goog.ui.Button'); goog.require('goog.dom.TagName'); </script> </head> <body> <h1>goog.ui.Button Performance Tests</h1> <p> <b>User-agent:</b> <script>document.write(navigator.userAgent);</script> </p> <div id="perfTable"></div> <hr> <div id="renderSandbox"></div> <div id="decorateSandbox"></div> <script> // The sandboxen. var renderSandbox = goog.dom.getElement('renderSandbox'); var decorateSandbox = goog.dom.getElement('decorateSandbox'); // Arrays of rendered/decorated buttons (so we can dispose of them). var renderedButtons; var decoratedButtons; // 0-based index of the button currently being rendered/decorated. var renderIndex; var decorateIndex; // Element currently being decorated. var elementToDecorate; // Number of buttons to create/decorate per test run. var SAMPLES_PER_RUN = 200; // The performance table. var table; function setUpPage() { table = new goog.testing.PerformanceTable( goog.dom.getElement('perfTable')); } // Sets up a render test. function setUpRenderTest() { renderedButtons = []; renderIndex = 0; } // Cleans up after a render test. function cleanUpAfterRenderTest() { for (var i = 0, count = renderedButtons.length; i < count; i++) { renderedButtons[i].dispose(); } renderedButtons = null; goog.dom.removeChildren(renderSandbox); } // Sets up a decorate test. function setUpDecorateTest(opt_count) { var count = opt_count || 1000; for (var i = 0; i < count; i++) { decorateSandbox.appendChild(goog.dom.createDom(goog.dom.TagName.BUTTON, 'goog-button', 'W00t!')); } elementToDecorate = decorateSandbox.firstChild; decoratedButtons = []; decorateIndex = 0; } // Cleans up after a decorate test. function cleanUpAfterDecorateTest() { for (var i = 0, count = decoratedButtons.length; i < count; i++) { decoratedButtons[i].dispose(); } decoratedButtons = null; goog.dom.removeChildren(decorateSandbox); } // Renders the given number of buttons. Since children are appended to // the same parent element in each performance test run, we keep track of // the current index via the global renderIndex variable. function renderButtons(count, autoDetectBiDi) { for (var i = 0; i < count; i++) { var button = new goog.ui.Button('W00t!'); if (!autoDetectBiDi) { button.setRightToLeft(false); } button.render(renderSandbox); renderedButtons[renderIndex++] = button; } } // Decorates "count" buttons. The decorate sandbox contains enough child // elements for the whole test, but we only decorate up to "count" elements // per test run, so we need to keep track of where we are via the global // decorateIndex and elementToDecorate variables. function decorateButtons(count, autoDetectBiDi) { for (var i = 0; i < count; i++) { var next = elementToDecorate.nextSibling; var button = new goog.ui.Button(); if (!autoDetectBiDi) { button.setRightToLeft(false); } button.decorate(elementToDecorate); decoratedButtons[decorateIndex++] = button; elementToDecorate = next; } } function testRender() { setUpRenderTest(); table.run( goog.partial(renderButtons, SAMPLES_PER_RUN, true), 'Render ' + SAMPLES_PER_RUN + ' buttons (default)'); cleanUpAfterRenderTest(); assertEquals('The expected number of buttons must have been rendered', SAMPLES_PER_RUN * table.getTimer().getNumSamples(), renderIndex); } function testDecorate() { setUpDecorateTest(SAMPLES_PER_RUN * table.getTimer().getNumSamples()); table.run( goog.partial(decorateButtons, SAMPLES_PER_RUN, true), 'Decorate ' + SAMPLES_PER_RUN + ' buttons (default)'); cleanUpAfterDecorateTest(); assertEquals('The expected number of buttons must have been decorated', SAMPLES_PER_RUN * table.getTimer().getNumSamples(), decorateIndex); assertNull('All buttons must have been decorated', elementToDecorate); } function testRenderNoBiDiAutoDetect() { setUpRenderTest(); table.run( goog.partial(renderButtons, SAMPLES_PER_RUN, false), 'Render ' + SAMPLES_PER_RUN + ' buttons (no BiDi auto-detect)'); cleanUpAfterRenderTest(); assertEquals('The expected number of buttons must have been rendered', SAMPLES_PER_RUN * table.getTimer().getNumSamples(), renderIndex); } function testDecorateNoBiDiAutoDetect() { setUpDecorateTest(SAMPLES_PER_RUN * table.getTimer().getNumSamples()); table.run( goog.partial(decorateButtons, SAMPLES_PER_RUN, false), 'Decorate ' + SAMPLES_PER_RUN + ' buttons (no BiDi auto-detect)'); cleanUpAfterDecorateTest(); assertEquals('The expected number of buttons must have been decorated', SAMPLES_PER_RUN * table.getTimer().getNumSamples(), decorateIndex); assertNull('All buttons must have been decorated', elementToDecorate); } </script> </body> </html>