diff -r 000000000000 -r 40c8f766c9b8 src/cm/media/js/lib/yui/yui_3.0.0b1/api/TestManager.js.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.0.0b1/api/TestManager.js.html Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,495 @@ + + + + + API: test TestManager.js (YUI Library) + + + + + + + + + + +
+
+

Yahoo! UI Library

+

test  3.0.0b1

+ Yahoo! UI Library + > test + + > TestManager.js (source view) +
+
+ Search: +
+   +
+
+
+
+ +
+
+
+
+
+ Filters + + + +
+
+ +
+ +
    Y.namespace("Test");
+
+    /**
+     * Runs pages containing test suite definitions.
+     * @namespace Test
+     * @class Manager
+     * @static
+     */
+    Y.Test.Manager = {
+    
+        /**
+         * Constant for the testpagebegin custom event
+         * @property TEST_PAGE_BEGIN_EVENT
+         * @static
+         * @type string
+         * @final
+         */
+        TEST_PAGE_BEGIN_EVENT : "testpagebegin",
+    
+        /**
+         * Constant for the testpagecomplete custom event
+         * @property TEST_PAGE_COMPLETE_EVENT
+         * @static
+         * @type string
+         * @final
+         */
+        TEST_PAGE_COMPLETE_EVENT : "testpagecomplete",
+    
+        /**
+         * Constant for the testmanagerbegin custom event
+         * @property TEST_MANAGER_BEGIN_EVENT
+         * @static
+         * @type string
+         * @final
+         */
+        TEST_MANAGER_BEGIN_EVENT : "testmanagerbegin",
+    
+        /**
+         * Constant for the testmanagercomplete custom event
+         * @property TEST_MANAGER_COMPLETE_EVENT
+         * @static
+         * @type string
+         * @final
+         */
+        TEST_MANAGER_COMPLETE_EVENT : "testmanagercomplete",
+    
+        //-------------------------------------------------------------------------
+        // Private Properties
+        //-------------------------------------------------------------------------
+        
+        
+        /**
+         * The URL of the page currently being executed.
+         * @type String
+         * @private
+         * @property _curPage
+         * @static
+         */
+        _curPage : null,
+        
+        /**
+         * The frame used to load and run tests.
+         * @type Window
+         * @private
+         * @property _frame
+         * @static
+         */
+        _frame : null,
+        
+        /**
+         * The logger used to output results from the various tests.
+         * @type YAHOO.tool.TestLogger
+         * @private
+         * @property _logger
+         * @static
+         */
+        _logger : null,
+        
+        /**
+         * The timeout ID for the next iteration through the tests.
+         * @type int
+         * @private
+         * @property _timeoutId
+         * @static
+         */
+        _timeoutId : 0,
+        
+        /**
+         * Array of pages to load.
+         * @type String[]
+         * @private
+         * @property _pages
+         * @static
+         */
+        _pages : [],
+        
+        /**
+         * Aggregated results
+         * @type Object
+         * @private
+         * @property _results
+         * @static
+         */
+        _results: null,
+        
+        //-------------------------------------------------------------------------
+        // Private Methods
+        //-------------------------------------------------------------------------
+        
+        /**
+         * Handles TestRunner.COMPLETE_EVENT, storing the results and beginning
+         * the loop again.
+         * @param {Object} data Data about the event.
+         * @return {Void}
+         * @private
+         * @static
+         */
+        _handleTestRunnerComplete : function (data) {
+    
+            this.fireEvent(this.TEST_PAGE_COMPLETE_EVENT, {
+                    page: this._curPage,
+                    results: data.results
+                });
+        
+            //save results
+            //this._results[this.curPage] = data.results;
+            
+            //process 'em
+            this._processResults(this._curPage, data.results);
+            
+            this._logger.clearTestRunner();
+        
+            //if there's more to do, set a timeout to begin again
+            if (this._pages.length){
+                this._timeoutId = setTimeout(function(){
+                    YAHOO.tool.TestManager._run();
+                }, 1000);
+            } else {
+                this.fireEvent(this.TEST_MANAGER_COMPLETE_EVENT, this._results);
+            }
+        },
+        
+        /**
+         * Processes the results of a test page run, outputting log messages
+         * for failed tests.
+         * @return {Void}
+         * @private
+         * @static
+         */
+        _processResults : function (page, results) {
+    
+            var r = this._results;
+            
+            r.passed += results.passed;
+            r.failed += results.failed;
+            r.ignored += results.ignored;
+            r.total += results.total;
+            
+            if (results.failed){
+                r.failedPages.push(page);
+            } else {
+                r.passedPages.push(page);
+            }
+            
+            results.name = page;
+            results.type = "page";
+            
+            r[page] = results;
+        },
+        
+        /**
+         * Loads the next test page into the iframe.
+         * @return {Void}
+         * @static
+         * @private
+         */
+        _run : function () {
+        
+            //set the current page
+            this._curPage = this._pages.shift();
+    
+            this.fireEvent(this.TEST_PAGE_BEGIN_EVENT, this._curPage);
+            
+            //load the frame - destroy history in case there are other iframes that
+            //need testing
+            this._frame.location.replace(this._curPage);
+        
+        },
+            
+        //-------------------------------------------------------------------------
+        // Public Methods
+        //-------------------------------------------------------------------------
+        
+        /**
+         * Signals that a test page has been loaded. This should be called from
+         * within the test page itself to notify the TestManager that it is ready.
+         * @return {Void}
+         * @static
+         */
+        load : function () {
+            if (parent.YAHOO.tool.TestManager !== this){
+                parent.YAHOO.tool.TestManager.load();
+            } else {
+                
+                if (this._frame) {
+                    //assign event handling
+                    var TestRunner = this._frame.YAHOO.tool.TestRunner;
+    
+                    this._logger.setTestRunner(TestRunner);
+                    TestRunner.subscribe(TestRunner.COMPLETE_EVENT, this._handleTestRunnerComplete, this, true);
+                    
+                    //run it
+                    TestRunner.run();
+                }
+            }
+        },
+        
+        /**
+         * Sets the pages to be loaded.
+         * @param {String[]} pages An array of URLs to load.
+         * @return {Void}
+         * @static
+         */
+        setPages : function (pages) {
+            this._pages = pages;
+        },
+        
+        /**
+         * Begins the process of running the tests.
+         * @return {Void}
+         * @static
+         */
+        start : function () {
+    
+            if (!this._initialized) {
+    
+                /**
+                 * Fires when loading a test page
+                 * @event testpagebegin
+                 * @param curPage {string} the page being loaded
+                 * @static
+                 */
+                this.createEvent(this.TEST_PAGE_BEGIN_EVENT);
+    
+                /**
+                 * Fires when a test page is complete
+                 * @event testpagecomplete
+                 * @param obj {page: string, results: object} the name of the
+                 * page that was loaded, and the test suite results
+                 * @static
+                 */
+                this.createEvent(this.TEST_PAGE_COMPLETE_EVENT);
+    
+                /**
+                 * Fires when the test manager starts running all test pages
+                 * @event testmanagerbegin
+                 * @static
+                 */
+                this.createEvent(this.TEST_MANAGER_BEGIN_EVENT);
+    
+                /**
+                 * Fires when the test manager finishes running all test pages.  External
+                 * test runners should subscribe to this event in order to get the
+                 * aggregated test results.
+                 * @event testmanagercomplete
+                 * @param obj { pages_passed: int, pages_failed: int, tests_passed: int
+                 *              tests_failed: int, passed: string[], failed: string[],
+                 *              page_results: {} }
+                 * @static
+                 */
+                this.createEvent(this.TEST_MANAGER_COMPLETE_EVENT);
+    
+                //create iframe if not already available
+                if (!this._frame){
+                    var frame = document.createElement("iframe");
+                    frame.style.visibility = "hidden";
+                    frame.style.position = "absolute";
+                    document.body.appendChild(frame);
+                    this._frame = frame.contentWindow || frame.contentDocument.parentWindow;
+                }
+                
+                //create test logger if not already available
+                //if (!this._logger){
+                //    this._logger = new YAHOO.tool.TestLogger();
+                //}
+    
+                this._initialized = true;
+            }
+    
+    
+            // reset the results cache
+            this._results = {
+            
+                passed: 0,
+                failed: 0,
+                ignored: 0,
+                total: 0,
+                type: "report",
+                name: "YUI Test Results",
+                failedPages:[],
+                passedPages:[]
+                /*
+                // number of pages that pass
+                pages_passed: 0,
+                // number of pages that fail
+                pages_failed: 0,
+                // total number of tests passed
+                tests_passed: 0,
+                // total number of tests failed
+                tests_failed: 0,
+                // array of pages that passed
+                passed: [],
+                // array of pages that failed
+                failed: [],
+                // map of full results for each page
+                page_results: {}*/
+            };
+    
+            this.fireEvent(this.TEST_MANAGER_BEGIN_EVENT, null);
+            this._run();
+        
+        },
+    
+        /**
+         * Stops the execution of tests.
+         * @return {Void}
+         * @static
+         */
+        stop : function () {
+            clearTimeout(this._timeoutId);
+        }
+    
+    };
+    
+    Y.mix(Y.Test.Manager, Y.Event.Target.prototype);
+
+
+
+
+ +
+
+
+ Copyright © 2009 Yahoo! Inc. All rights reserved. +
+
+ + +