src/cm/media/js/lib/yui/yui_3.10.3/build/test/test.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('test', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * YUI Test Framework
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @main test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 * The root namespace for YUI Test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
//So we only ever have one YUITest object that's shared
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
if (YUI.YUITest) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    Y.Test = YUI.YUITest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
} else { //Ends after the YUITest definitions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    //Make this global for back compat
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    YUITest = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
        version: "3.10.3",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        guid: function(pre) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
            return Y.guid(pre);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
Y.namespace('Test');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
//Using internal YUI methods here
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
YUITest.Object = Y.Object;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
YUITest.Array = Y.Array;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
YUITest.Util = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    mix: Y.mix,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    JSON: Y.JSON
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
 * Simple custom event implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
 * @class EventTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
YUITest.EventTarget = function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
     * Event handlers for the various events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
     * @property _handlers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    this._handlers = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
YUITest.EventTarget.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    //restore prototype
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    constructor: YUITest.EventTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    // Event Handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * Adds a listener for a given event type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     * @param {String} type The type of event to add a listener for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * @param {Function} listener The function to call when the event occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * @method attach
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    attach: function(type, listener){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        if (typeof this._handlers[type] == "undefined"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
            this._handlers[type] = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        this._handlers[type].push(listener);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
     * Adds a listener for a given event type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
     * @param {String} type The type of event to add a listener for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
     * @param {Function} listener The function to call when the event occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
     * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
     * @method subscribe
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
     * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    subscribe: function(type, listener){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        this.attach.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
     * Fires an event based on the passed-in object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
     * @param {Object|String} event An object with at least a 'type' attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
     *      or a string indicating the event name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
     * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
     * @method fire
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
    fire: function(event){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
        if (typeof event == "string"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            event = { type: event };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        if (!event.target){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            event.target = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        if (!event.type){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            throw new Error("Event object missing 'type' property.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        if (this._handlers[event.type] instanceof Array){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            var handlers = this._handlers[event.type];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
            for (var i=0, len=handlers.length; i < len; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
                handlers[i].call(this, event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
        }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     * Removes a listener for a given event type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
     * @param {String} type The type of event to remove a listener from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
     * @param {Function} listener The function to remove from the event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
     * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
     * @method detach
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    detach: function(type, listener){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
        if (this._handlers[type] instanceof Array){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
            var handlers = this._handlers[type];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            for (var i=0, len=handlers.length; i < len; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                if (handlers[i] === listener){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
                    handlers.splice(i, 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
        }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
     * Removes a listener for a given event type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
     * @param {String} type The type of event to remove a listener from.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
     * @param {Function} listener The function to remove from the event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
     * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
     * @method unsubscribe
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
     * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    unsubscribe: function(type, listener){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
        this.detach.apply(this, arguments);          
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
 * A test suite that can contain a collection of TestCase and TestSuite objects.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
 * @param {String||Object} data The name of the test suite or an object containing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
 *      a name property as well as setUp and tearDown methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
 * @class TestSuite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
YUITest.TestSuite = function (data) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
     * The name of the test suite.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
    this.name = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
     * Array of test suites and test cases.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
     * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
     * @property items
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
    this.items = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
    //initialize the properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    if (typeof data == "string"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        this.name = data;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
    } else if (data instanceof Object){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        for (var prop in data){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
            if (data.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
                this[prop] = data[prop];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    //double-check name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    if (this.name === "" || !this.name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        this.name = YUITest.guid("testSuite_");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
YUITest.TestSuite.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    //restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
    constructor: YUITest.TestSuite,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
     * Adds a test suite or test case to the test suite.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
     * @param {Test.TestSuite||YUITest.TestCase} testObject The test suite or test case to add.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
     * @method add
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
    add : function (testObject) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        if (testObject instanceof YUITest.TestSuite || testObject instanceof YUITest.TestCase) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
            this.items.push(testObject);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
    // Stub Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
     * Function to run before each test is executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
     * @method setUp
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    setUp : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
     * Function to run after each test is executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
     * @method tearDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
    tearDown: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
 * Test case containing various tests to run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
 * @param template An object containing any number of test methods, other methods,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
 *                 an optional name, and anything else the test case needs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
 * @class TestCase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
YUITest.TestCase = function (template) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
     * Special rules for the test case. Possible subobjects
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
     * are fail, for tests that should fail, and error, for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
     * tests that should throw an error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
    this._should = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    //copy over all properties from the template to this object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
    for (var prop in template) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
        this[prop] = template[prop];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
    }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
    //check for a valid name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
    if (typeof this.name != "string") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        this.name = YUITest.guid("testCase_");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
YUITest.TestCase.prototype = {  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    //restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    constructor: YUITest.TestCase,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
     * Method to call from an async init method to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
     * restart the test case. When called, returns a function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
     * that should be called when tests are ready to continue.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
     * @method callback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
     * @return {Function} The function to call as a callback.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    callback: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        return YUITest.TestRunner.callback.apply(YUITest.TestRunner,arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
     * Resumes a paused test and runs the given function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
     * @param {Function} segment (Optional) The function to run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
     *      If omitted, the test automatically passes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
     * @method resume
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    resume : function (segment) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
        YUITest.TestRunner.resume(segment);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
     * Causes the test case to wait a specified amount of time and then
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
     * continue executing the given code.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
     * @param {Function} segment (Optional) The function to run after the delay.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
     *      If omitted, the TestRunner will wait until resume() is called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
     * @param {int} delay (Optional) The number of milliseconds to wait before running
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
     *      the function. If omitted, defaults to zero.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
     * @method wait
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
    wait : function (segment, delay){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
        var actualDelay = (typeof segment == "number" ? segment : delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        actualDelay = (typeof actualDelay == "number" ? actualDelay : 10000);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
		if (typeof segment == "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
            throw new YUITest.Wait(segment, actualDelay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            throw new YUITest.Wait(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
                YUITest.Assert.fail("Timeout: wait() called but resume() never called.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
            }, actualDelay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
    // Assertion Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
     * Asserts that a given condition is true. If not, then a YUITest.AssertionError object is thrown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
     * and the test fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
     * @method assert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
     * @param {Boolean} condition The condition to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
     * @param {String} message The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
    assert : function (condition, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        if (!condition){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
            throw new YUITest.AssertionError(YUITest.Assert._formatMessage(message, "Assertion failed."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
     * Forces an assertion error to occur. Shortcut for YUITest.Assert.fail().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
     * @method fail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
     * @param {String} message (Optional) The message to display with the failure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    fail: function (message) {    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
        YUITest.Assert.fail(message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    // Stub Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
     * Function to run once before tests start to run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
     * This executes before the first call to setUp().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
     * @method init
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
    init: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
        //noop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
     * Function to run once after tests finish running.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * This executes after the last call to tearDown().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     * @method destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
    destroy: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        //noop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
     * Function to run before each test is executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
     * @method setUp
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
    setUp : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        //noop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
     * Function to run after each test is executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
     * @method tearDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    tearDown: function () {    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
        //noop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
 * An object object containing test result formatting methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
 * @class TestFormat
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
YUITest.TestFormat = function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
    /* (intentionally not documented)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
     * Basic XML escaping method. Replaces quotes, less-than, greater-than,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
     * apostrophe, and ampersand characters with their corresponding entities.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
     * @param {String} text The text to encode.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
     * @return {String} The XML-escaped text.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
    function xmlEscape(text){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
        return text.replace(/[<>"'&]/g, function(value){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
            switch(value){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                case "<":   return "&lt;";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                case ">":   return "&gt;";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                case "\"":  return "&quot;";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                case "'":   return "&apos;";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                case "&":   return "&amp;";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
    return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
         * Returns test results formatted as a JSON string. Requires JSON utility.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
         * @param {Object} result The results object created by TestRunner.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
         * @return {String} A JSON-formatted string of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
         * @method JSON
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
        JSON: function(results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            return YUITest.Util.JSON.stringify(results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
         * Returns test results formatted as an XML string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
         * @param {Object} result The results object created by TestRunner.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
         * @return {String} An XML-formatted string of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
         * @method XML
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        XML: function(results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
            function serializeToXML(results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
                var xml = "<" + results.type + " name=\"" + xmlEscape(results.name) + "\"";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
                if (typeof(results.duration)=="number"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
                    xml += " duration=\"" + results.duration + "\"";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
                if (results.type == "test"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
                    xml += " result=\"" + results.result + "\" message=\"" + xmlEscape(results.message) + "\">";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
                    xml += " passed=\"" + results.passed + "\" failed=\"" + results.failed + "\" ignored=\"" + results.ignored + "\" total=\"" + results.total + "\">";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
                    for (var prop in results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
                        if (results.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                            if (results[prop] && typeof results[prop] == "object" && !(results[prop] instanceof Array)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
                                xml += serializeToXML(results[prop]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
                    }       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
                xml += "</" + results.type + ">";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
                return xml;    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
            return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + serializeToXML(results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
         * Returns test results formatted in JUnit XML format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
         * @param {Object} result The results object created by TestRunner.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
         * @return {String} An XML-formatted string of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
         * @method JUnitXML
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
        JUnitXML: function(results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
            function serializeToJUnitXML(results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                var xml = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
                switch (results.type){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
                    //equivalent to testcase in JUnit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                    case "test":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                        if (results.result != "ignore"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                            xml = "<testcase name=\"" + xmlEscape(results.name) + "\" time=\"" + (results.duration/1000) + "\">";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                            if (results.result == "fail"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                                xml += "<failure message=\"" + xmlEscape(results.message) + "\"><![CDATA[" + results.message + "]]></failure>";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                            xml+= "</testcase>";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
                    //equivalent to testsuite in JUnit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                    case "testcase":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                        xml = "<testsuite name=\"" + xmlEscape(results.name) + "\" tests=\"" + results.total + "\" failures=\"" + results.failed + "\" time=\"" + (results.duration/1000) + "\">";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                        for (var prop in results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
                            if (results.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
                                if (results[prop] && typeof results[prop] == "object" && !(results[prop] instanceof Array)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
                                    xml += serializeToJUnitXML(results[prop]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
                        }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
                        xml += "</testsuite>";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
                    //no JUnit equivalent, don't output anything
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                    case "testsuite":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
                        for (var prop in results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
                            if (results.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
                                if (results[prop] && typeof results[prop] == "object" && !(results[prop] instanceof Array)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
                                    xml += serializeToJUnitXML(results[prop]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
                        }                                                     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
                    //top-level, equivalent to testsuites in JUnit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
                    case "report":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
                        xml = "<testsuites>";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                        for (var prop in results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
                            if (results.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
                                if (results[prop] && typeof results[prop] == "object" && !(results[prop] instanceof Array)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
                                    xml += serializeToJUnitXML(results[prop]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
                        }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                        xml += "</testsuites>";            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                    //no default
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                return xml;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
            return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + serializeToJUnitXML(results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
         * Returns test results formatted in TAP format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
         * For more information, see <a href="http://testanything.org/">Test Anything Protocol</a>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
         * @param {Object} result The results object created by TestRunner.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
         * @return {String} A TAP-formatted string of results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
         * @method TAP
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
        TAP: function(results) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
            var currentTestNum = 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
            function serializeToTAP(results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
                var text = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
                switch (results.type){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
                    case "test":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
                        if (results.result != "ignore"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
                            text = "ok " + (currentTestNum++) + " - " + results.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
                            if (results.result == "fail"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
                                text = "not " + text + " - " + results.message;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
                            text += "\n";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
                            text = "#Ignored test " + results.name + "\n";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
                    case "testcase":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
                        text = "#Begin testcase " + results.name + "(" + results.failed + " failed of " + results.total + ")\n";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
                                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
                        for (var prop in results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
                            if (results.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
                                if (results[prop] && typeof results[prop] == "object" && !(results[prop] instanceof Array)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
                                    text += serializeToTAP(results[prop]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
                        }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
                        text += "#End testcase " + results.name + "\n";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
                    case "testsuite":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
                        text = "#Begin testsuite " + results.name + "(" + results.failed + " failed of " + results.total + ")\n";                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
                        for (var prop in results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
                            if (results.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
                                if (results[prop] && typeof results[prop] == "object" && !(results[prop] instanceof Array)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
                                    text += serializeToTAP(results[prop]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
                        }                                                      
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
                        text += "#End testsuite " + results.name + "\n";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
                    case "report":
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
                        for (var prop in results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
                            if (results.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
                                if (results[prop] && typeof results[prop] == "object" && !(results[prop] instanceof Array)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
                                    text += serializeToTAP(results[prop]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
                        }              
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
                    //no default
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
                return text;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
            return "1.." + results.total + "\n" + serializeToTAP(results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
}();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
     * An object capable of sending test results to a server.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
     * @param {String} url The URL to submit the results to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
     * @param {Function} format (Optiona) A function that outputs the results in a specific format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
     *      Default is YUITest.TestFormat.XML.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
     * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
     * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
     * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
 * @class Reporter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
    YUITest.Reporter = function(url, format) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
         * The URL to submit the data to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
         * @property url
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        this.url = url;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
         * The formatting function to call when submitting the data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
         * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
         * @property format
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
        this.format = format || YUITest.TestFormat.XML;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
         * Extra fields to submit with the request.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
         * @property _fields
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
        this._fields = new Object();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
         * The form element used to submit the results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
         * @type HTMLFormElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
         * @property _form
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
        this._form = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
         * Iframe used as a target for form submission.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
         * @type HTMLIFrameElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
         * @property _iframe
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
        this._iframe = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
    YUITest.Reporter.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
        //restore missing constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
        constructor: YUITest.Reporter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
         * Adds a field to the form that submits the results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
         * @param {String} name The name of the field.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
         * @param {Variant} value The value of the field.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
         * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
         * @method addField
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
        addField : function (name, value){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
            this._fields[name] = value;    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
         * Removes all previous defined fields.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
         * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
         * @method clearFields
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
        clearFields : function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
            this._fields = new Object();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
         * Cleans up the memory associated with the TestReporter, removing DOM elements
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
         * that were created.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
         * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
         * @method destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
        destroy : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
            if (this._form){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
                this._form.parentNode.removeChild(this._form);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
                this._form = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
            }        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
            if (this._iframe){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
                this._iframe.parentNode.removeChild(this._iframe);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
                this._iframe = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
            this._fields = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
         * Sends the report to the server.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
         * @param {Object} results The results object created by TestRunner.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
         * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
         * @method report
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
        report : function(results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
            //if the form hasn't been created yet, create it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
            if (!this._form){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
                this._form = document.createElement("form");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
                this._form.method = "post";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
                this._form.style.visibility = "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
                this._form.style.position = "absolute";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
                this._form.style.top = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
                document.body.appendChild(this._form);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
                //IE won't let you assign a name using the DOM, must do it the hacky way
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
                try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
                    this._iframe = document.createElement("<iframe name=\"yuiTestTarget\" />");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
                } catch (ex){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
                    this._iframe = document.createElement("iframe");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
                    this._iframe.name = "yuiTestTarget";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
                this._iframe.src = "javascript:false";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
                this._iframe.style.visibility = "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
                this._iframe.style.position = "absolute";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
                this._iframe.style.top = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
                document.body.appendChild(this._iframe);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
                this._form.target = "yuiTestTarget";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
            //set the form's action
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
            this._form.action = this.url;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
            //remove any existing fields
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
            while(this._form.hasChildNodes()){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
                this._form.removeChild(this._form.lastChild);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
            //create default fields
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
            this._fields.results = this.format(results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
            this._fields.useragent = navigator.userAgent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
            this._fields.timestamp = (new Date()).toLocaleString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
            //add fields to the form
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
            for (var prop in this._fields){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
                var value = this._fields[prop];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
                if (this._fields.hasOwnProperty(prop) && (typeof value != "function")){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
                    var input = document.createElement("input");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
                    input.type = "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
                    input.name = prop;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
                    input.value = value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
                    this._form.appendChild(input);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
            //remove default fields
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
            delete this._fields.results;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
            delete this._fields.useragent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
            delete this._fields.timestamp;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
            if (arguments[1] !== false){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
                this._form.submit();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
     * Runs test suites and test cases, providing events to allowing for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
     * interpretation of test results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
     * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
     * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
 * @class TestRunner
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
    YUITest.TestRunner = function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
        /*(intentionally not documented)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
         * Determines if any of the array of test groups appears
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
         * in the given TestRunner filter.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
         * @param {Array} testGroups The array of test groups to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
         *      search for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
         * @param {String} filter The TestRunner groups filter.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
        function inGroups(testGroups, filter){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
            if (!filter.length){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
                return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
            } else {                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
                if (testGroups){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
                    for (var i=0, len=testGroups.length; i < len; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
                        if (filter.indexOf("," + testGroups[i] + ",") > -1){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
                            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
         * A node in the test tree structure. May represent a TestSuite, TestCase, or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
         * test function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
         * @param {Variant} testObject A TestSuite, TestCase, or the name of a test function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
         * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
 * @class TestNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
         * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
         * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
        function TestNode(testObject){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
             * The TestSuite, TestCase, or test function represented by this node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
             * @type Variant
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
             * @property testObject
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
            this.testObject = testObject;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
             * Pointer to this node's first child.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
             * @type TestNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
             * @property firstChild
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
            this.firstChild = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
             * Pointer to this node's last child.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
             * @type TestNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
             * @property lastChild
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
            this.lastChild = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
             * Pointer to this node's parent.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
             * @type TestNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
             * @property parent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
            this.parent = null; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
             * Pointer to this node's next sibling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
             * @type TestNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
             * @property next
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
            this.next = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
             * Test results for this test object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
             * @type object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
             * @property results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
             */                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
            this.results = new YUITest.Results();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
            //initialize results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
            if (testObject instanceof YUITest.TestSuite){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
                this.results.type = "testsuite";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
                this.results.name = testObject.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
            } else if (testObject instanceof YUITest.TestCase){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
                this.results.type = "testcase";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
                this.results.name = testObject.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
           
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
        TestNode.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
             * Appends a new test object (TestSuite, TestCase, or test function name) as a child
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
             * of this node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
             * @param {Variant} testObject A TestSuite, TestCase, or the name of a test function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
             * @method appendChild
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
            appendChild : function (testObject){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
                var node = new TestNode(testObject);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
                if (this.firstChild === null){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
                    this.firstChild = this.lastChild = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
                    this.lastChild.next = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
                    this.lastChild = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
                node.parent = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
                return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
            }       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
         * Runs test suites and test cases, providing events to allowing for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
         * interpretation of test results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
         * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
         * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
 * @class Runner
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
         * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
        function TestRunner(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
            //inherit from EventTarget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
            YUITest.EventTarget.call(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
             * Suite on which to attach all TestSuites and TestCases to be run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
             * @type YUITest.TestSuite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
             * @property masterSuite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
            this.masterSuite = new YUITest.TestSuite(YUITest.guid('testSuite_'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
             * Pointer to the current node in the test tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
             * @type TestNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
             * @property _cur
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
            this._cur = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
             * Pointer to the root node in the test tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
             * @type TestNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
             * @property _root
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
            this._root = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
             * Indicates if the TestRunner will log events or not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
             * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
             * @property _log
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
            this._log = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
             * Indicates if the TestRunner is waiting as a result of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
             * wait() being called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
             * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
             * @property _waiting
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
            this._waiting = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
             * Indicates if the TestRunner is currently running tests.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
             * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
             * @property _running
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
            this._running = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
             * Holds copy of the results object generated when all tests are
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
             * complete.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
             * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
             * @property _lastResults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
            this._lastResults = null;       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
             * Data object that is passed around from method to method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
             * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
             * @property _data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
            this._context = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
             * The list of test groups to run. The list is represented
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
             * by a comma delimited string with commas at the start and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
             * end.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
             * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
             * @property _groups
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
            this._groups = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
        TestRunner.prototype = YUITest.Util.mix(new YUITest.EventTarget(), {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
            * If true, YUITest will not fire an error for tests with no Asserts.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
            * @property _ignoreEmpty
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
            * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
            * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
            * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
            _ignoreEmpty: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
            //restore prototype
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
            constructor: YUITest.TestRunner,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
            // Constants
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
             
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
             * Fires when a test case is opened but before the first 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
             * test is executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
             * @event testcasebegin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
             */         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
            TEST_CASE_BEGIN_EVENT : "testcasebegin",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
             * Fires when all tests in a test case have been executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
             * @event testcasecomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
            TEST_CASE_COMPLETE_EVENT : "testcasecomplete",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
             * Fires when a test suite is opened but before the first 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
             * test is executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
             * @event testsuitebegin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
            TEST_SUITE_BEGIN_EVENT : "testsuitebegin",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
             * Fires when all test cases in a test suite have been
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
             * completed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
             * @event testsuitecomplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
            TEST_SUITE_COMPLETE_EVENT : "testsuitecomplete",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
             * Fires when a test has passed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
             * @event pass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
            TEST_PASS_EVENT : "pass",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
             * Fires when a test has failed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
             * @event fail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
            TEST_FAIL_EVENT : "fail",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
             * Fires when a non-test method has an error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
             * @event error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
            ERROR_EVENT : "error",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
             * Fires when a test has been ignored.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
             * @event ignore
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
            TEST_IGNORE_EVENT : "ignore",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
             * Fires when all test suites and test cases have been completed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
             * @event complete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
            COMPLETE_EVENT : "complete",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
             * Fires when the run() method is called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
             * @event begin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
             */        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
            BEGIN_EVENT : "begin",                           
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
            // Test Tree-Related Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
             * Adds a test case to the test tree as a child of the specified node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
             * @param {TestNode} parentNode The node to add the test case to as a child.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
             * @param {Test.TestCase} testCase The test case to add.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
             * @method _addTestCaseToTestTree
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
           _addTestCaseToTestTree : function (parentNode, testCase){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
                //add the test suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
                var node = parentNode.appendChild(testCase),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
                    prop,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
                    testName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
                //iterate over the items in the test case
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
                for (prop in testCase){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
                    if ((prop.indexOf("test") === 0 || prop.indexOf(" ") > -1) && typeof testCase[prop] == "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
                        node.appendChild(prop);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
             
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
             * Adds a test suite to the test tree as a child of the specified node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
             * @param {TestNode} parentNode The node to add the test suite to as a child.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
             * @param {Test.TestSuite} testSuite The test suite to add.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
             * @method _addTestSuiteToTestTree
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
            _addTestSuiteToTestTree : function (parentNode, testSuite) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
                //add the test suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
                var node = parentNode.appendChild(testSuite);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
                //iterate over the items in the master suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
                for (var i=0; i < testSuite.items.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
                    if (testSuite.items[i] instanceof YUITest.TestSuite) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
                        this._addTestSuiteToTestTree(node, testSuite.items[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
                    } else if (testSuite.items[i] instanceof YUITest.TestCase) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
                        this._addTestCaseToTestTree(node, testSuite.items[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
                    }                   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
                }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
             * Builds the test tree based on items in the master suite. The tree is a hierarchical
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
             * representation of the test suites, test cases, and test functions. The resulting tree
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
             * is stored in _root and the pointer _cur is set to the root initially.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
             * @method _buildTestTree
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
            _buildTestTree : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
                this._root = new TestNode(this.masterSuite);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
                //this._cur = this._root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
                //iterate over the items in the master suite
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
                for (var i=0; i < this.masterSuite.items.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
                    if (this.masterSuite.items[i] instanceof YUITest.TestSuite) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
                        this._addTestSuiteToTestTree(this._root, this.masterSuite.items[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
                    } else if (this.masterSuite.items[i] instanceof YUITest.TestCase) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
                        this._addTestCaseToTestTree(this._root, this.masterSuite.items[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
                    }                   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
                }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
            }, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
            // Private Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
             * Handles the completion of a test object's tests. Tallies test results 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
             * from one level up to the next.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
             * @param {TestNode} node The TestNode representing the test object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
             * @method _handleTestObjectComplete
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
            _handleTestObjectComplete : function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
                var parentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                if (node && (typeof node.testObject == "object")) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
                    parentNode = node.parent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
                    if (parentNode){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
                        parentNode.results.include(node.results); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
                        parentNode.results[node.testObject.name] = node.results;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
                    if (node.testObject instanceof YUITest.TestSuite){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
                        this._execNonTestMethod(node, "tearDown", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
                        node.results.duration = (new Date()) - node._start;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
                        this.fire({ type: this.TEST_SUITE_COMPLETE_EVENT, testSuite: node.testObject, results: node.results});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
                    } else if (node.testObject instanceof YUITest.TestCase){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
                        this._execNonTestMethod(node, "destroy", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
                        node.results.duration = (new Date()) - node._start;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
                        this.fire({ type: this.TEST_CASE_COMPLETE_EVENT, testCase: node.testObject, results: node.results});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
                    }      
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
                } 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
            },                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
            // Navigation Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
             * Retrieves the next node in the test tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
             * @return {TestNode} The next node in the test tree or null if the end is reached.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
             * @method _next
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
            _next : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
                if (this._cur === null){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
                    this._cur = this._root;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
                } else if (this._cur.firstChild) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
                    this._cur = this._cur.firstChild;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
                } else if (this._cur.next) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
                    this._cur = this._cur.next;            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
                    while (this._cur && !this._cur.next && this._cur !== this._root){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
                        this._handleTestObjectComplete(this._cur);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
                        this._cur = this._cur.parent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
                    this._handleTestObjectComplete(this._cur);               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
                    if (this._cur == this._root){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
                        this._cur.results.type = "report";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
                        this._cur.results.timestamp = (new Date()).toLocaleString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
                        this._cur.results.duration = (new Date()) - this._cur._start;   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
                        this._lastResults = this._cur.results;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
                        this._running = false;                         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
                        this.fire({ type: this.COMPLETE_EVENT, results: this._lastResults});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
                        this._cur = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
                    } else if (this._cur) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
                        this._cur = this._cur.next;                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
                return this._cur;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
             * Executes a non-test method (init, setUp, tearDown, destroy)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
             * and traps an errors. If an error occurs, an error event is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
             * fired.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
             * @param {Object} node The test node in the testing tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
             * @param {String} methodName The name of the method to execute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
             * @param {Boolean} allowAsync Determines if the method can be called asynchronously.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
             * @return {Boolean} True if an async method was called, false if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
             * @method _execNonTestMethod
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
            _execNonTestMethod: function(node, methodName, allowAsync){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
                var testObject = node.testObject,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
                    event = { type: this.ERROR_EVENT };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
                try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
                    if (allowAsync && testObject["async:" + methodName]){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
                        testObject["async:" + methodName](this._context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
                        return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
                        testObject[methodName](this._context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
                } catch (ex){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
                    node.results.errors++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
                    event.error = ex;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
                    event.methodName = methodName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
                    if (testObject instanceof YUITest.TestCase){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
                        event.testCase = testObject;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
                        event.testSuite = testSuite;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
                    this.fire(event);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
                }  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
                return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
             * Runs a test case or test suite, returning the results.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
             * @param {Test.TestCase|YUITest.TestSuite} testObject The test case or test suite to run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
             * @return {Object} Results of the execution with properties passed, failed, and total.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
             * @method _run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
            _run : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
                //flag to indicate if the TestRunner should wait before continuing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
                var shouldWait = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
                //get the next test node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
                var node = this._next();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
                if (node !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
                    //set flag to say the testrunner is running
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
                    this._running = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
                    //eliminate last results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
                    this._lastResult = null;                  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
                    var testObject = node.testObject;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
                    //figure out what to do
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
                    if (typeof testObject == "object" && testObject !== null){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
                        if (testObject instanceof YUITest.TestSuite){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
                            this.fire({ type: this.TEST_SUITE_BEGIN_EVENT, testSuite: testObject });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
                            node._start = new Date();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
                            this._execNonTestMethod(node, "setUp" ,false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
                        } else if (testObject instanceof YUITest.TestCase){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
                            this.fire({ type: this.TEST_CASE_BEGIN_EVENT, testCase: testObject });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
                            node._start = new Date();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
                            //regular or async init
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
                            /*try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
                                if (testObject["async:init"]){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
                                    testObject["async:init"](this._context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
                                    return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
                                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
                                    testObject.init(this._context);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
                            } catch (ex){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
                                node.results.errors++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
                                this.fire({ type: this.ERROR_EVENT, error: ex, testCase: testObject, methodName: "init" });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
                            }*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
                            if(this._execNonTestMethod(node, "init", true)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
                                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
                        //some environments don't support setTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
                        if (typeof setTimeout != "undefined"){                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
                            setTimeout(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
                                YUITest.TestRunner._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
                            }, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
                            this._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
                        this._runTest(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
            _resumeTest : function (segment) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
                //get relevant information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
                var node = this._cur;                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
                //we know there's no more waiting now
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
                this._waiting = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
                //if there's no node, it probably means a wait() was called after resume()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
                if (!node){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
                    //TODO: Handle in some way?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
                    //console.log("wait() called after resume()");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
                    //this.fire("error", { testCase: "(unknown)", test: "(unknown)", error: new Error("wait() called after resume()")} );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
                    return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
                var testName = node.testObject;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
                var testCase = node.parent.testObject;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
                //cancel other waits if available
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
                if (testCase.__yui_wait){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
                    clearTimeout(testCase.__yui_wait);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
                    delete testCase.__yui_wait;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
                //get the "should" test cases
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
                var shouldFail = testName.indexOf("fail:") === 0 ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
                                    (testCase._should.fail || {})[testName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
                var shouldError = (testCase._should.error || {})[testName];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
                //variable to hold whether or not the test failed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
                var failed = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
                var error = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
                //try the test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
                try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
                    //run the test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
                    segment.call(testCase, this._context);                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
                    //if the test hasn't already failed and doesn't have any asserts...
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
                    if(YUITest.Assert._getCount() == 0 && !this._ignoreEmpty){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
                        throw new YUITest.AssertionError("Test has no asserts.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
                    }                                                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
                    //if it should fail, and it got here, then it's a fail because it didn't
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
                     else if (shouldFail){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
                        error = new YUITest.ShouldFail();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
                        failed = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
                    } else if (shouldError){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
                        error = new YUITest.ShouldError();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
                        failed = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
                               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
                } catch (thrown){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
                    //cancel any pending waits, the test already failed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
                    if (testCase.__yui_wait){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
                        clearTimeout(testCase.__yui_wait);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
                        delete testCase.__yui_wait;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
                    }                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
                    //figure out what type of error it was
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
                    if (thrown instanceof YUITest.AssertionError) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
                        if (!shouldFail){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
                            error = thrown;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
                            failed = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
                    } else if (thrown instanceof YUITest.Wait){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
                        if (typeof thrown.segment == "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
                            if (typeof thrown.delay == "number"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
                                //some environments don't support setTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
                                if (typeof setTimeout != "undefined"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
                                    testCase.__yui_wait = setTimeout(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
                                        YUITest.TestRunner._resumeTest(thrown.segment);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
                                    }, thrown.delay);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
                                    this._waiting = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
                                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
                                    throw new Error("Asynchronous tests not supported in this environment.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
                        return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
                        //first check to see if it should error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
                        if (!shouldError) {                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
                            error = new YUITest.UnexpectedError(thrown);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
                            failed = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
                            //check to see what type of data we have
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
                            if (typeof shouldError == "string"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
                                //if it's a string, check the error message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
                                if (thrown.message != shouldError){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
                                    error = new YUITest.UnexpectedError(thrown);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
                                    failed = true;                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
                            } else if (typeof shouldError == "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
                                //if it's a function, see if the error is an instance of it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
                                if (!(thrown instanceof shouldError)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
                                    error = new YUITest.UnexpectedError(thrown);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
                                    failed = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
                            } else if (typeof shouldError == "object" && shouldError !== null){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
                                //if it's an object, check the instance and message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
                                if (!(thrown instanceof shouldError.constructor) || 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
                                        thrown.message != shouldError.message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
                                    error = new YUITest.UnexpectedError(thrown);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
                                    failed = true;                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
                            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
                //fire appropriate event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
                if (failed) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
                    this.fire({ type: this.TEST_FAIL_EVENT, testCase: testCase, testName: testName, error: error });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
                    this.fire({ type: this.TEST_PASS_EVENT, testCase: testCase, testName: testName });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
                //run the tear down
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
                this._execNonTestMethod(node.parent, "tearDown", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
                //reset the assert count
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
                YUITest.Assert._reset();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
                //calculate duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
                var duration = (new Date()) - node._start;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
                //update results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
                node.parent.results[testName] = { 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
                    result: failed ? "fail" : "pass",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
                    message: error ? error.getMessage() : "Test passed",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
                    type: "test",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
                    name: testName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
                    duration: duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
                if (failed){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
                    node.parent.results.failed++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
                    node.parent.results.passed++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
                node.parent.results.total++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
                //set timeout not supported in all environments
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
                if (typeof setTimeout != "undefined"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
                    setTimeout(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
                        YUITest.TestRunner._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
                    }, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
                    this._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
             * Handles an error as if it occurred within the currently executing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
             * test. This is for mock methods that may be called asynchronously
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
             * and therefore out of the scope of the TestRunner. Previously, this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
             * error would bubble up to the browser. Now, this method is used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
             * to tell TestRunner about the error. This should never be called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
             * by anyplace other than the Mock object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
             * @param {Error} error The error object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
             * @method _handleError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
            _handleError: function(error){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
                if (this._waiting){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
                    this._resumeTest(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
                        throw error;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
                    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1565
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1566
                    throw error;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1567
                }           
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1568
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1569
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1570
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1571
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1572
             * Runs a single test based on the data provided in the node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1573
             * @method _runTest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1574
             * @param {TestNode} node The TestNode representing the test to run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1575
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1576
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1577
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1578
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1579
            _runTest : function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1580
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1581
                //get relevant information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1582
                var testName = node.testObject,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1583
                    testCase = node.parent.testObject,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1584
                    test = testCase[testName],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1585
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1586
                    //get the "should" test cases
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1587
                    shouldIgnore = testName.indexOf("ignore:") === 0 ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1588
                                    !inGroups(testCase.groups, this._groups) ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1589
                                    (testCase._should.ignore || {})[testName];   //deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1590
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1591
                //figure out if the test should be ignored or not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1592
                if (shouldIgnore){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1593
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1594
                    //update results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1595
                    node.parent.results[testName] = { 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1596
                        result: "ignore",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1597
                        message: "Test ignored",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1598
                        type: "test",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1599
                        name: testName.indexOf("ignore:") === 0 ? testName.substring(7) : testName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1600
                    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1601
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1602
                    node.parent.results.ignored++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1603
                    node.parent.results.total++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1604
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1605
                    this.fire({ type: this.TEST_IGNORE_EVENT,  testCase: testCase, testName: testName });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1606
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1607
                    //some environments don't support setTimeout
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1608
                    if (typeof setTimeout != "undefined"){                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1609
                        setTimeout(function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1610
                            YUITest.TestRunner._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1611
                        }, 0);              
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1612
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1613
                        this._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1614
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1615
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1616
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1617
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1618
                    //mark the start time
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1619
                    node._start = new Date();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1620
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1621
                    //run the setup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1622
                    this._execNonTestMethod(node.parent, "setUp", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1623
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1624
                    //now call the body of the test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1625
                    this._resumeTest(test);                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1626
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1627
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1628
            },            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1629
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1630
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1631
            // Misc Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1632
            //-------------------------------------------------------------------------   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1633
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1634
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1635
             * Retrieves the name of the current result set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1636
             * @return {String} The name of the result set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1637
             * @method getName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1638
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1639
            getName: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1640
                return this.masterSuite.name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1641
            },         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1642
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1643
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1644
             * The name assigned to the master suite of the TestRunner. This is the name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1645
             * that is output as the root's name when results are retrieved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1646
             * @param {String} name The name of the result set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1647
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1648
             * @method setName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1649
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1650
            setName: function(name){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1651
                this.masterSuite.name = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1652
            },            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1653
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1654
            //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1655
            // Public Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1656
            //-------------------------------------------------------------------------   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1657
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1658
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1659
             * Adds a test suite or test case to the list of test objects to run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1660
             * @param testObject Either a TestCase or a TestSuite that should be run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1661
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1662
             * @method add
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1663
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1664
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1665
            add : function (testObject) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1666
                this.masterSuite.add(testObject);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1667
                return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1668
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1669
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1670
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1671
             * Removes all test objects from the runner.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1672
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1673
             * @method clear
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1674
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1675
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1676
            clear : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1677
                this.masterSuite = new YUITest.TestSuite(YUITest.guid('testSuite_'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1678
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1679
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1680
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1681
             * Indicates if the TestRunner is waiting for a test to resume
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1682
             * @return {Boolean} True if the TestRunner is waiting, false if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1683
             * @method isWaiting
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1684
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1685
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1686
            isWaiting: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1687
                return this._waiting;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1688
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1689
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1690
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1691
             * Indicates that the TestRunner is busy running tests and therefore can't
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1692
             * be stopped and results cannot be gathered.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1693
             * @return {Boolean} True if the TestRunner is running, false if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1694
             * @method isRunning
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1695
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1696
            isRunning: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1697
                return this._running;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1698
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1699
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1700
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1701
             * Returns the last complete results set from the TestRunner. Null is returned
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1702
             * if the TestRunner is running or no tests have been run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1703
             * @param {Function} format (Optional) A test format to return the results in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1704
             * @return {Object|String} Either the results object or, if a test format is 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1705
             *      passed as the argument, a string representing the results in a specific
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1706
             *      format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1707
             * @method getResults
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1708
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1709
            getResults: function(format){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1710
                if (!this._running && this._lastResults){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1711
                    if (typeof format == "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1712
                        return format(this._lastResults);                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1713
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1714
                        return this._lastResults;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1715
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1716
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1717
                    return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1718
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1719
            },            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1720
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1721
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1722
             * Returns the coverage report for the files that have been executed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1723
             * This returns only coverage information for files that have been
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1724
             * instrumented using YUI Test Coverage and only those that were run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1725
             * in the same pass.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1726
             * @param {Function} format (Optional) A coverage format to return results in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1727
             * @return {Object|String} Either the coverage object or, if a coverage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1728
             *      format is specified, a string representing the results in that format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1729
             * @method getCoverage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1730
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1731
            getCoverage: function(format) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1732
                var covObject = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1733
                if (typeof _yuitest_coverage === "object") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1734
                    covObject = _yuitest_coverage;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1735
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1736
                if (typeof __coverage__ === "object") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1737
                    covObject = __coverage__;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1738
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1739
                if (!this._running && typeof covObject == "object"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1740
                    if (typeof format == "function") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1741
                        return format(covObject);                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1742
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1743
                        return covObject;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1744
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1745
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1746
                    return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1747
                }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1748
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1749
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1750
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1751
             * Used to continue processing when a method marked with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1752
             * "async:" is executed. This should not be used in test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1753
             * methods, only in init(). Each argument is a string, and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1754
             * when the returned function is executed, the arguments
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1755
             * are assigned to the context data object using the string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1756
             * as the key name (value is the argument itself).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1757
             * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1758
             * @return {Function} A callback function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1759
             * @method callback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1760
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1761
            callback: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1762
                var names   = arguments,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1763
                    data    = this._context,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1764
                    that    = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1765
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1766
                return function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1767
                    for (var i=0; i < arguments.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1768
                        data[names[i]] = arguments[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1769
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1770
                    that._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1771
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1772
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1773
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1774
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1775
             * Resumes the TestRunner after wait() was called.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1776
             * @param {Function} segment The function to run as the rest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1777
             *      of the haulted test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1778
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1779
             * @method resume
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1780
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1781
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1782
            resume : function (segment) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1783
                if (this._waiting){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1784
                    this._resumeTest(segment || function(){});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1785
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1786
                    throw new Error("resume() called without wait().");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1787
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1788
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1789
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1790
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1791
             * Runs the test suite.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1792
             * @param {Object|Boolean} options (Optional) Options for the runner:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1793
             *      <code>oldMode</code> indicates the TestRunner should work in the YUI <= 2.8 way
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1794
             *      of internally managing test suites. <code>groups</code> is an array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1795
             *      of test groups indicating which tests to run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1796
             * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1797
             * @method run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1798
             * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1799
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1800
            run : function (options) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1801
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1802
                options = options || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1803
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1804
                //pointer to runner to avoid scope issues 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1805
                var runner  = YUITest.TestRunner,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1806
                    oldMode = options.oldMode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1807
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1808
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1809
                //if there's only one suite on the masterSuite, move it up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1810
                if (!oldMode && this.masterSuite.items.length == 1 && this.masterSuite.items[0] instanceof YUITest.TestSuite){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1811
                    this.masterSuite = this.masterSuite.items[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1812
                }                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1813
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1814
                //determine if there are any groups to filter on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1815
                runner._groups = (options.groups instanceof Array) ? "," + options.groups.join(",") + "," : "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1816
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1817
                //initialize the runner
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1818
                runner._buildTestTree();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1819
                runner._context = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1820
                runner._root._start = new Date();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1821
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1822
                //fire the begin event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1823
                runner.fire(runner.BEGIN_EVENT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1824
           
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1825
                //begin the testing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1826
                runner._run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1827
            }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1828
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1829
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1830
        return new TestRunner();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1831
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1832
    }();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1833
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1834
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1835
 * The ArrayAssert object provides functions to test JavaScript array objects
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1836
 * for a variety of cases.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1837
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1838
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1839
 * @class ArrayAssert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1840
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1841
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1842
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1843
YUITest.ArrayAssert = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1844
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1845
    //=========================================================================
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1846
    // Private methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1847
    //=========================================================================
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1848
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1849
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1850
     * Simple indexOf() implementation for an array. Defers to native
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1851
     * if available.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1852
     * @param {Array} haystack The array to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1853
     * @param {Variant} needle The value to locate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1854
     * @return {int} The index of the needle if found or -1 if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1855
     * @method _indexOf
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1856
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1857
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1858
    _indexOf: function(haystack, needle){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1859
        if (haystack.indexOf){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1860
            return haystack.indexOf(needle);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1861
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1862
            for (var i=0; i < haystack.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1863
                if (haystack[i] === needle){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1864
                    return i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1865
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1866
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1867
            return -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1868
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1869
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1870
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1871
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1872
     * Simple some() implementation for an array. Defers to native
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1873
     * if available.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1874
     * @param {Array} haystack The array to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1875
     * @param {Function} matcher The function to run on each value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1876
     * @return {Boolean} True if any value, when run through the matcher,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1877
     *      returns true.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1878
     * @method _some
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1879
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1880
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1881
    _some: function(haystack, matcher){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1882
        if (haystack.some){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1883
            return haystack.some(matcher);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1884
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1885
            for (var i=0; i < haystack.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1886
                if (matcher(haystack[i])){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1887
                    return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1888
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1889
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1890
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1891
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1892
    },    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1893
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1894
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1895
     * Asserts that a value is present in an array. This uses the triple equals 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1896
     * sign so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1897
     * @param {Object} needle The value that is expected in the array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1898
     * @param {Array} haystack An array of values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1899
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1900
     * @method contains
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1901
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1902
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1903
    contains : function (needle, haystack, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1904
                           message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1905
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1906
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1907
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1908
        if (this._indexOf(haystack, needle) == -1){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1909
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value " + needle + " (" + (typeof needle) + ") not found in array [" + haystack + "]."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1910
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1911
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1912
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1913
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1914
     * Asserts that a set of values are present in an array. This uses the triple equals 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1915
     * sign so no type coercion may occur. For this assertion to pass, all values must
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1916
     * be found.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1917
     * @param {Object[]} needles An array of values that are expected in the array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1918
     * @param {Array} haystack An array of values to check.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1919
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1920
     * @method containsItems
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1921
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1922
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1923
    containsItems : function (needles, haystack, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1924
                           message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1925
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1926
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1927
        //begin checking values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1928
        for (var i=0; i < needles.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1929
            if (this._indexOf(haystack, needles[i]) == -1){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1930
                YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value " + needles[i] + " (" + (typeof needles[i]) + ") not found in array [" + haystack + "]."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1931
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1932
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1933
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1934
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1935
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1936
     * Asserts that a value matching some condition is present in an array. This uses
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1937
     * a function to determine a match.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1938
     * @param {Function} matcher A function that returns true if the items matches or false if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1939
     * @param {Array} haystack An array of values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1940
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1941
     * @method containsMatch
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1942
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1943
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1944
    containsMatch : function (matcher, haystack, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1945
                           message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1946
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1947
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1948
        //check for valid matcher
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1949
        if (typeof matcher != "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1950
            throw new TypeError("ArrayAssert.containsMatch(): First argument must be a function.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1951
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1952
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1953
        if (!this._some(haystack, matcher)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1954
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "No match found in array [" + haystack + "]."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1955
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1956
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1957
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1958
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1959
     * Asserts that a value is not present in an array. This uses the triple equals 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1960
     * Asserts that a value is not present in an array. This uses the triple equals 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1961
     * sign so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1962
     * @param {Object} needle The value that is expected in the array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1963
     * @param {Array} haystack An array of values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1964
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1965
     * @method doesNotContain
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1966
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1967
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1968
    doesNotContain : function (needle, haystack, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1969
                           message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1970
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1971
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1972
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1973
        if (this._indexOf(haystack, needle) > -1){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1974
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value found in array [" + haystack + "]."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1975
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1976
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1977
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1978
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1979
     * Asserts that a set of values are not present in an array. This uses the triple equals 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1980
     * sign so no type coercion may occur. For this assertion to pass, all values must
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1981
     * not be found.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1982
     * @param {Object[]} needles An array of values that are not expected in the array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1983
     * @param {Array} haystack An array of values to check.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1984
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1985
     * @method doesNotContainItems
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1986
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1987
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1988
    doesNotContainItems : function (needles, haystack, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1989
                           message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1990
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1991
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1992
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1993
        for (var i=0; i < needles.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1994
            if (this._indexOf(haystack, needles[i]) > -1){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1995
                YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value found in array [" + haystack + "]."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1996
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1997
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1998
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1999
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2000
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2001
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2002
     * Asserts that no values matching a condition are present in an array. This uses
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2003
     * a function to determine a match.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2004
     * @param {Function} matcher A function that returns true if the item matches or false if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2005
     * @param {Array} haystack An array of values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2006
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2007
     * @method doesNotContainMatch
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2008
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2009
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2010
    doesNotContainMatch : function (matcher, haystack, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2011
                           message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2012
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2013
        YUITest.Assert._increment();     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2014
      
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2015
        //check for valid matcher
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2016
        if (typeof matcher != "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2017
            throw new TypeError("ArrayAssert.doesNotContainMatch(): First argument must be a function.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2018
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2019
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2020
        if (this._some(haystack, matcher)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2021
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value found in array [" + haystack + "]."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2022
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2023
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2024
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2025
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2026
     * Asserts that the given value is contained in an array at the specified index.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2027
     * This uses the triple equals sign so no type coercion will occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2028
     * @param {Object} needle The value to look for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2029
     * @param {Array} haystack The array to search in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2030
     * @param {int} index The index at which the value should exist.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2031
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2032
     * @method indexOf
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2033
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2034
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2035
    indexOf : function (needle, haystack, index, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2036
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2037
        YUITest.Assert._increment();     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2038
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2039
        //try to find the value in the array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2040
        for (var i=0; i < haystack.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2041
            if (haystack[i] === needle){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2042
                if (index != i){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2043
                    YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value exists at index " + i + " but should be at index " + index + "."));                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2044
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2045
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2046
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2047
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2048
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2049
        //if it makes it here, it wasn't found at all
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2050
        YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value doesn't exist in array [" + haystack + "]."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2051
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2052
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2053
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2054
     * Asserts that the values in an array are equal, and in the same position,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2055
     * as values in another array. This uses the double equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2056
     * so type coercion may occur. Note that the array objects themselves
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2057
     * need not be the same for this test to pass.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2058
     * @param {Array} expected An array of the expected values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2059
     * @param {Array} actual Any array of the actual values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2060
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2061
     * @method itemsAreEqual
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2062
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2063
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2064
    itemsAreEqual : function (expected, actual, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2065
                           message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2066
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2067
        YUITest.Assert._increment();     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2068
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2069
        //first make sure they're array-like (this can probably be improved)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2070
        if (typeof expected != "object" || typeof actual != "object"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2071
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value should be an array."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2072
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2073
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2074
        //next check array length
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2075
        if (expected.length != actual.length){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2076
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Array should have a length of " + expected.length + " but has a length of " + actual.length + "."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2077
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2078
       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2079
        //begin checking values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2080
        for (var i=0; i < expected.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2081
            if (expected[i] != actual[i]){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2082
                throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Values in position " + i + " are not equal."), expected[i], actual[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2083
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2084
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2085
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2086
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2087
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2088
     * Asserts that the values in an array are equivalent, and in the same position,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2089
     * as values in another array. This uses a function to determine if the values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2090
     * are equivalent. Note that the array objects themselves
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2091
     * need not be the same for this test to pass.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2092
     * @param {Array} expected An array of the expected values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2093
     * @param {Array} actual Any array of the actual values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2094
     * @param {Function} comparator A function that returns true if the values are equivalent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2095
     *      or false if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2096
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2097
     * @return {Void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2098
     * @method itemsAreEquivalent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2099
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2100
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2101
    itemsAreEquivalent : function (expected, actual, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2102
                           comparator, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2103
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2104
        YUITest.Assert._increment();     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2106
        //make sure the comparator is valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2107
        if (typeof comparator != "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2108
            throw new TypeError("ArrayAssert.itemsAreEquivalent(): Third argument must be a function.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2109
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2110
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2111
        //first check array length
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2112
        if (expected.length != actual.length){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2113
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Array should have a length of " + expected.length + " but has a length of " + actual.length));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2114
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2115
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2116
        //begin checking values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2117
        for (var i=0; i < expected.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2118
            if (!comparator(expected[i], actual[i])){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2119
                throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Values in position " + i + " are not equivalent."), expected[i], actual[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2120
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2121
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2122
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2123
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2124
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2125
     * Asserts that an array is empty.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2126
     * @param {Array} actual The array to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2127
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2128
     * @method isEmpty
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2129
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2130
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2131
    isEmpty : function (actual, message) {        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2132
        YUITest.Assert._increment();     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2133
        if (actual.length > 0){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2134
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Array should be empty."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2135
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2136
    },    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2137
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2138
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2139
     * Asserts that an array is not empty.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2140
     * @param {Array} actual The array to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2141
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2142
     * @method isNotEmpty
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2143
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2144
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2145
    isNotEmpty : function (actual, message) {        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2146
        YUITest.Assert._increment();     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2147
        if (actual.length === 0){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2148
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Array should not be empty."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2149
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2150
    },    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2151
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2152
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2153
     * Asserts that the values in an array are the same, and in the same position,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2154
     * as values in another array. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2155
     * so no type coercion will occur. Note that the array objects themselves
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2156
     * need not be the same for this test to pass.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2157
     * @param {Array} expected An array of the expected values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2158
     * @param {Array} actual Any array of the actual values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2159
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2160
     * @method itemsAreSame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2161
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2162
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2163
    itemsAreSame : function (expected, actual, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2164
                          message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2165
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2166
        YUITest.Assert._increment();     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2168
        //first check array length
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2169
        if (expected.length != actual.length){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2170
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Array should have a length of " + expected.length + " but has a length of " + actual.length));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2171
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2172
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2173
        //begin checking values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2174
        for (var i=0; i < expected.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2175
            if (expected[i] !== actual[i]){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2176
                throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Values in position " + i + " are not the same."), expected[i], actual[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2177
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2178
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2179
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2180
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2181
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2182
     * Asserts that the given value is contained in an array at the specified index,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2183
     * starting from the back of the array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2184
     * This uses the triple equals sign so no type coercion will occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2185
     * @param {Object} needle The value to look for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2186
     * @param {Array} haystack The array to search in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2187
     * @param {int} index The index at which the value should exist.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2188
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2189
     * @method lastIndexOf
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2190
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2191
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2192
    lastIndexOf : function (needle, haystack, index, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2193
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2194
        //try to find the value in the array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2195
        for (var i=haystack.length; i >= 0; i--){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2196
            if (haystack[i] === needle){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2197
                if (index != i){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2198
                    YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value exists at index " + i + " but should be at index " + index + "."));                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2199
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2200
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2201
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2202
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2203
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2204
        //if it makes it here, it wasn't found at all
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2205
        YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Value doesn't exist in array."));        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2206
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2207
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2208
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2209
  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2210
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2211
 * The Assert object provides functions to test JavaScript values against
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2212
 * known and expected results. Whenever a comparison (assertion) fails,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2213
 * an error is thrown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2214
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2215
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2216
 * @class Assert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2217
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2218
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2219
YUITest.Assert = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2221
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2222
     * The number of assertions performed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2223
     * @property _asserts
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2224
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2225
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2226
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2227
    _asserts: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2229
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2230
    // Helper Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2231
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2232
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2233
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2234
     * Formats a message so that it can contain the original assertion message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2235
     * in addition to the custom message.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2236
     * @param {String} customMessage The message passed in by the developer.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2237
     * @param {String} defaultMessage The message created by the error by default.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2238
     * @return {String} The final error message, containing either or both.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2239
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2240
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2241
     * @method _formatMessage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2242
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2243
    _formatMessage : function (customMessage, defaultMessage) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2244
        if (typeof customMessage == "string" && customMessage.length > 0){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2245
            return customMessage.replace("{message}", defaultMessage);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2246
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2247
            return defaultMessage;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2248
        }        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2249
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2250
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2251
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2252
     * Returns the number of assertions that have been performed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2253
     * @method _getCount
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2254
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2255
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2256
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2257
    _getCount: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2258
        return this._asserts;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2259
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2260
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2261
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2262
     * Increments the number of assertions that have been performed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2263
     * @method _increment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2264
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2265
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2266
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2267
    _increment: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2268
        this._asserts++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2269
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2270
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2271
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2272
     * Resets the number of assertions that have been performed to 0.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2273
     * @method _reset
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2274
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2275
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2276
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2277
    _reset: function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2278
        this._asserts = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2279
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2280
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2281
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2282
    // Generic Assertion Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2283
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2284
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2285
    /** 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2286
     * Forces an assertion error to occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2287
     * @param {String} message (Optional) The message to display with the failure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2288
     * @method fail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2289
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2290
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2291
    fail : function (message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2292
        throw new YUITest.AssertionError(YUITest.Assert._formatMessage(message, "Test force-failed."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2293
    },       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2294
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2295
    /** 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2296
     * A marker that the test should pass.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2297
     * @method pass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2298
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2299
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2300
    pass : function (message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2301
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2302
    },       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2303
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2304
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2305
    // Equality Assertion Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2306
    //-------------------------------------------------------------------------    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2307
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2308
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2309
     * Asserts that a value is equal to another. This uses the double equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2310
     * so type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2311
     * @param {Object} expected The expected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2312
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2313
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2314
     * @method areEqual
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2315
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2316
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2317
    areEqual : function (expected, actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2318
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2319
        if (expected != actual) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2320
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Values should be equal."), expected, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2321
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2322
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2323
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2324
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2325
     * Asserts that a value is not equal to another. This uses the double equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2326
     * so type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2327
     * @param {Object} unexpected The unexpected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2328
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2329
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2330
     * @method areNotEqual
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2331
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2332
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2333
    areNotEqual : function (unexpected, actual, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2334
                         message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2335
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2336
        if (unexpected == actual) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2337
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Values should not be equal."), unexpected);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2338
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2339
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2340
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2341
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2342
     * Asserts that a value is not the same as another. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2343
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2344
     * @param {Object} unexpected The unexpected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2345
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2346
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2347
     * @method areNotSame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2348
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2349
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2350
    areNotSame : function (unexpected, actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2351
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2352
        if (unexpected === actual) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2353
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Values should not be the same."), unexpected);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2354
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2355
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2356
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2357
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2358
     * Asserts that a value is the same as another. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2359
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2360
     * @param {Object} expected The expected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2361
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2362
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2363
     * @method areSame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2364
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2365
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2366
    areSame : function (expected, actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2367
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2368
        if (expected !== actual) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2369
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Values should be the same."), expected, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2370
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2371
    },    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2372
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2373
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2374
    // Boolean Assertion Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2375
    //-------------------------------------------------------------------------    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2376
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2377
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2378
     * Asserts that a value is false. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2379
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2380
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2381
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2382
     * @method isFalse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2383
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2384
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2385
    isFalse : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2386
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2387
        if (false !== actual) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2388
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Value should be false."), false, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2389
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2390
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2391
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2392
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2393
     * Asserts that a value is true. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2394
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2395
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2396
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2397
     * @method isTrue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2398
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2399
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2400
    isTrue : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2401
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2402
        if (true !== actual) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2403
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Value should be true."), true, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2404
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2406
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2407
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2408
    //-------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2409
    // Special Value Assertion Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2410
    //-------------------------------------------------------------------------    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2411
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2412
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2413
     * Asserts that a value is not a number.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2414
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2415
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2416
     * @method isNaN
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2417
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2418
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2419
    isNaN : function (actual, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2420
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2421
        if (!isNaN(actual)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2422
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Value should be NaN."), NaN, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2423
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2424
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2425
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2426
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2427
     * Asserts that a value is not the special NaN value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2428
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2429
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2430
     * @method isNotNaN
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2431
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2432
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2433
    isNotNaN : function (actual, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2434
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2435
        if (isNaN(actual)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2436
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Values should not be NaN."), NaN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2437
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2438
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2439
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2440
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2441
     * Asserts that a value is not null. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2442
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2443
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2444
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2445
     * @method isNotNull
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2446
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2447
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2448
    isNotNull : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2449
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2450
        if (actual === null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2451
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Values should not be null."), null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2452
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2453
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2454
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2455
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2456
     * Asserts that a value is not undefined. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2457
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2458
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2459
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2460
     * @method isNotUndefined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2461
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2462
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2463
    isNotUndefined : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2464
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2465
        if (typeof actual == "undefined") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2466
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Value should not be undefined."), undefined);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2467
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2468
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2470
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2471
     * Asserts that a value is null. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2472
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2473
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2474
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2475
     * @method isNull
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2476
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2477
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2478
    isNull : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2479
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2480
        if (actual !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2481
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Value should be null."), null, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2482
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2483
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2484
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2485
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2486
     * Asserts that a value is undefined. This uses the triple equals sign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2487
     * so no type coercion may occur.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2488
     * @param {Object} actual The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2489
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2490
     * @method isUndefined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2491
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2492
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2493
    isUndefined : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2494
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2495
        if (typeof actual != "undefined") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2496
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Value should be undefined."), undefined, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2497
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2498
    },    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2499
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2500
    //--------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2501
    // Instance Assertion Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2502
    //--------------------------------------------------------------------------    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2503
   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2504
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2505
     * Asserts that a value is an array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2506
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2507
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2508
     * @method isArray
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2509
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2510
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2511
    isArray : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2512
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2513
        var shouldFail = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2514
        if (Array.isArray){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2515
            shouldFail = !Array.isArray(actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2516
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2517
            shouldFail = Object.prototype.toString.call(actual) != "[object Array]";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2518
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2519
        if (shouldFail){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2520
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Value should be an array."), actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2521
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2522
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2523
   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2524
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2525
     * Asserts that a value is a Boolean.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2526
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2527
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2528
     * @method isBoolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2529
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2530
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2531
    isBoolean : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2532
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2533
        if (typeof actual != "boolean"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2534
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Value should be a Boolean."), actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2535
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2536
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2537
   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2538
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2539
     * Asserts that a value is a function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2540
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2541
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2542
     * @method isFunction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2543
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2544
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2545
    isFunction : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2546
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2547
        if (!(actual instanceof Function)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2548
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Value should be a function."), actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2549
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2550
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2551
   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2552
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2553
     * Asserts that a value is an instance of a particular object. This may return
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2554
     * incorrect results when comparing objects from one frame to constructors in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2555
     * another frame. For best results, don't use in a cross-frame manner.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2556
     * @param {Function} expected The function that the object should be an instance of.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2557
     * @param {Object} actual The object to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2558
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2559
     * @method isInstanceOf
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2560
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2561
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2562
    isInstanceOf : function (expected, actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2563
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2564
        if (!(actual instanceof expected)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2565
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Value isn't an instance of expected type."), expected, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2566
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2567
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2568
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2569
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2570
     * Asserts that a value is a number.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2571
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2572
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2573
     * @method isNumber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2574
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2575
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2576
    isNumber : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2577
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2578
        if (typeof actual != "number"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2579
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Value should be a number."), actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2580
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2581
    },    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2582
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2583
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2584
     * Asserts that a value is an object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2585
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2586
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2587
     * @method isObject
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2588
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2589
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2590
    isObject : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2591
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2592
        if (!actual || (typeof actual != "object" && typeof actual != "function")){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2593
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Value should be an object."), actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2594
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2595
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2596
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2597
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2598
     * Asserts that a value is a string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2599
     * @param {Object} actual The value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2600
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2601
     * @method isString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2602
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2603
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2604
    isString : function (actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2605
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2606
        if (typeof actual != "string"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2607
            throw new YUITest.UnexpectedValue(YUITest.Assert._formatMessage(message, "Value should be a string."), actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2608
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2609
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2610
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2611
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2612
     * Asserts that a value is of a particular type. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2613
     * @param {String} expectedType The expected type of the variable.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2614
     * @param {Object} actualValue The actual value to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2615
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2616
     * @method isTypeOf
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2617
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2618
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2619
    isTypeOf : function (expectedType, actualValue, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2620
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2621
        if (typeof actualValue != expectedType){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2622
            throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Value should be of type " + expectedType + "."), expectedType, typeof actualValue);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2623
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2624
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2625
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2626
    //--------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2627
    // Error Detection Methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2628
    //--------------------------------------------------------------------------    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2629
   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2630
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2631
     * Asserts that executing a particular method should throw an error of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2632
     * a specific type. This is a replacement for _should.error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2633
     * @param {String|Function|Object} expectedError If a string, this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2634
     *      is the error message that the error must have; if a function, this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2635
     *      is the constructor that should have been used to create the thrown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2636
     *      error; if an object, this is an instance of a particular error type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2637
     *      with a specific error message (both must match).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2638
     * @param {Function} method The method to execute that should throw the error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2639
     * @param {String} message (Optional) The message to display if the assertion
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2640
     *      fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2641
     * @method throwsError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2642
     * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2643
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2644
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2645
    throwsError: function(expectedError, method, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2646
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2647
        var error = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2648
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2649
        try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2650
            method();        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2651
        } catch (thrown) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2652
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2653
            //check to see what type of data we have
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2654
            if (typeof expectedError == "string"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2655
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2656
                //if it's a string, check the error message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2657
                if (thrown.message != expectedError){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2658
                    error = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2659
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2660
            } else if (typeof expectedError == "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2661
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2662
                //if it's a function, see if the error is an instance of it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2663
                if (!(thrown instanceof expectedError)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2664
                    error = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2665
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2666
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2667
            } else if (typeof expectedError == "object" && expectedError !== null){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2668
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2669
                //if it's an object, check the instance and message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2670
                if (!(thrown instanceof expectedError.constructor) || 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2671
                        thrown.message != expectedError.message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2672
                    error = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2673
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2674
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2675
            } else { //if it gets here, the argument could be wrong
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2676
                error = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2677
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2678
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2679
            if (error){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2680
                throw new YUITest.UnexpectedError(thrown);                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2681
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2682
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2683
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2684
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2685
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2686
        //if it reaches here, the error wasn't thrown, which is a bad thing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2687
        throw new YUITest.AssertionError(YUITest.Assert._formatMessage(message, "Error should have been thrown."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2688
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2689
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2690
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2691
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2692
 * Error is thrown whenever an assertion fails. It provides methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2693
 * to more easily get at error information and also provides a base class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2694
 * from which more specific assertion errors can be derived.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2695
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2696
 * @param {String} message The message to display when the error occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2697
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2698
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2699
 * @class AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2700
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2701
 */ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2702
YUITest.AssertionError = function (message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2703
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2704
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2705
     * Error message. Must be duplicated to ensure browser receives it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2706
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2707
     * @property message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2708
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2709
    this.message = message;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2710
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2711
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2712
     * The name of the error that occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2713
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2714
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2715
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2716
    this.name = "Assert Error";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2717
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2718
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2719
YUITest.AssertionError.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2720
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2721
    //restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2722
    constructor: YUITest.AssertionError,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2723
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2724
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2725
     * Returns a fully formatted error for an assertion failure. This should
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2726
     * be overridden by all subclasses to provide specific information.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2727
     * @method getMessage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2728
     * @return {String} A string describing the error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2729
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2730
    getMessage : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2731
        return this.message;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2732
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2733
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2734
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2735
     * Returns a string representation of the error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2736
     * @method toString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2737
     * @return {String} A string representation of the error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2738
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2739
    toString : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2740
        return this.name + ": " + this.getMessage();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2741
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2742
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2743
};/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2744
 * ComparisonFailure is subclass of Error that is thrown whenever
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2745
 * a comparison between two values fails. It provides mechanisms to retrieve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2746
 * both the expected and actual value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2747
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2748
 * @param {String} message The message to display when the error occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2749
 * @param {Object} expected The expected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2750
 * @param {Object} actual The actual value that caused the assertion to fail.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2751
 * @namespace Test 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2752
 * @extends AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2753
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2754
 * @class ComparisonFailure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2755
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2756
 */ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2757
YUITest.ComparisonFailure = function (message, expected, actual){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2758
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2759
    //call superclass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2760
    YUITest.AssertionError.call(this, message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2761
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2762
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2763
     * The expected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2764
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2765
     * @property expected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2766
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2767
    this.expected = expected;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2768
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2769
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2770
     * The actual value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2771
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2772
     * @property actual
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2773
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2774
    this.actual = actual;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2775
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2776
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2777
     * The name of the error that occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2778
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2779
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2780
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2781
    this.name = "ComparisonFailure";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2782
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2783
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2784
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2785
//inherit from YUITest.AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2786
YUITest.ComparisonFailure.prototype = new YUITest.AssertionError;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2787
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2788
//restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2789
YUITest.ComparisonFailure.prototype.constructor = YUITest.ComparisonFailure;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2790
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2791
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2792
 * Returns a fully formatted error for an assertion failure. This message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2793
 * provides information about the expected and actual values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2794
 * @method getMessage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2795
 * @return {String} A string describing the error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2796
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2797
YUITest.ComparisonFailure.prototype.getMessage = function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2798
    return this.message + "\nExpected: " + this.expected + " (" + (typeof this.expected) + ")"  +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2799
            "\nActual: " + this.actual + " (" + (typeof this.actual) + ")";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2800
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2801
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2802
 * An object object containing coverage result formatting methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2803
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2804
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2805
 * @class CoverageFormat
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2806
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2807
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2808
YUITest.CoverageFormat = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2809
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2810
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2811
     * Returns the coverage report in JSON format. This is the straight
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2812
     * JSON representation of the native coverage report.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2813
     * @param {Object} coverage The coverage report object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2814
     * @return {String} A JSON-formatted string of coverage data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2815
     * @method JSON
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2816
     * @namespace Test.CoverageFormat
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2817
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2818
    JSON: function(coverage){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2819
        return YUITest.Util.JSON.stringify(coverage);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2820
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2821
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2822
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2823
     * Returns the coverage report in a JSON format compatible with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2824
     * Xdebug. See <a href="http://www.xdebug.com/docs/code_coverage">Xdebug Documentation</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2825
     * for more information. Note: function coverage is not available
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2826
     * in this format.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2827
     * @param {Object} coverage The coverage report object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2828
     * @return {String} A JSON-formatted string of coverage data.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2829
     * @method XdebugJSON
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2830
     * @namespace Test.CoverageFormat
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2831
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2832
    XdebugJSON: function(coverage){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2833
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2834
        var report = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2835
        for (var prop in coverage){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2836
            if (coverage.hasOwnProperty(prop)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2837
                report[prop] = coverage[prop].lines;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2838
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2839
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2840
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2841
        return YUITest.Util.JSON.stringify(coverage);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2842
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2843
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2844
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2845
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2846
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2847
 * The DateAssert object provides functions to test JavaScript Date objects
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2848
 * for a variety of cases.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2849
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2850
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2851
 * @class DateAssert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2852
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2853
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2854
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2855
YUITest.DateAssert = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2856
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2857
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2858
     * Asserts that a date's month, day, and year are equal to another date's.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2859
     * @param {Date} expected The expected date.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2860
     * @param {Date} actual The actual date to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2861
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2862
     * @method datesAreEqual
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2863
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2864
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2865
    datesAreEqual : function (expected, actual, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2866
        YUITest.Assert._increment();        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2867
        if (expected instanceof Date && actual instanceof Date){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2868
            var msg = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2869
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2870
            //check years first
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2871
            if (expected.getFullYear() != actual.getFullYear()){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2872
                msg = "Years should be equal.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2873
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2874
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2875
            //now check months
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2876
            if (expected.getMonth() != actual.getMonth()){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2877
                msg = "Months should be equal.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2878
            }                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2879
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2880
            //last, check the day of the month
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2881
            if (expected.getDate() != actual.getDate()){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2882
                msg = "Days of month should be equal.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2883
            }                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2884
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2885
            if (msg.length){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2886
                throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, msg), expected, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2887
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2888
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2889
            throw new TypeError("YUITest.DateAssert.datesAreEqual(): Expected and actual values must be Date objects.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2890
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2891
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2892
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2893
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2894
     * Asserts that a date's hour, minutes, and seconds are equal to another date's.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2895
     * @param {Date} expected The expected date.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2896
     * @param {Date} actual The actual date to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2897
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2898
     * @method timesAreEqual
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2899
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2900
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2901
    timesAreEqual : function (expected, actual, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2902
        YUITest.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2903
        if (expected instanceof Date && actual instanceof Date){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2904
            var msg = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2905
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2906
            //check hours first
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2907
            if (expected.getHours() != actual.getHours()){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2908
                msg = "Hours should be equal.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2909
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2910
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2911
            //now check minutes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2912
            if (expected.getMinutes() != actual.getMinutes()){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2913
                msg = "Minutes should be equal.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2914
            }                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2915
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2916
            //last, check the seconds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2917
            if (expected.getSeconds() != actual.getSeconds()){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2918
                msg = "Seconds should be equal.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2919
            }                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2920
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2921
            if (msg.length){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2922
                throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, msg), expected, actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2923
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2924
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2925
            throw new TypeError("YUITest.DateAssert.timesAreEqual(): Expected and actual values must be Date objects.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2926
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2927
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2928
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2929
};/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2930
 * Creates a new mock object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2931
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2932
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2933
 * @class Mock
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2934
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2935
 * @param {Object} template (Optional) An object whose methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2936
 *      should be stubbed out on the mock object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2937
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2938
YUITest.Mock = function(template){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2939
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2940
    //use blank object is nothing is passed in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2941
    template = template || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2942
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2943
    var mock,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2944
        name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2945
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2946
    //try to create mock that keeps prototype chain intact
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2947
    //fails in the case of ActiveX objects
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2948
    try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2949
        function f(){}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2950
        f.prototype = template;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2951
        mock = new f();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2952
    } catch (ex) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2953
        mock = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2954
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2955
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2956
    //create stubs for all methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2957
    for (name in template){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2958
        if (template.hasOwnProperty(name)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2959
            if (typeof template[name] == "function"){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2960
                mock[name] = function(name){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2961
                    return function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2962
                        YUITest.Assert.fail("Method " + name + "() was called but was not expected to be.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2963
                    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2964
                }(name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2965
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2966
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2967
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2968
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2969
    //return it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2970
    return mock;    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2971
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2972
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2973
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2974
 * Assigns an expectation to a mock object. This is used to create
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2975
 * methods and properties on the mock object that are monitored for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2976
 * calls and changes, respectively.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2977
 * @param {Object} mock The object to add the expectation to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2978
 * @param {Object} expectation An object defining the expectation. For
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2979
 *      properties, the keys "property" and "value" are required. For a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2980
 *      method the "method" key defines the method's name, the optional "args"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2981
 *      key provides an array of argument types. The "returns" key provides
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2982
 *      an optional return value. An optional "run" key provides a function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2983
 *      to be used as the method body. The return value of a mocked method is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2984
 *      determined first by the "returns" key, then the "run" function's return
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2985
 *      value. If neither "returns" nor "run" is provided undefined is returned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2986
 *      An optional 'error' key defines an error type to be thrown in all cases.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2987
 *      The "callCount" key provides an optional number of times the method is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2988
 *      expected to be called (the default is 1).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2989
 * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2990
 * @method expect
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2991
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2992
 */ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2993
YUITest.Mock.expect = function(mock /*:Object*/, expectation /*:Object*/){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2994
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2995
    //make sure there's a place to store the expectations
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2996
    if (!mock.__expectations) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2997
        mock.__expectations = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2998
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2999
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3000
    //method expectation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3001
    if (expectation.method){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3002
        var name = expectation.method,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3003
            args = expectation.args || [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3004
            result = expectation.returns,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3005
            callCount = (typeof expectation.callCount == "number") ? expectation.callCount : 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3006
            error = expectation.error,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3007
            run = expectation.run || function(){},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3008
            runResult,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3009
            i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3010
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3011
        //save expectations
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3012
        mock.__expectations[name] = expectation;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3013
        expectation.callCount = callCount;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3014
        expectation.actualCallCount = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3015
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3016
        //process arguments
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3017
        for (i=0; i < args.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3018
             if (!(args[i] instanceof YUITest.Mock.Value)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3019
                args[i] = YUITest.Mock.Value(YUITest.Assert.areSame, [args[i]], "Argument " + i + " of " + name + "() is incorrect.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3020
            }       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3021
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3022
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3023
        //if the method is expected to be called
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3024
        if (callCount > 0){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3025
            mock[name] = function(){   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3026
                try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3027
                    expectation.actualCallCount++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3028
                    YUITest.Assert.areEqual(args.length, arguments.length, "Method " + name + "() passed incorrect number of arguments.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3029
                    for (var i=0, len=args.length; i < len; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3030
                        args[i].verify(arguments[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3031
                    }                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3032
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3033
                    runResult = run.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3034
                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3035
                    if (error){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3036
                        throw error;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3037
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3038
                } catch (ex){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3039
                    //route through TestRunner for proper handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3040
                    YUITest.TestRunner._handleError(ex);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3041
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3042
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3043
                // Any value provided for 'returns' overrides any value returned
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3044
                // by our 'run' function. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3045
                return expectation.hasOwnProperty('returns') ? result : runResult;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3046
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3047
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3048
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3049
            //method should fail if called when not expected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3050
            mock[name] = function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3051
                try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3052
                    YUITest.Assert.fail("Method " + name + "() should not have been called.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3053
                } catch (ex){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3054
                    //route through TestRunner for proper handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3055
                    YUITest.TestRunner._handleError(ex);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3056
                }                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3057
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3058
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3059
    } else if (expectation.property){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3060
        //save expectations
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3061
        mock.__expectations[expectation.property] = expectation;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3062
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3063
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3064
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3065
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3066
 * Verifies that all expectations of a mock object have been met and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3067
 * throws an assertion error if not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3068
 * @param {Object} mock The object to verify..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3069
 * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3070
 * @method verify
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3071
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3072
 */ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3073
YUITest.Mock.verify = function(mock){    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3074
    try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3075
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3076
        for (var name in mock.__expectations){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3077
            if (mock.__expectations.hasOwnProperty(name)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3078
                var expectation = mock.__expectations[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3079
                if (expectation.method) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3080
                    YUITest.Assert.areEqual(expectation.callCount, expectation.actualCallCount, "Method " + expectation.method + "() wasn't called the expected number of times.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3081
                } else if (expectation.property){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3082
                    YUITest.Assert.areEqual(expectation.value, mock[expectation.property], "Property " + expectation.property + " wasn't set to the correct value."); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3083
                }                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3084
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3085
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3086
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3087
    } catch (ex){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3088
        //route through TestRunner for proper handling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3089
        YUITest.TestRunner._handleError(ex);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3090
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3091
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3092
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3093
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3094
 * Creates a new value matcher.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3095
 * @param {Function} method The function to call on the value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3096
 * @param {Array} originalArgs (Optional) Array of arguments to pass to the method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3097
 * @param {String} message (Optional) Message to display in case of failure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3098
 * @namespace Test.Mock
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3099
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3100
 * @class Value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3101
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3102
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3103
YUITest.Mock.Value = function(method, originalArgs, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3104
    if (this instanceof YUITest.Mock.Value){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3105
        this.verify = function(value){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3106
            var args = [].concat(originalArgs || []);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3107
            args.push(value);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3108
            args.push(message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3109
            method.apply(null, args);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3110
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3111
    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3112
        return new YUITest.Mock.Value(method, originalArgs, message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3113
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3114
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3116
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3117
 * Predefined matcher to match any value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3118
 * @property Any
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3119
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3120
 * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3121
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3122
YUITest.Mock.Value.Any        = YUITest.Mock.Value(function(){});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3123
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3124
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3125
 * Predefined matcher to match boolean values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3126
 * @property Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3127
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3128
 * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3129
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3130
YUITest.Mock.Value.Boolean    = YUITest.Mock.Value(YUITest.Assert.isBoolean);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3132
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3133
 * Predefined matcher to match number values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3134
 * @property Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3135
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3136
 * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3137
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3138
YUITest.Mock.Value.Number     = YUITest.Mock.Value(YUITest.Assert.isNumber);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3140
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3141
 * Predefined matcher to match string values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3142
 * @property String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3143
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3144
 * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3145
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3146
YUITest.Mock.Value.String     = YUITest.Mock.Value(YUITest.Assert.isString);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3148
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3149
 * Predefined matcher to match object values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3150
 * @property Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3151
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3152
 * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3153
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3154
YUITest.Mock.Value.Object     = YUITest.Mock.Value(YUITest.Assert.isObject);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3155
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3156
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3157
 * Predefined matcher to match function values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3158
 * @property Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3159
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3160
 * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3161
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3162
YUITest.Mock.Value.Function   = YUITest.Mock.Value(YUITest.Assert.isFunction);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3163
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3164
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3165
 * The ObjectAssert object provides functions to test JavaScript objects
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3166
 * for a variety of cases.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3167
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3168
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3169
 * @class ObjectAssert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3170
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3171
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3172
YUITest.ObjectAssert = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3173
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3174
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3175
     * Asserts that an object has all of the same properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3176
     * and property values as the other.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3177
     * @param {Object} expected The object with all expected properties and values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3178
     * @param {Object} actual The object to inspect.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3179
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3180
     * @method areEqual
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3181
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3182
     * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3183
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3184
    areEqual: function(expected, actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3185
        YUITest.Assert._increment();         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3186
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3187
        var expectedKeys = YUITest.Object.keys(expected),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3188
            actualKeys = YUITest.Object.keys(actual);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3189
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3190
        //first check keys array length
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3191
        if (expectedKeys.length != actualKeys.length){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3192
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Object should have " + expectedKeys.length + " keys but has " + actualKeys.length));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3193
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3194
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3195
        //then check values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3196
        for (var name in expected){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3197
            if (expected.hasOwnProperty(name)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3198
                if (expected[name] != actual[name]){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3199
                    throw new YUITest.ComparisonFailure(YUITest.Assert._formatMessage(message, "Values should be equal for property " + name), expected[name], actual[name]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3200
                }            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3201
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3202
        }           
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3203
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3204
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3205
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3206
     * Asserts that an object has a property with the given name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3207
     * @param {String} propertyName The name of the property to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3208
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3209
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3210
     * @method hasKey
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3211
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3212
     * @deprecated Use ownsOrInheritsKey() instead
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3213
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3214
    hasKey: function (propertyName, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3215
        YUITest.ObjectAssert.ownsOrInheritsKey(propertyName, object, message);   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3216
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3217
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3218
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3219
     * Asserts that an object has all properties of a reference object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3220
     * @param {Array} properties An array of property names that should be on the object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3221
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3222
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3223
     * @method hasKeys
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3224
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3225
     * @deprecated Use ownsOrInheritsKeys() instead
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3226
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3227
    hasKeys: function (properties, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3228
        YUITest.ObjectAssert.ownsOrInheritsKeys(properties, object, message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3229
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3230
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3231
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3232
     * Asserts that a property with the given name exists on an object's prototype.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3233
     * @param {String} propertyName The name of the property to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3234
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3235
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3236
     * @method inheritsKey
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3237
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3238
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3239
    inheritsKey: function (propertyName, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3240
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3241
        if (!(propertyName in object && !object.hasOwnProperty(propertyName))){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3242
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Property '" + propertyName + "' not found on object instance."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3243
        }     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3244
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3245
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3246
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3247
     * Asserts that all properties exist on an object prototype.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3248
     * @param {Array} properties An array of property names that should be on the object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3249
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3250
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3251
     * @method inheritsKeys
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3252
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3253
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3254
    inheritsKeys: function (properties, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3255
        YUITest.Assert._increment();        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3256
        for (var i=0; i < properties.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3257
            if (!(propertyName in object && !object.hasOwnProperty(properties[i]))){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3258
                YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Property '" + properties[i] + "' not found on object instance."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3259
            }      
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3260
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3261
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3262
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3263
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3264
     * Asserts that a property with the given name exists on an object instance (not on its prototype).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3265
     * @param {String} propertyName The name of the property to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3266
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3267
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3268
     * @method ownsKey
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3269
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3270
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3271
    ownsKey: function (propertyName, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3272
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3273
        if (!object.hasOwnProperty(propertyName)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3274
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Property '" + propertyName + "' not found on object instance."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3275
        }     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3276
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3277
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3278
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3279
     * Asserts that all properties exist on an object instance (not on its prototype).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3280
     * @param {Array} properties An array of property names that should be on the object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3281
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3282
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3283
     * @method ownsKeys
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3284
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3285
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3286
    ownsKeys: function (properties, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3287
        YUITest.Assert._increment();        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3288
        for (var i=0; i < properties.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3289
            if (!object.hasOwnProperty(properties[i])){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3290
                YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Property '" + properties[i] + "' not found on object instance."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3291
            }      
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3292
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3293
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3294
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3295
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3296
     * Asserts that an object owns no properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3297
     * @param {Object} object The object to check.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3298
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3299
     * @method ownsNoKeys
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3300
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3301
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3302
    ownsNoKeys : function (object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3303
        YUITest.Assert._increment();  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3304
        var count = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3305
            name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3306
        for (name in object){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3307
            if (object.hasOwnProperty(name)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3308
                count++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3309
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3310
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3311
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3312
        if (count !== 0){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3313
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Object owns " + count + " properties but should own none."));        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3314
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3315
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3316
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3317
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3318
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3319
     * Asserts that an object has a property with the given name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3320
     * @param {String} propertyName The name of the property to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3321
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3322
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3323
     * @method ownsOrInheritsKey
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3324
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3325
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3326
    ownsOrInheritsKey: function (propertyName, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3327
        YUITest.Assert._increment();               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3328
        if (!(propertyName in object)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3329
            YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Property '" + propertyName + "' not found on object."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3330
        }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3331
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3332
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3333
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3334
     * Asserts that an object has all properties of a reference object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3335
     * @param {Array} properties An array of property names that should be on the object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3336
     * @param {Object} object The object to search.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3337
     * @param {String} message (Optional) The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3338
     * @method ownsOrInheritsKeys
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3339
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3340
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3341
    ownsOrInheritsKeys: function (properties, object, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3342
        YUITest.Assert._increment();  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3343
        for (var i=0; i < properties.length; i++){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3344
            if (!(properties[i] in object)){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3345
                YUITest.Assert.fail(YUITest.Assert._formatMessage(message, "Property '" + properties[i] + "' not found on object."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3346
            }      
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3347
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3348
    }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3349
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3350
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3351
 * Convenience type for storing and aggregating
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3352
 * test result information.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3353
 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3354
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3355
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3356
 * @class Results
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3357
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3358
 * @param {String} name The name of the test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3359
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3360
YUITest.Results = function(name){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3362
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3363
     * Name of the test, test case, or test suite.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3364
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3365
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3366
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3367
    this.name = name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3368
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3369
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3370
     * Number of passed tests.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3371
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3372
     * @property passed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3373
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3374
    this.passed = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3375
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3376
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3377
     * Number of failed tests.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3378
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3379
     * @property failed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3380
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3381
    this.failed = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3382
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3383
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3384
     * Number of errors that occur in non-test methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3385
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3386
     * @property errors
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3387
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3388
    this.errors = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3389
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3390
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3391
     * Number of ignored tests.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3392
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3393
     * @property ignored
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3394
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3395
    this.ignored = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3396
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3397
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3398
     * Number of total tests.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3399
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3400
     * @property total
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3401
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3402
    this.total = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3403
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3404
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3405
     * Amount of time (ms) it took to complete testing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3406
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3407
     * @property duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3408
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3409
    this.duration = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3410
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3412
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3413
 * Includes results from another results object into this one.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3414
 * @param {Test.Results} result The results object to include.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3415
 * @method include
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3416
 * @return {void}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3417
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3418
YUITest.Results.prototype.include = function(results){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3419
    this.passed += results.passed;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3420
    this.failed += results.failed;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3421
    this.ignored += results.ignored;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3422
    this.total += results.total;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3423
    this.errors += results.errors;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3424
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3425
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3426
 * ShouldError is subclass of Error that is thrown whenever
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3427
 * a test is expected to throw an error but doesn't.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3428
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3429
 * @param {String} message The message to display when the error occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3430
 * @namespace Test 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3431
 * @extends AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3432
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3433
 * @class ShouldError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3434
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3435
 */ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3436
YUITest.ShouldError = function (message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3437
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3438
    //call superclass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3439
    YUITest.AssertionError.call(this, message || "This test should have thrown an error but didn't.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3440
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3441
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3442
     * The name of the error that occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3443
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3444
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3445
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3446
    this.name = "ShouldError";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3447
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3448
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3450
//inherit from YUITest.AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3451
YUITest.ShouldError.prototype = new YUITest.AssertionError();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3452
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3453
//restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3454
YUITest.ShouldError.prototype.constructor = YUITest.ShouldError;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3455
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3456
 * ShouldFail is subclass of AssertionError that is thrown whenever
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3457
 * a test was expected to fail but did not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3458
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3459
 * @param {String} message The message to display when the error occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3460
 * @namespace Test 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3461
 * @extends YUITest.AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3462
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3463
 * @class ShouldFail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3464
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3465
 */ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3466
YUITest.ShouldFail = function (message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3467
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3468
    //call superclass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3469
    YUITest.AssertionError.call(this, message || "This test should fail but didn't.");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3470
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3471
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3472
     * The name of the error that occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3473
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3474
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3475
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3476
    this.name = "ShouldFail";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3477
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3478
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3479
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3480
//inherit from YUITest.AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3481
YUITest.ShouldFail.prototype = new YUITest.AssertionError();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3482
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3483
//restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3484
YUITest.ShouldFail.prototype.constructor = YUITest.ShouldFail;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3485
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3486
 * UnexpectedError is subclass of AssertionError that is thrown whenever
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3487
 * an error occurs within the course of a test and the test was not expected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3488
 * to throw an error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3489
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3490
 * @param {Error} cause The unexpected error that caused this error to be 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3491
 *                      thrown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3492
 * @namespace Test 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3493
 * @extends YUITest.AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3494
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3495
 * @class UnexpectedError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3496
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3497
 */  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3498
YUITest.UnexpectedError = function (cause){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3499
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3500
    //call superclass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3501
    YUITest.AssertionError.call(this, "Unexpected error: " + cause.message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3502
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3503
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3504
     * The unexpected error that occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3505
     * @type Error
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3506
     * @property cause
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3507
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3508
    this.cause = cause;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3509
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3510
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3511
     * The name of the error that occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3512
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3513
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3514
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3515
    this.name = "UnexpectedError";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3516
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3517
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3518
     * Stack information for the error (if provided).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3519
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3520
     * @property stack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3521
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3522
    this.stack = cause.stack;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3523
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3524
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3526
//inherit from YUITest.AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3527
YUITest.UnexpectedError.prototype = new YUITest.AssertionError();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3529
//restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3530
YUITest.UnexpectedError.prototype.constructor = YUITest.UnexpectedError;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3531
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3532
 * UnexpectedValue is subclass of Error that is thrown whenever
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3533
 * a value was unexpected in its scope. This typically means that a test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3534
 * was performed to determine that a value was *not* equal to a certain
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3535
 * value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3536
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3537
 * @param {String} message The message to display when the error occurs.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3538
 * @param {Object} unexpected The unexpected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3539
 * @namespace Test 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3540
 * @extends AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3541
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3542
 * @class UnexpectedValue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3543
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3544
 */ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3545
YUITest.UnexpectedValue = function (message, unexpected){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3546
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3547
    //call superclass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3548
    YUITest.AssertionError.call(this, message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3549
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3550
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3551
     * The unexpected value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3552
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3553
     * @property unexpected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3554
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3555
    this.unexpected = unexpected;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3556
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3557
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3558
     * The name of the error that occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3559
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3560
     * @property name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3561
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3562
    this.name = "UnexpectedValue";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3563
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3564
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3565
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3566
//inherit from YUITest.AssertionError
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3567
YUITest.UnexpectedValue.prototype = new YUITest.AssertionError();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3569
//restore constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3570
YUITest.UnexpectedValue.prototype.constructor = YUITest.UnexpectedValue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3571
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3572
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3573
 * Returns a fully formatted error for an assertion failure. This message
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3574
 * provides information about the expected and actual values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3575
 * @method getMessage
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3576
 * @return {String} A string describing the error.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3577
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3578
YUITest.UnexpectedValue.prototype.getMessage = function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3579
    return this.message + "\nUnexpected: " + this.unexpected + " (" + (typeof this.unexpected) + ") ";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3580
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3581
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3582
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3583
 * Represents a stoppage in test execution to wait for an amount of time before
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3584
 * continuing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3585
 * @param {Function} segment A function to run when the wait is over.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3586
 * @param {int} delay The number of milliseconds to wait before running the code.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3587
 * @module test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3588
 * @class Wait
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3589
 * @namespace Test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3590
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3591
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3592
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3593
YUITest.Wait = function (segment, delay) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3594
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3595
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3596
     * The segment of code to run when the wait is over.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3597
     * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3598
     * @property segment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3599
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3600
    this.segment = (typeof segment == "function" ? segment : null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3601
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3602
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3603
     * The delay before running the segment of code.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3604
     * @type int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3605
     * @property delay
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3606
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3607
    this.delay = (typeof delay == "number" ? delay : 0);        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3608
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3609
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3610
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3611
//Setting up our aliases..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3612
Y.Test = YUITest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3613
Y.Object.each(YUITest, function(item, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3614
    var name = name.replace('Test', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3615
    Y.Test[name] = item;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3616
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3617
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3618
} //End of else in top wrapper
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3620
Y.Assert = YUITest.Assert;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3621
Y.Assert.Error = Y.Test.AssertionError;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3622
Y.Assert.ComparisonFailure = Y.Test.ComparisonFailure;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3623
Y.Assert.UnexpectedValue = Y.Test.UnexpectedValue;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3624
Y.Mock = Y.Test.Mock;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3625
Y.ObjectAssert = Y.Test.ObjectAssert;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3626
Y.ArrayAssert = Y.Test.ArrayAssert;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3627
Y.DateAssert = Y.Test.DateAssert;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3628
Y.Test.ResultsFormat = Y.Test.TestFormat;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3629
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3630
var itemsAreEqual = Y.Test.ArrayAssert.itemsAreEqual;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3631
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3632
Y.Test.ArrayAssert.itemsAreEqual = function(expected, actual, message) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3633
    return itemsAreEqual.call(this, Y.Array(expected), Y.Array(actual), message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3634
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3635
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3636
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3637
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3638
 * Asserts that a given condition is true. If not, then a Y.Assert.Error object is thrown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3639
 * and the test fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3640
 * @method assert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3641
 * @param {Boolean} condition The condition to test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3642
 * @param {String} message The message to display if the assertion fails.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3643
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3644
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3645
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3646
Y.assert = function(condition, message){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3647
    Y.Assert._increment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3648
    if (!condition){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3649
        throw new Y.Assert.Error(Y.Assert._formatMessage(message, "Assertion failed."));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3650
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3651
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3652
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3653
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3654
 * Forces an assertion error to occur. Shortcut for Y.Assert.fail().
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3655
 * @method fail
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3656
 * @param {String} message (Optional) The message to display with the failure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3657
 * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3658
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3659
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3660
Y.fail = Y.Assert.fail; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3661
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3662
Y.Test.Runner.once = Y.Test.Runner.subscribe;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3663
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3664
Y.Test.Runner.disableLogging = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3665
    Y.Test.Runner._log = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3666
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3667
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3668
Y.Test.Runner.enableLogging = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3669
    Y.Test.Runner._log = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3670
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3671
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3672
Y.Test.Runner._ignoreEmpty = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3673
Y.Test.Runner._log = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3674
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3675
Y.Test.Runner.on = Y.Test.Runner.attach;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3676
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3677
//Only allow one instance of YUITest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3678
if (!YUI.YUITest) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3679
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3680
    if (Y.config.win) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3681
        Y.config.win.YUITest = YUITest;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3682
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3683
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3684
    YUI.YUITest = Y.Test;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3685
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3686
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3687
    //Only setup the listeners once.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3688
    var logEvent = function(event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3689
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3690
        //data variables
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3691
        var message = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3692
        var messageType = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3693
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3694
        switch(event.type){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3695
            case this.BEGIN_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3696
                message = "Testing began at " + (new Date()).toString() + ".";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3697
                messageType = "info";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3698
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3699
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3700
            case this.COMPLETE_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3701
                message = Y.Lang.sub("Testing completed at " +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3702
                    (new Date()).toString() + ".\n" +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3703
                    "Passed:{passed} Failed:{failed} " +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3704
                    "Total:{total} ({ignored} ignored)",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3705
                    event.results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3706
                messageType = "info";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3707
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3708
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3709
            case this.TEST_FAIL_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3710
                message = event.testName + ": failed.\n" + event.error.getMessage();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3711
                messageType = "fail";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3712
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3713
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3714
            case this.TEST_IGNORE_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3715
                message = event.testName + ": ignored.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3716
                messageType = "ignore";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3717
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3718
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3719
            case this.TEST_PASS_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3720
                message = event.testName + ": passed.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3721
                messageType = "pass";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3722
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3723
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3724
            case this.TEST_SUITE_BEGIN_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3725
                message = "Test suite \"" + event.testSuite.name + "\" started.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3726
                messageType = "info";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3727
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3728
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3729
            case this.TEST_SUITE_COMPLETE_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3730
                message = Y.Lang.sub("Test suite \"" +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3731
                    event.testSuite.name + "\" completed" + ".\n" +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3732
                    "Passed:{passed} Failed:{failed} " +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3733
                    "Total:{total} ({ignored} ignored)",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3734
                    event.results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3735
                messageType = "info";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3736
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3737
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3738
            case this.TEST_CASE_BEGIN_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3739
                message = "Test case \"" + event.testCase.name + "\" started.";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3740
                messageType = "info";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3741
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3742
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3743
            case this.TEST_CASE_COMPLETE_EVENT:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3744
                message = Y.Lang.sub("Test case \"" +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3745
                    event.testCase.name + "\" completed.\n" +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3746
                    "Passed:{passed} Failed:{failed} " +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3747
                    "Total:{total} ({ignored} ignored)",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3748
                    event.results);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3749
                messageType = "info";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3750
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3751
            default:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3752
                message = "Unexpected event " + event.type;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3753
                messageType = "info";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3754
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3755
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3756
        if (Y.Test.Runner._log) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3757
            Y.log(message, messageType, "TestRunner");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3758
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3759
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3760
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3761
    var i, name;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3762
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3763
    for (i in Y.Test.Runner) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3764
        name = Y.Test.Runner[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3765
        if (i.indexOf('_EVENT') > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3766
            Y.Test.Runner.subscribe(name, logEvent);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3767
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3768
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3769
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3770
} //End if for YUI.YUITest
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3771
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3772
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3773
}, '3.10.3', {"requires": ["event-simulate", "event-custom", "json-stringify"]});