annotate src/main/webapp/resources/js/dependencies/qunit.js @ 35:89a5ca7d44f7

new: rename branch to task, add fields in task table, add scroll bar
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Thu, 19 Nov 2015 17:14:06 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 /*!
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2 * QUnit 1.20.0
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 * http://qunitjs.com/
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 * Copyright jQuery Foundation and other contributors
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 * Released under the MIT license
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
7 * http://jquery.org/license
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 * Date: 2015-10-27T17:53Z
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
10 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
11
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 (function( global ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
13
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 var QUnit = {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
15
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 var Date = global.Date;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 var now = Date.now || function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
18 return new Date().getTime();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
20
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 var setTimeout = global.setTimeout;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 var clearTimeout = global.clearTimeout;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
23
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 // Store a local window from the global to allow direct references.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 var window = global.window;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
26
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 var defined = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 document: window && window.document !== undefined,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 setTimeout: setTimeout !== undefined,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
30 sessionStorage: (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 var x = "qunit-test-string";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 try {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 sessionStorage.setItem( x, x );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 sessionStorage.removeItem( x );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
35 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 } catch ( e ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 }() )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
41
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 var fileName = ( sourceFromStacktrace( 0 ) || "" ).replace( /(:\d+)+\)?/, "" ).replace( /.+\//, "" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 var globalStartCalled = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 var runStarted = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
45
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 var toString = Object.prototype.toString,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 hasOwn = Object.prototype.hasOwnProperty;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
48
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 // returns a new Array with the elements that are in a but not in b
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 function diff( a, b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
51 var i, j,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 result = a.slice();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
53
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 for ( i = 0; i < result.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 for ( j = 0; j < b.length; j++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
56 if ( result[ i ] === b[ j ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 result.splice( i, 1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 i--;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 return result;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
65
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 // from jquery.js
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 function inArray( elem, array ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 if ( array.indexOf ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 return array.indexOf( elem );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
71
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 for ( var i = 0, length = array.length; i < length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 if ( array[ i ] === elem ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 return i;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
77
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 return -1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
80
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 * Makes a clone of an object using only Array or Object as base,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
83 * and copies over the own enumerable properties.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 * @param {Object} obj
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 * @return {Object} New object with only the own properties (recursively).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 function objectValues ( obj ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 var key, val,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 vals = QUnit.is( "array", obj ) ? [] : {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 for ( key in obj ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 if ( hasOwn.call( obj, key ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 val = obj[ key ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 vals[ key ] = val === Object( val ) ? objectValues( val ) : val;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 return vals;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
99
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 function extend( a, b, undefOnly ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
101 for ( var prop in b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 if ( hasOwn.call( b, prop ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
103
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
104 // Avoid "Member not found" error in IE8 caused by messing with window.constructor
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 // This block runs on every environment, so `global` is being used instead of `window`
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
106 // to avoid errors on node.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
107 if ( prop !== "constructor" || a !== global ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
108 if ( b[ prop ] === undefined ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
109 delete a[ prop ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
110 } else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
111 a[ prop ] = b[ prop ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
112 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
113 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
114 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
115 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
116
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
117 return a;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
118 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
119
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
120 function objectType( obj ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
121 if ( typeof obj === "undefined" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
122 return "undefined";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
123 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
124
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
125 // Consider: typeof null === object
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
126 if ( obj === null ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
127 return "null";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
128 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
129
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
130 var match = toString.call( obj ).match( /^\[object\s(.*)\]$/ ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
131 type = match && match[ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
132
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
133 switch ( type ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 case "Number":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
135 if ( isNaN( obj ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 return "nan";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 return "number";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 case "String":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
140 case "Boolean":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
141 case "Array":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
142 case "Set":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
143 case "Map":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
144 case "Date":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 case "RegExp":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
146 case "Function":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
147 case "Symbol":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
148 return type.toLowerCase();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
149 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
150 if ( typeof obj === "object" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 return "object";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
152 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
153 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
154
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
155 // Safe object type checking
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
156 function is( type, obj ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
157 return QUnit.objectType( obj ) === type;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
158 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
159
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
160 var getUrlParams = function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
161 var i, current;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
162 var urlParams = {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
163 var location = window.location;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
164 var params = location.search.slice( 1 ).split( "&" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
165 var length = params.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
166
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
167 if ( params[ 0 ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
168 for ( i = 0; i < length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
169 current = params[ i ].split( "=" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
170 current[ 0 ] = decodeURIComponent( current[ 0 ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
171
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
172 // allow just a key to turn on a flag, e.g., test.html?noglobals
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
173 current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
174 if ( urlParams[ current[ 0 ] ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
175 urlParams[ current[ 0 ] ] = [].concat( urlParams[ current[ 0 ] ], current[ 1 ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
176 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
177 urlParams[ current[ 0 ] ] = current[ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
178 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
179 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
180 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
181
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
182 return urlParams;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
183 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
184
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
185 // Doesn't support IE6 to IE9, it will return undefined on these browsers
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
186 // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 function extractStacktrace( e, offset ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 offset = offset === undefined ? 4 : offset;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
189
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 var stack, include, i;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
191
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
192 if ( e.stack ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
193 stack = e.stack.split( "\n" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
194 if ( /^error$/i.test( stack[ 0 ] ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 stack.shift();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
196 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
197 if ( fileName ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
198 include = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
199 for ( i = offset; i < stack.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
200 if ( stack[ i ].indexOf( fileName ) !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
201 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
202 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
203 include.push( stack[ i ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
204 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
205 if ( include.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
206 return include.join( "\n" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
207 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
208 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
209 return stack[ offset ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
210
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
211 // Support: Safari <=6 only
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
212 } else if ( e.sourceURL ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
213
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
214 // exclude useless self-reference for generated Error objects
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
215 if ( /qunit.js$/.test( e.sourceURL ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
216 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
217 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
218
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
219 // for actual exceptions, this is useful
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
220 return e.sourceURL + ":" + e.line;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
221 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
222 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
223
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
224 function sourceFromStacktrace( offset ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
225 var error = new Error();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
226
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
227 // Support: Safari <=7 only, IE <=10 - 11 only
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
228 // Not all browsers generate the `stack` property for `new Error()`, see also #636
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
229 if ( !error.stack ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
230 try {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
231 throw error;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
232 } catch ( err ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
233 error = err;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
234 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
235 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
236
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
237 return extractStacktrace( error, offset );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
238 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
239
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
240 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
241 * Config object: Maintain internal state
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
242 * Later exposed as QUnit.config
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
243 * `config` initialized at top of scope
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
244 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
245 var config = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
246 // The queue of tests to run
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
247 queue: [],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
248
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
249 // block until document ready
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
250 blocking: true,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
251
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
252 // by default, run previously failed tests first
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
253 // very useful in combination with "Hide passed tests" checked
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
254 reorder: true,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
255
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
256 // by default, modify document.title when suite is done
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
257 altertitle: true,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
258
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
259 // HTML Reporter: collapse every test except the first failing test
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
260 // If false, all failing tests will be expanded
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
261 collapse: true,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
262
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
263 // by default, scroll to top of the page when suite is done
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
264 scrolltop: true,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
265
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
266 // depth up-to which object will be dumped
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
267 maxDepth: 5,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
268
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
269 // when enabled, all tests must call expect()
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
270 requireExpects: false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
271
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
272 // add checkboxes that are persisted in the query-string
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
273 // when enabled, the id is set to `true` as a `QUnit.config` property
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
274 urlConfig: [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
275 {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
276 id: "hidepassed",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
277 label: "Hide passed tests",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
278 tooltip: "Only show tests and assertions that fail. Stored as query-strings."
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
279 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
280 {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
281 id: "noglobals",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
282 label: "Check for Globals",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
283 tooltip: "Enabling this will test if any test introduces new properties on the " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
284 "global object (`window` in Browsers). Stored as query-strings."
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
285 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
286 {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
287 id: "notrycatch",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
288 label: "No try-catch",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
289 tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
290 "exceptions in IE reasonable. Stored as query-strings."
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
291 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
292 ],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
293
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
294 // Set of all modules.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
295 modules: [],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
296
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
297 // Stack of nested modules
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
298 moduleStack: [],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
299
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
300 // The first unnamed module
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
301 currentModule: {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
302 name: "",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
303 tests: []
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
304 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
305
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
306 callbacks: {}
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
307 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
308
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
309 var urlParams = defined.document ? getUrlParams() : {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
310
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
311 // Push a loose unnamed module to the modules collection
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
312 config.modules.push( config.currentModule );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
313
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
314 if ( urlParams.filter === true ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
315 delete urlParams.filter;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
316 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
317
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
318 // String search anywhere in moduleName+testName
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
319 config.filter = urlParams.filter;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
320
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
321 config.testId = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
322 if ( urlParams.testId ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
323 // Ensure that urlParams.testId is an array
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
324 urlParams.testId = decodeURIComponent( urlParams.testId ).split( "," );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
325 for (var i = 0; i < urlParams.testId.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
326 config.testId.push( urlParams.testId[ i ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
327 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
328 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
329
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
330 var loggingCallbacks = {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
331
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
332 // Register logging callbacks
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
333 function registerLoggingCallbacks( obj ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
334 var i, l, key,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
335 callbackNames = [ "begin", "done", "log", "testStart", "testDone",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
336 "moduleStart", "moduleDone" ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
337
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
338 function registerLoggingCallback( key ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
339 var loggingCallback = function( callback ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
340 if ( objectType( callback ) !== "function" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
341 throw new Error(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
342 "QUnit logging methods require a callback function as their first parameters."
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
343 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
344 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
345
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
346 config.callbacks[ key ].push( callback );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
347 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
348
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
349 // DEPRECATED: This will be removed on QUnit 2.0.0+
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
350 // Stores the registered functions allowing restoring
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
351 // at verifyLoggingCallbacks() if modified
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
352 loggingCallbacks[ key ] = loggingCallback;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
353
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
354 return loggingCallback;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
355 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
356
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
357 for ( i = 0, l = callbackNames.length; i < l; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
358 key = callbackNames[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
359
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
360 // Initialize key collection of logging callback
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
361 if ( objectType( config.callbacks[ key ] ) === "undefined" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
362 config.callbacks[ key ] = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
363 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
364
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
365 obj[ key ] = registerLoggingCallback( key );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
366 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
367 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
368
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
369 function runLoggingCallbacks( key, args ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
370 var i, l, callbacks;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
371
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
372 callbacks = config.callbacks[ key ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
373 for ( i = 0, l = callbacks.length; i < l; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
374 callbacks[ i ]( args );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
375 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
376 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
377
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
378 // DEPRECATED: This will be removed on 2.0.0+
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
379 // This function verifies if the loggingCallbacks were modified by the user
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
380 // If so, it will restore it, assign the given callback and print a console warning
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
381 function verifyLoggingCallbacks() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
382 var loggingCallback, userCallback;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
383
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
384 for ( loggingCallback in loggingCallbacks ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
385 if ( QUnit[ loggingCallback ] !== loggingCallbacks[ loggingCallback ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
386
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
387 userCallback = QUnit[ loggingCallback ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
388
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
389 // Restore the callback function
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
390 QUnit[ loggingCallback ] = loggingCallbacks[ loggingCallback ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
391
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
392 // Assign the deprecated given callback
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
393 QUnit[ loggingCallback ]( userCallback );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
394
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
395 if ( global.console && global.console.warn ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
396 global.console.warn(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
397 "QUnit." + loggingCallback + " was replaced with a new value.\n" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
398 "Please, check out the documentation on how to apply logging callbacks.\n" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
399 "Reference: http://api.qunitjs.com/category/callbacks/"
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
400 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
401 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
402 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
403 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
404 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
405
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
406 ( function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
407 if ( !defined.document ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
408 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
409 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
410
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
411 // `onErrorFnPrev` initialized at top of scope
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
412 // Preserve other handlers
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
413 var onErrorFnPrev = window.onerror;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
414
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
415 // Cover uncaught exceptions
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
416 // Returning true will suppress the default browser handler,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
417 // returning false will let it run.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
418 window.onerror = function( error, filePath, linerNr ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
419 var ret = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
420 if ( onErrorFnPrev ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
421 ret = onErrorFnPrev( error, filePath, linerNr );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
422 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
423
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
424 // Treat return value as window.onerror itself does,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
425 // Only do our handling if not suppressed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
426 if ( ret !== true ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
427 if ( QUnit.config.current ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
428 if ( QUnit.config.current.ignoreGlobalErrors ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
429 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
430 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
431 QUnit.pushFailure( error, filePath + ":" + linerNr );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
432 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
433 QUnit.test( "global failure", extend(function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
434 QUnit.pushFailure( error, filePath + ":" + linerNr );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
435 }, { validTest: true } ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
436 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
437 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
438 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
439
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
440 return ret;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
441 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
442 } )();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
443
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
444 QUnit.urlParams = urlParams;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
445
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
446 // Figure out if we're running the tests from a server or not
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
447 QUnit.isLocal = !( defined.document && window.location.protocol !== "file:" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
448
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
449 // Expose the current QUnit version
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
450 QUnit.version = "1.20.0";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
451
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
452 extend( QUnit, {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
453
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
454 // call on start of module test to prepend name to all tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
455 module: function( name, testEnvironment, executeNow ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
456 var module, moduleFns;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
457 var currentModule = config.currentModule;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
458
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
459 if ( arguments.length === 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
460 if ( testEnvironment instanceof Function ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
461 executeNow = testEnvironment;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
462 testEnvironment = undefined;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
463 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
464 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
465
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
466 // DEPRECATED: handles setup/teardown functions,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
467 // beforeEach and afterEach should be used instead
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
468 if ( testEnvironment && testEnvironment.setup ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
469 testEnvironment.beforeEach = testEnvironment.setup;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
470 delete testEnvironment.setup;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
471 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
472 if ( testEnvironment && testEnvironment.teardown ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
473 testEnvironment.afterEach = testEnvironment.teardown;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
474 delete testEnvironment.teardown;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
475 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
476
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
477 module = createModule();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
478
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
479 moduleFns = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
480 beforeEach: setHook( module, "beforeEach" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
481 afterEach: setHook( module, "afterEach" )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
482 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
483
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
484 if ( executeNow instanceof Function ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
485 config.moduleStack.push( module );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
486 setCurrentModule( module );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
487 executeNow.call( module.testEnvironment, moduleFns );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
488 config.moduleStack.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
489 module = module.parentModule || currentModule;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
490 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
491
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
492 setCurrentModule( module );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
493
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
494 function createModule() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
495 var parentModule = config.moduleStack.length ?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
496 config.moduleStack.slice( -1 )[ 0 ] : null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
497 var moduleName = parentModule !== null ?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
498 [ parentModule.name, name ].join( " > " ) : name;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
499 var module = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
500 name: moduleName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
501 parentModule: parentModule,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
502 tests: []
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
503 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
504
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
505 var env = {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
506 if ( parentModule ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
507 extend( env, parentModule.testEnvironment );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
508 delete env.beforeEach;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
509 delete env.afterEach;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
510 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
511 extend( env, testEnvironment );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
512 module.testEnvironment = env;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
513
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
514 config.modules.push( module );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
515 return module;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
516 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
517
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
518 function setCurrentModule( module ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
519 config.currentModule = module;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
520 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
521
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
522 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
523
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
524 // DEPRECATED: QUnit.asyncTest() will be removed in QUnit 2.0.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
525 asyncTest: asyncTest,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
526
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
527 test: test,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
528
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
529 skip: skip,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
530
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
531 only: only,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
532
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
533 // DEPRECATED: The functionality of QUnit.start() will be altered in QUnit 2.0.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
534 // In QUnit 2.0, invoking it will ONLY affect the `QUnit.config.autostart` blocking behavior.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
535 start: function( count ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
536 var globalStartAlreadyCalled = globalStartCalled;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
537
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
538 if ( !config.current ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
539 globalStartCalled = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
540
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
541 if ( runStarted ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
542 throw new Error( "Called start() outside of a test context while already started" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
543 } else if ( globalStartAlreadyCalled || count > 1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
544 throw new Error( "Called start() outside of a test context too many times" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
545 } else if ( config.autostart ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
546 throw new Error( "Called start() outside of a test context when " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
547 "QUnit.config.autostart was true" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
548 } else if ( !config.pageLoaded ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
549
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
550 // The page isn't completely loaded yet, so bail out and let `QUnit.load` handle it
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
551 config.autostart = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
552 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
553 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
554 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
555
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
556 // If a test is running, adjust its semaphore
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
557 config.current.semaphore -= count || 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
558
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
559 // If semaphore is non-numeric, throw error
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
560 if ( isNaN( config.current.semaphore ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
561 config.current.semaphore = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
562
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
563 QUnit.pushFailure(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
564 "Called start() with a non-numeric decrement.",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
565 sourceFromStacktrace( 2 )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
566 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
567 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
568 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
569
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
570 // Don't start until equal number of stop-calls
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
571 if ( config.current.semaphore > 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
572 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
573 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
574
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
575 // throw an Error if start is called more often than stop
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
576 if ( config.current.semaphore < 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
577 config.current.semaphore = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
578
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
579 QUnit.pushFailure(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
580 "Called start() while already started (test's semaphore was 0 already)",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
581 sourceFromStacktrace( 2 )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
582 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
583 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
584 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
585 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
586
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
587 resumeProcessing();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
588 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
589
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
590 // DEPRECATED: QUnit.stop() will be removed in QUnit 2.0.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
591 stop: function( count ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
592
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
593 // If there isn't a test running, don't allow QUnit.stop() to be called
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
594 if ( !config.current ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
595 throw new Error( "Called stop() outside of a test context" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
596 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
597
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
598 // If a test is running, adjust its semaphore
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
599 config.current.semaphore += count || 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
600
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
601 pauseProcessing();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
602 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
603
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
604 config: config,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
605
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
606 is: is,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
607
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
608 objectType: objectType,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
609
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
610 extend: extend,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
611
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
612 load: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
613 config.pageLoaded = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
614
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
615 // Initialize the configuration options
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
616 extend( config, {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
617 stats: { all: 0, bad: 0 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
618 moduleStats: { all: 0, bad: 0 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
619 started: 0,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
620 updateRate: 1000,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
621 autostart: true,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
622 filter: ""
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
623 }, true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
624
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
625 config.blocking = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
626
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
627 if ( config.autostart ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
628 resumeProcessing();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
629 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
630 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
631
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
632 stack: function( offset ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
633 offset = ( offset || 0 ) + 2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
634 return sourceFromStacktrace( offset );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
635 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
636 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
637
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
638 registerLoggingCallbacks( QUnit );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
639
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
640 function begin() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
641 var i, l,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
642 modulesLog = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
643
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
644 // If the test run hasn't officially begun yet
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
645 if ( !config.started ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
646
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
647 // Record the time of the test run's beginning
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
648 config.started = now();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
649
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
650 verifyLoggingCallbacks();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
651
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
652 // Delete the loose unnamed module if unused.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
653 if ( config.modules[ 0 ].name === "" && config.modules[ 0 ].tests.length === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
654 config.modules.shift();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
655 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
656
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
657 // Avoid unnecessary information by not logging modules' test environments
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
658 for ( i = 0, l = config.modules.length; i < l; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
659 modulesLog.push({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
660 name: config.modules[ i ].name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
661 tests: config.modules[ i ].tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
662 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
663 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
664
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
665 // The test run is officially beginning now
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
666 runLoggingCallbacks( "begin", {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
667 totalTests: Test.count,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
668 modules: modulesLog
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
669 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
670 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
671
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
672 config.blocking = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
673 process( true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
674 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
675
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
676 function process( last ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
677 function next() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
678 process( last );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
679 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
680 var start = now();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
681 config.depth = ( config.depth || 0 ) + 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
682
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
683 while ( config.queue.length && !config.blocking ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
684 if ( !defined.setTimeout || config.updateRate <= 0 ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
685 ( ( now() - start ) < config.updateRate ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
686 if ( config.current ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
687
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
688 // Reset async tracking for each phase of the Test lifecycle
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
689 config.current.usedAsync = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
690 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
691 config.queue.shift()();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
692 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
693 setTimeout( next, 13 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
694 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
695 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
696 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
697 config.depth--;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
698 if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
699 done();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
700 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
701 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
702
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
703 function pauseProcessing() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
704 config.blocking = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
705
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
706 if ( config.testTimeout && defined.setTimeout ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
707 clearTimeout( config.timeout );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
708 config.timeout = setTimeout(function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
709 if ( config.current ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
710 config.current.semaphore = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
711 QUnit.pushFailure( "Test timed out", sourceFromStacktrace( 2 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
712 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
713 throw new Error( "Test timed out" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
714 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
715 resumeProcessing();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
716 }, config.testTimeout );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
717 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
718 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
719
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
720 function resumeProcessing() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
721 runStarted = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
722
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
723 // A slight delay to allow this iteration of the event loop to finish (more assertions, etc.)
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
724 if ( defined.setTimeout ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
725 setTimeout(function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
726 if ( config.current && config.current.semaphore > 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
727 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
728 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
729 if ( config.timeout ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
730 clearTimeout( config.timeout );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
731 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
732
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
733 begin();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
734 }, 13 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
735 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
736 begin();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
737 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
738 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
739
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
740 function done() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
741 var runtime, passed;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
742
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
743 config.autorun = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
744
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
745 // Log the last module results
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
746 if ( config.previousModule ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
747 runLoggingCallbacks( "moduleDone", {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
748 name: config.previousModule.name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
749 tests: config.previousModule.tests,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
750 failed: config.moduleStats.bad,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
751 passed: config.moduleStats.all - config.moduleStats.bad,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
752 total: config.moduleStats.all,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
753 runtime: now() - config.moduleStats.started
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
754 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
755 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
756 delete config.previousModule;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
757
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
758 runtime = now() - config.started;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
759 passed = config.stats.all - config.stats.bad;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
760
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
761 runLoggingCallbacks( "done", {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
762 failed: config.stats.bad,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
763 passed: passed,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
764 total: config.stats.all,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
765 runtime: runtime
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
766 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
767 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
768
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
769 function setHook( module, hookName ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
770 if ( module.testEnvironment === undefined ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
771 module.testEnvironment = {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
772 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
773
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
774 return function( callback ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
775 module.testEnvironment[ hookName ] = callback;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
776 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
777 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
778
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
779 var focused = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
780
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
781 function Test( settings ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
782 var i, l;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
783
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
784 ++Test.count;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
785
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
786 extend( this, settings );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
787 this.assertions = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
788 this.semaphore = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
789 this.usedAsync = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
790 this.module = config.currentModule;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
791 this.stack = sourceFromStacktrace( 3 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
792
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
793 // Register unique strings
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
794 for ( i = 0, l = this.module.tests; i < l.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
795 if ( this.module.tests[ i ].name === this.testName ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
796 this.testName += " ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
797 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
798 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
799
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
800 this.testId = generateHash( this.module.name, this.testName );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
801
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
802 this.module.tests.push({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
803 name: this.testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
804 testId: this.testId
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
805 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
806
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
807 if ( settings.skip ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
808
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
809 // Skipped tests will fully ignore any sent callback
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
810 this.callback = function() {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
811 this.async = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
812 this.expected = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
813 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
814 this.assert = new Assert( this );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
815 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
816 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
817
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
818 Test.count = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
819
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
820 Test.prototype = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
821 before: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
822 if (
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
823
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
824 // Emit moduleStart when we're switching from one module to another
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
825 this.module !== config.previousModule ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
826
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
827 // They could be equal (both undefined) but if the previousModule property doesn't
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
828 // yet exist it means this is the first test in a suite that isn't wrapped in a
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
829 // module, in which case we'll just emit a moduleStart event for 'undefined'.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
830 // Without this, reporters can get testStart before moduleStart which is a problem.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
831 !hasOwn.call( config, "previousModule" )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
832 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
833 if ( hasOwn.call( config, "previousModule" ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
834 runLoggingCallbacks( "moduleDone", {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
835 name: config.previousModule.name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
836 tests: config.previousModule.tests,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
837 failed: config.moduleStats.bad,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
838 passed: config.moduleStats.all - config.moduleStats.bad,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
839 total: config.moduleStats.all,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
840 runtime: now() - config.moduleStats.started
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
841 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
842 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
843 config.previousModule = this.module;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
844 config.moduleStats = { all: 0, bad: 0, started: now() };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
845 runLoggingCallbacks( "moduleStart", {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
846 name: this.module.name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
847 tests: this.module.tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
848 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
849 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
850
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
851 config.current = this;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
852
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
853 if ( this.module.testEnvironment ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
854 delete this.module.testEnvironment.beforeEach;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
855 delete this.module.testEnvironment.afterEach;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
856 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
857 this.testEnvironment = extend( {}, this.module.testEnvironment );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
858
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
859 this.started = now();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
860 runLoggingCallbacks( "testStart", {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
861 name: this.testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
862 module: this.module.name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
863 testId: this.testId
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
864 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
865
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
866 if ( !config.pollution ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
867 saveGlobal();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
868 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
869 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
870
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
871 run: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
872 var promise;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
873
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
874 config.current = this;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
875
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
876 if ( this.async ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
877 QUnit.stop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
878 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
879
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
880 this.callbackStarted = now();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
881
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
882 if ( config.notrycatch ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
883 runTest( this );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
884 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
885 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
886
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
887 try {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
888 runTest( this );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
889 } catch ( e ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
890 this.pushFailure( "Died on test #" + ( this.assertions.length + 1 ) + " " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
891 this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
892
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
893 // else next test will carry the responsibility
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
894 saveGlobal();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
895
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
896 // Restart the tests if they're blocking
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
897 if ( config.blocking ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
898 QUnit.start();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
899 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
900 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
901
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
902 function runTest( test ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
903 promise = test.callback.call( test.testEnvironment, test.assert );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
904 test.resolvePromise( promise );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
905 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
906 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
907
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
908 after: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
909 checkPollution();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
910 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
911
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
912 queueHook: function( hook, hookName ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
913 var promise,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
914 test = this;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
915 return function runHook() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
916 config.current = test;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
917 if ( config.notrycatch ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
918 callHook();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
919 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
920 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
921 try {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
922 callHook();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
923 } catch ( error ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
924 test.pushFailure( hookName + " failed on " + test.testName + ": " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
925 ( error.message || error ), extractStacktrace( error, 0 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
926 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
927
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
928 function callHook() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
929 promise = hook.call( test.testEnvironment, test.assert );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
930 test.resolvePromise( promise, hookName );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
931 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
932 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
933 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
934
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
935 // Currently only used for module level hooks, can be used to add global level ones
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
936 hooks: function( handler ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
937 var hooks = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
938
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
939 function processHooks( test, module ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
940 if ( module.parentModule ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
941 processHooks( test, module.parentModule );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
942 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
943 if ( module.testEnvironment &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
944 QUnit.objectType( module.testEnvironment[ handler ] ) === "function" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
945 hooks.push( test.queueHook( module.testEnvironment[ handler ], handler ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
946 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
947 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
948
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
949 // Hooks are ignored on skipped tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
950 if ( !this.skip ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
951 processHooks( this, this.module );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
952 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
953 return hooks;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
954 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
955
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
956 finish: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
957 config.current = this;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
958 if ( config.requireExpects && this.expected === null ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
959 this.pushFailure( "Expected number of assertions to be defined, but expect() was " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
960 "not called.", this.stack );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
961 } else if ( this.expected !== null && this.expected !== this.assertions.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
962 this.pushFailure( "Expected " + this.expected + " assertions, but " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
963 this.assertions.length + " were run", this.stack );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
964 } else if ( this.expected === null && !this.assertions.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
965 this.pushFailure( "Expected at least one assertion, but none were run - call " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
966 "expect(0) to accept zero assertions.", this.stack );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
967 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
968
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
969 var i,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
970 bad = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
971
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
972 this.runtime = now() - this.started;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
973 config.stats.all += this.assertions.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
974 config.moduleStats.all += this.assertions.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
975
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
976 for ( i = 0; i < this.assertions.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
977 if ( !this.assertions[ i ].result ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
978 bad++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
979 config.stats.bad++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
980 config.moduleStats.bad++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
981 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
982 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
983
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
984 runLoggingCallbacks( "testDone", {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
985 name: this.testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
986 module: this.module.name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
987 skipped: !!this.skip,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
988 failed: bad,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
989 passed: this.assertions.length - bad,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
990 total: this.assertions.length,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
991 runtime: this.runtime,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
992
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
993 // HTML Reporter use
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
994 assertions: this.assertions,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
995 testId: this.testId,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
996
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
997 // Source of Test
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
998 source: this.stack,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
999
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1000 // DEPRECATED: this property will be removed in 2.0.0, use runtime instead
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1001 duration: this.runtime
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1002 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1003
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1004 // QUnit.reset() is deprecated and will be replaced for a new
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1005 // fixture reset function on QUnit 2.0/2.1.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1006 // It's still called here for backwards compatibility handling
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1007 QUnit.reset();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1008
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1009 config.current = undefined;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1010 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1011
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1012 queue: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1013 var priority,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1014 test = this;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1015
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1016 if ( !this.valid() ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1017 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1018 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1019
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1020 function run() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1021
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1022 // each of these can by async
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1023 synchronize([
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1024 function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1025 test.before();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1026 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1027
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1028 test.hooks( "beforeEach" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1029 function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1030 test.run();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1031 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1032
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1033 test.hooks( "afterEach" ).reverse(),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1034
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1035 function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1036 test.after();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1037 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1038 function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1039 test.finish();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1040 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1041 ]);
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1042 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1043
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1044 // Prioritize previously failed tests, detected from sessionStorage
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1045 priority = QUnit.config.reorder && defined.sessionStorage &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1046 +sessionStorage.getItem( "qunit-test-" + this.module.name + "-" + this.testName );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1047
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1048 return synchronize( run, priority );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1049 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1050
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1051 push: function( result, actual, expected, message, negative ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1052 var source,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1053 details = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1054 module: this.module.name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1055 name: this.testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1056 result: result,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1057 message: message,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1058 actual: actual,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1059 expected: expected,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1060 testId: this.testId,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1061 negative: negative || false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1062 runtime: now() - this.started
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1063 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1064
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1065 if ( !result ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1066 source = sourceFromStacktrace();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1067
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1068 if ( source ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1069 details.source = source;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1070 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1071 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1072
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1073 runLoggingCallbacks( "log", details );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1074
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1075 this.assertions.push({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1076 result: !!result,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1077 message: message
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1078 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1079 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1080
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1081 pushFailure: function( message, source, actual ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1082 if ( !( this instanceof Test ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1083 throw new Error( "pushFailure() assertion outside test context, was " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1084 sourceFromStacktrace( 2 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1085 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1086
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1087 var details = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1088 module: this.module.name,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1089 name: this.testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1090 result: false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1091 message: message || "error",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1092 actual: actual || null,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1093 testId: this.testId,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1094 runtime: now() - this.started
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1095 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1096
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1097 if ( source ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1098 details.source = source;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1099 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1100
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1101 runLoggingCallbacks( "log", details );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1102
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1103 this.assertions.push({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1104 result: false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1105 message: message
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1106 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1107 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1108
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1109 resolvePromise: function( promise, phase ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1110 var then, message,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1111 test = this;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1112 if ( promise != null ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1113 then = promise.then;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1114 if ( QUnit.objectType( then ) === "function" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1115 QUnit.stop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1116 then.call(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1117 promise,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1118 function() { QUnit.start(); },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1119 function( error ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1120 message = "Promise rejected " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1121 ( !phase ? "during" : phase.replace( /Each$/, "" ) ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1122 " " + test.testName + ": " + ( error.message || error );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1123 test.pushFailure( message, extractStacktrace( error, 0 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1124
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1125 // else next test will carry the responsibility
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1126 saveGlobal();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1127
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1128 // Unblock
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1129 QUnit.start();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1130 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1131 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1132 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1133 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1134 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1135
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1136 valid: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1137 var include,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1138 filter = config.filter && config.filter.toLowerCase(),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1139 module = QUnit.urlParams.module && QUnit.urlParams.module.toLowerCase(),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1140 fullName = ( this.module.name + ": " + this.testName ).toLowerCase();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1141
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1142 function testInModuleChain( testModule ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1143 var testModuleName = testModule.name ? testModule.name.toLowerCase() : null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1144 if ( testModuleName === module ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1145 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1146 } else if ( testModule.parentModule ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1147 return testInModuleChain( testModule.parentModule );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1148 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1149 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1150 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1151 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1152
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1153 // Internally-generated tests are always valid
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1154 if ( this.callback && this.callback.validTest ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1155 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1156 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1157
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1158 if ( config.testId.length > 0 && inArray( this.testId, config.testId ) < 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1159 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1160 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1161
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1162 if ( module && !testInModuleChain( this.module ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1163 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1164 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1165
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1166 if ( !filter ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1167 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1168 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1169
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1170 include = filter.charAt( 0 ) !== "!";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1171 if ( !include ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1172 filter = filter.slice( 1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1173 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1174
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1175 // If the filter matches, we need to honour include
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1176 if ( fullName.indexOf( filter ) !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1177 return include;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1178 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1179
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1180 // Otherwise, do the opposite
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1181 return !include;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1182 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1183 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1184
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1185 // Resets the test setup. Useful for tests that modify the DOM.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1186 /*
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1187 DEPRECATED: Use multiple tests instead of resetting inside a test.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1188 Use testStart or testDone for custom cleanup.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1189 This method will throw an error in 2.0, and will be removed in 2.1
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1190 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1191 QUnit.reset = function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1192
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1193 // Return on non-browser environments
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1194 // This is necessary to not break on node tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1195 if ( !defined.document ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1196 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1197 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1198
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1199 var fixture = defined.document && document.getElementById &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1200 document.getElementById( "qunit-fixture" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1201
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1202 if ( fixture ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1203 fixture.innerHTML = config.fixture;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1204 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1205 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1206
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1207 QUnit.pushFailure = function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1208 if ( !QUnit.config.current ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1209 throw new Error( "pushFailure() assertion outside test context, in " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1210 sourceFromStacktrace( 2 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1211 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1212
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1213 // Gets current test obj
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1214 var currentTest = QUnit.config.current;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1215
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1216 return currentTest.pushFailure.apply( currentTest, arguments );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1217 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1218
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1219 // Based on Java's String.hashCode, a simple but not
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1220 // rigorously collision resistant hashing function
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1221 function generateHash( module, testName ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1222 var hex,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1223 i = 0,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1224 hash = 0,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1225 str = module + "\x1C" + testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1226 len = str.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1227
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1228 for ( ; i < len; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1229 hash = ( ( hash << 5 ) - hash ) + str.charCodeAt( i );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1230 hash |= 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1231 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1232
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1233 // Convert the possibly negative integer hash code into an 8 character hex string, which isn't
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1234 // strictly necessary but increases user understanding that the id is a SHA-like hash
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1235 hex = ( 0x100000000 + hash ).toString( 16 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1236 if ( hex.length < 8 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1237 hex = "0000000" + hex;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1238 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1239
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1240 return hex.slice( -8 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1241 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1242
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1243 function synchronize( callback, priority ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1244 var last = !priority;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1245
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1246 if ( QUnit.objectType( callback ) === "array" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1247 while ( callback.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1248 synchronize( callback.shift() );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1249 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1250 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1251 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1252
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1253 if ( priority ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1254 priorityFill( callback );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1255 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1256 config.queue.push( callback );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1257 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1258
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1259 if ( config.autorun && !config.blocking ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1260 process( last );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1261 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1262 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1263
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1264 // Place previously failed tests on a queue priority line, respecting the order they get assigned.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1265 function priorityFill( callback ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1266 var queue, prioritizedQueue;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1267
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1268 queue = config.queue.slice( priorityFill.pos );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1269 prioritizedQueue = config.queue.slice( 0, -config.queue.length + priorityFill.pos );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1270
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1271 queue.unshift( callback );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1272 queue.unshift.apply( queue, prioritizedQueue );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1273
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1274 config.queue = queue;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1275
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1276 priorityFill.pos += 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1277 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1278 priorityFill.pos = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1279
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1280 function saveGlobal() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1281 config.pollution = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1282
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1283 if ( config.noglobals ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1284 for ( var key in global ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1285 if ( hasOwn.call( global, key ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1286
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1287 // in Opera sometimes DOM element ids show up here, ignore them
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1288 if ( /^qunit-test-output/.test( key ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1289 continue;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1290 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1291 config.pollution.push( key );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1292 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1293 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1294 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1295 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1296
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1297 function checkPollution() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1298 var newGlobals,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1299 deletedGlobals,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1300 old = config.pollution;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1301
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1302 saveGlobal();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1303
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1304 newGlobals = diff( config.pollution, old );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1305 if ( newGlobals.length > 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1306 QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join( ", " ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1307 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1308
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1309 deletedGlobals = diff( old, config.pollution );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1310 if ( deletedGlobals.length > 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1311 QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join( ", " ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1312 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1313 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1314
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1315 // Will be exposed as QUnit.asyncTest
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1316 function asyncTest( testName, expected, callback ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1317 if ( arguments.length === 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1318 callback = expected;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1319 expected = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1320 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1321
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1322 QUnit.test( testName, expected, callback, true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1323 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1324
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1325 // Will be exposed as QUnit.test
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1326 function test( testName, expected, callback, async ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1327 if ( focused ) { return; }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1328
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1329 var newTest;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1330
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1331 if ( arguments.length === 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1332 callback = expected;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1333 expected = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1334 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1335
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1336 newTest = new Test({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1337 testName: testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1338 expected: expected,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1339 async: async,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1340 callback: callback
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1341 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1342
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1343 newTest.queue();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1344 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1345
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1346 // Will be exposed as QUnit.skip
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1347 function skip( testName ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1348 if ( focused ) { return; }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1349
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1350 var test = new Test({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1351 testName: testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1352 skip: true
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1353 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1354
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1355 test.queue();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1356 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1357
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1358 // Will be exposed as QUnit.only
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1359 function only( testName, expected, callback, async ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1360 var newTest;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1361
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1362 if ( focused ) { return; }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1363
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1364 QUnit.config.queue.length = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1365 focused = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1366
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1367 if ( arguments.length === 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1368 callback = expected;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1369 expected = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1370 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1371
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1372 newTest = new Test({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1373 testName: testName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1374 expected: expected,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1375 async: async,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1376 callback: callback
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1377 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1378
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1379 newTest.queue();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1380 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1381
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1382 function Assert( testContext ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1383 this.test = testContext;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1384 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1385
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1386 // Assert helpers
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1387 QUnit.assert = Assert.prototype = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1388
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1389 // Specify the number of expected assertions to guarantee that failed test
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1390 // (no assertions are run at all) don't slip through.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1391 expect: function( asserts ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1392 if ( arguments.length === 1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1393 this.test.expected = asserts;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1394 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1395 return this.test.expected;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1396 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1397 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1398
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1399 // Increment this Test's semaphore counter, then return a function that
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1400 // decrements that counter a maximum of once.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1401 async: function( count ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1402 var test = this.test,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1403 popped = false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1404 acceptCallCount = count;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1405
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1406 if ( typeof acceptCallCount === "undefined" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1407 acceptCallCount = 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1408 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1409
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1410 test.semaphore += 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1411 test.usedAsync = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1412 pauseProcessing();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1413
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1414 return function done() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1415
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1416 if ( popped ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1417 test.pushFailure( "Too many calls to the `assert.async` callback",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1418 sourceFromStacktrace( 2 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1419 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1420 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1421 acceptCallCount -= 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1422 if ( acceptCallCount > 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1423 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1424 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1425
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1426 test.semaphore -= 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1427 popped = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1428 resumeProcessing();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1429 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1430 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1431
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1432 // Exports test.push() to the user API
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1433 push: function( /* result, actual, expected, message, negative */ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1434 var assert = this,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1435 currentTest = ( assert instanceof Assert && assert.test ) || QUnit.config.current;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1436
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1437 // Backwards compatibility fix.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1438 // Allows the direct use of global exported assertions and QUnit.assert.*
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1439 // Although, it's use is not recommended as it can leak assertions
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1440 // to other tests from async tests, because we only get a reference to the current test,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1441 // not exactly the test where assertion were intended to be called.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1442 if ( !currentTest ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1443 throw new Error( "assertion outside test context, in " + sourceFromStacktrace( 2 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1444 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1445
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1446 if ( currentTest.usedAsync === true && currentTest.semaphore === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1447 currentTest.pushFailure( "Assertion after the final `assert.async` was resolved",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1448 sourceFromStacktrace( 2 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1449
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1450 // Allow this assertion to continue running anyway...
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1451 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1452
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1453 if ( !( assert instanceof Assert ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1454 assert = currentTest.assert;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1455 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1456 return assert.test.push.apply( assert.test, arguments );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1457 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1458
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1459 ok: function( result, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1460 message = message || ( result ? "okay" : "failed, expected argument to be truthy, was: " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1461 QUnit.dump.parse( result ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1462 this.push( !!result, result, true, message );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1463 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1464
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1465 notOk: function( result, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1466 message = message || ( !result ? "okay" : "failed, expected argument to be falsy, was: " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1467 QUnit.dump.parse( result ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1468 this.push( !result, result, false, message, true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1469 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1470
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1471 equal: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1472 /*jshint eqeqeq:false */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1473 this.push( expected == actual, actual, expected, message );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1474 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1475
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1476 notEqual: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1477 /*jshint eqeqeq:false */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1478 this.push( expected != actual, actual, expected, message, true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1479 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1480
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1481 propEqual: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1482 actual = objectValues( actual );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1483 expected = objectValues( expected );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1484 this.push( QUnit.equiv( actual, expected ), actual, expected, message );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1485 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1486
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1487 notPropEqual: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1488 actual = objectValues( actual );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1489 expected = objectValues( expected );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1490 this.push( !QUnit.equiv( actual, expected ), actual, expected, message, true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1491 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1492
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1493 deepEqual: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1494 this.push( QUnit.equiv( actual, expected ), actual, expected, message );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1495 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1496
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1497 notDeepEqual: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1498 this.push( !QUnit.equiv( actual, expected ), actual, expected, message, true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1499 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1500
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1501 strictEqual: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1502 this.push( expected === actual, actual, expected, message );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1503 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1504
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1505 notStrictEqual: function( actual, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1506 this.push( expected !== actual, actual, expected, message, true );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1507 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1508
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1509 "throws": function( block, expected, message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1510 var actual, expectedType,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1511 expectedOutput = expected,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1512 ok = false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1513 currentTest = ( this instanceof Assert && this.test ) || QUnit.config.current;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1514
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1515 // 'expected' is optional unless doing string comparison
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1516 if ( message == null && typeof expected === "string" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1517 message = expected;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1518 expected = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1519 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1520
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1521 currentTest.ignoreGlobalErrors = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1522 try {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1523 block.call( currentTest.testEnvironment );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1524 } catch (e) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1525 actual = e;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1526 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1527 currentTest.ignoreGlobalErrors = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1528
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1529 if ( actual ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1530 expectedType = QUnit.objectType( expected );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1531
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1532 // we don't want to validate thrown error
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1533 if ( !expected ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1534 ok = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1535 expectedOutput = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1536
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1537 // expected is a regexp
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1538 } else if ( expectedType === "regexp" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1539 ok = expected.test( errorString( actual ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1540
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1541 // expected is a string
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1542 } else if ( expectedType === "string" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1543 ok = expected === errorString( actual );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1544
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1545 // expected is a constructor, maybe an Error constructor
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1546 } else if ( expectedType === "function" && actual instanceof expected ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1547 ok = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1548
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1549 // expected is an Error object
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1550 } else if ( expectedType === "object" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1551 ok = actual instanceof expected.constructor &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1552 actual.name === expected.name &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1553 actual.message === expected.message;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1554
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1555 // expected is a validation function which returns true if validation passed
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1556 } else if ( expectedType === "function" && expected.call( {}, actual ) === true ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1557 expectedOutput = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1558 ok = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1559 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1560 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1561
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1562 currentTest.assert.push( ok, actual, expectedOutput, message );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1563 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1564 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1565
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1566 // Provide an alternative to assert.throws(), for environments that consider throws a reserved word
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1567 // Known to us are: Closure Compiler, Narwhal
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1568 (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1569 /*jshint sub:true */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1570 Assert.prototype.raises = Assert.prototype[ "throws" ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1571 }());
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1572
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1573 function errorString( error ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1574 var name, message,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1575 resultErrorString = error.toString();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1576 if ( resultErrorString.substring( 0, 7 ) === "[object" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1577 name = error.name ? error.name.toString() : "Error";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1578 message = error.message ? error.message.toString() : "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1579 if ( name && message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1580 return name + ": " + message;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1581 } else if ( name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1582 return name;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1583 } else if ( message ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1584 return message;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1585 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1586 return "Error";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1587 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1588 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1589 return resultErrorString;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1590 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1591 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1592
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1593 // Test for equality any JavaScript type.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1594 // Author: Philippe Rathé <prathe@gmail.com>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1595 QUnit.equiv = (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1596
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1597 // Stack to decide between skip/abort functions
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1598 var callers = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1599
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1600 // Stack to avoiding loops from circular referencing
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1601 var parents = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1602 var parentsB = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1603
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1604 function useStrictEquality( b, a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1605
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1606 /*jshint eqeqeq:false */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1607 if ( b instanceof a.constructor || a instanceof b.constructor ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1608
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1609 // To catch short annotation VS 'new' annotation of a declaration. e.g.:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1610 // `var i = 1;`
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1611 // `var j = new Number(1);`
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1612 return a == b;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1613 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1614 return a === b;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1615 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1616 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1617
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1618 function compareConstructors( a, b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1619 var getProto = Object.getPrototypeOf || function( obj ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1620
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1621 /*jshint proto: true */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1622 return obj.__proto__;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1623 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1624 var protoA = getProto( a );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1625 var protoB = getProto( b );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1626
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1627 // Comparing constructors is more strict than using `instanceof`
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1628 if ( a.constructor === b.constructor ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1629 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1630 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1631
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1632 // Ref #851
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1633 // If the obj prototype descends from a null constructor, treat it
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1634 // as a null prototype.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1635 if ( protoA && protoA.constructor === null ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1636 protoA = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1637 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1638 if ( protoB && protoB.constructor === null ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1639 protoB = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1640 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1641
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1642 // Allow objects with no prototype to be equivalent to
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1643 // objects with Object as their constructor.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1644 if ( ( protoA === null && protoB === Object.prototype ) ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1645 ( protoB === null && protoA === Object.prototype ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1646 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1647 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1648
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1649 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1650 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1651
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1652 var callbacks = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1653 "string": useStrictEquality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1654 "boolean": useStrictEquality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1655 "number": useStrictEquality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1656 "null": useStrictEquality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1657 "undefined": useStrictEquality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1658 "symbol": useStrictEquality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1659
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1660 "nan": function( b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1661 return isNaN( b );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1662 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1663
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1664 "date": function( b, a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1665 return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1666 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1667
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1668 "regexp": function( b, a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1669 return QUnit.objectType( b ) === "regexp" &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1670
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1671 // The regex itself
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1672 a.source === b.source &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1673
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1674 // And its modifiers
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1675 a.global === b.global &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1676
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1677 // (gmi) ...
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1678 a.ignoreCase === b.ignoreCase &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1679 a.multiline === b.multiline &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1680 a.sticky === b.sticky;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1681 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1682
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1683 // - skip when the property is a method of an instance (OOP)
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1684 // - abort otherwise,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1685 // initial === would have catch identical references anyway
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1686 "function": function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1687 var caller = callers[ callers.length - 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1688 return caller !== Object && typeof caller !== "undefined";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1689 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1690
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1691 "array": function( b, a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1692 var i, j, len, loop, aCircular, bCircular;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1693
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1694 // b could be an object literal here
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1695 if ( QUnit.objectType( b ) !== "array" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1696 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1697 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1698
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1699 len = a.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1700 if ( len !== b.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1701 // safe and faster
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1702 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1703 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1704
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1705 // Track reference to avoid circular references
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1706 parents.push( a );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1707 parentsB.push( b );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1708 for ( i = 0; i < len; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1709 loop = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1710 for ( j = 0; j < parents.length; j++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1711 aCircular = parents[ j ] === a[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1712 bCircular = parentsB[ j ] === b[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1713 if ( aCircular || bCircular ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1714 if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1715 loop = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1716 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1717 parents.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1718 parentsB.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1719 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1720 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1721 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1722 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1723 if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1724 parents.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1725 parentsB.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1726 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1727 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1728 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1729 parents.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1730 parentsB.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1731 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1732 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1733
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1734 "set": function( b, a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1735 var aArray, bArray;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1736
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1737 // `b` could be any object here
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1738 if ( QUnit.objectType( b ) !== "set" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1739 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1740 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1741
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1742 aArray = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1743 a.forEach( function( v ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1744 aArray.push( v );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1745 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1746 bArray = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1747 b.forEach( function( v ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1748 bArray.push( v );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1749 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1750
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1751 return innerEquiv( bArray, aArray );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1752 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1753
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1754 "map": function( b, a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1755 var aArray, bArray;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1756
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1757 // `b` could be any object here
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1758 if ( QUnit.objectType( b ) !== "map" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1759 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1760 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1761
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1762 aArray = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1763 a.forEach( function( v, k ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1764 aArray.push( [ k, v ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1765 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1766 bArray = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1767 b.forEach( function( v, k ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1768 bArray.push( [ k, v ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1769 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1770
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1771 return innerEquiv( bArray, aArray );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1772 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1773
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1774 "object": function( b, a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1775 var i, j, loop, aCircular, bCircular;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1776
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1777 // Default to true
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1778 var eq = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1779 var aProperties = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1780 var bProperties = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1781
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1782 if ( compareConstructors( a, b ) === false ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1783 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1784 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1785
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1786 // Stack constructor before traversing properties
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1787 callers.push( a.constructor );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1788
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1789 // Track reference to avoid circular references
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1790 parents.push( a );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1791 parentsB.push( b );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1792
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1793 // Be strict: don't ensure hasOwnProperty and go deep
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1794 for ( i in a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1795 loop = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1796 for ( j = 0; j < parents.length; j++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1797 aCircular = parents[ j ] === a[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1798 bCircular = parentsB[ j ] === b[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1799 if ( aCircular || bCircular ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1800 if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1801 loop = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1802 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1803 eq = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1804 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1805 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1806 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1807 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1808 aProperties.push( i );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1809 if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1810 eq = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1811 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1812 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1813 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1814
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1815 parents.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1816 parentsB.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1817
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1818 // Unstack, we are done
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1819 callers.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1820
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1821 for ( i in b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1822
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1823 // Collect b's properties
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1824 bProperties.push( i );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1825 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1826
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1827 // Ensures identical properties name
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1828 return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1829 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1830 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1831
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1832 function typeEquiv( a, b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1833 var prop = QUnit.objectType( a );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1834 return callbacks[ prop ]( b, a );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1835 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1836
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1837 // The real equiv function
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1838 function innerEquiv() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1839 var args = [].slice.apply( arguments );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1840 if ( args.length < 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1841
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1842 // End transition
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1843 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1844 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1845
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1846 return ( (function( a, b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1847 if ( a === b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1848
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1849 // Catch the most you can
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1850 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1851 } else if ( a === null || b === null || typeof a === "undefined" ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1852 typeof b === "undefined" ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1853 QUnit.objectType( a ) !== QUnit.objectType( b ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1854
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1855 // Don't lose time with error prone cases
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1856 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1857 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1858 return typeEquiv( a, b );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1859 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1860
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1861 // Apply transition with (1..n) arguments
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1862 }( args[ 0 ], args[ 1 ] ) ) &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1863 innerEquiv.apply( this, args.splice( 1, args.length - 1 ) ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1864 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1865
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1866 return innerEquiv;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1867 }());
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1868
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1869 // Based on jsDump by Ariel Flesler
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1870 // http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1871 QUnit.dump = (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1872 function quote( str ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1873 return "\"" + str.toString().replace( /\\/g, "\\\\" ).replace( /"/g, "\\\"" ) + "\"";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1874 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1875 function literal( o ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1876 return o + "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1877 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1878 function join( pre, arr, post ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1879 var s = dump.separator(),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1880 base = dump.indent(),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1881 inner = dump.indent( 1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1882 if ( arr.join ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1883 arr = arr.join( "," + s + inner );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1884 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1885 if ( !arr ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1886 return pre + post;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1887 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1888 return [ pre, inner + arr, base + post ].join( s );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1889 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1890 function array( arr, stack ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1891 var i = arr.length,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1892 ret = new Array( i );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1893
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1894 if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1895 return "[object Array]";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1896 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1897
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1898 this.up();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1899 while ( i-- ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1900 ret[ i ] = this.parse( arr[ i ], undefined, stack );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1901 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1902 this.down();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1903 return join( "[", ret, "]" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1904 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1905
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1906 var reName = /^function (\w+)/,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1907 dump = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1908
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1909 // objType is used mostly internally, you can fix a (custom) type in advance
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1910 parse: function( obj, objType, stack ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1911 stack = stack || [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1912 var res, parser, parserType,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1913 inStack = inArray( obj, stack );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1914
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1915 if ( inStack !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1916 return "recursion(" + ( inStack - stack.length ) + ")";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1917 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1918
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1919 objType = objType || this.typeOf( obj );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1920 parser = this.parsers[ objType ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1921 parserType = typeof parser;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1922
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1923 if ( parserType === "function" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1924 stack.push( obj );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1925 res = parser.call( this, obj, stack );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1926 stack.pop();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1927 return res;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1928 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1929 return ( parserType === "string" ) ? parser : this.parsers.error;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1930 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1931 typeOf: function( obj ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1932 var type;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1933 if ( obj === null ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1934 type = "null";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1935 } else if ( typeof obj === "undefined" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1936 type = "undefined";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1937 } else if ( QUnit.is( "regexp", obj ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1938 type = "regexp";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1939 } else if ( QUnit.is( "date", obj ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1940 type = "date";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1941 } else if ( QUnit.is( "function", obj ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1942 type = "function";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1943 } else if ( obj.setInterval !== undefined &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1944 obj.document !== undefined &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1945 obj.nodeType === undefined ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1946 type = "window";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1947 } else if ( obj.nodeType === 9 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1948 type = "document";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1949 } else if ( obj.nodeType ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1950 type = "node";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1951 } else if (
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1952
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1953 // native arrays
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1954 toString.call( obj ) === "[object Array]" ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1955
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1956 // NodeList objects
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1957 ( typeof obj.length === "number" && obj.item !== undefined &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1958 ( obj.length ? obj.item( 0 ) === obj[ 0 ] : ( obj.item( 0 ) === null &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1959 obj[ 0 ] === undefined ) ) )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1960 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1961 type = "array";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1962 } else if ( obj.constructor === Error.prototype.constructor ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1963 type = "error";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1964 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1965 type = typeof obj;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1966 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1967 return type;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1968 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1969 separator: function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1970 return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&#160;" : " ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1971 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1972 // extra can be a number, shortcut for increasing-calling-decreasing
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1973 indent: function( extra ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1974 if ( !this.multiline ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1975 return "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1976 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1977 var chr = this.indentChar;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1978 if ( this.HTML ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1979 chr = chr.replace( /\t/g, " " ).replace( / /g, "&#160;" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1980 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1981 return new Array( this.depth + ( extra || 0 ) ).join( chr );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1982 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1983 up: function( a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1984 this.depth += a || 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1985 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1986 down: function( a ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1987 this.depth -= a || 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1988 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1989 setParser: function( name, parser ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1990 this.parsers[ name ] = parser;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1991 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1992 // The next 3 are exposed so you can use them
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1993 quote: quote,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1994 literal: literal,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1995 join: join,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1996 //
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1997 depth: 1,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1998 maxDepth: QUnit.config.maxDepth,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
1999
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2000 // This is the list of parsers, to modify them, use dump.setParser
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2001 parsers: {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2002 window: "[Window]",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2003 document: "[Document]",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2004 error: function( error ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2005 return "Error(\"" + error.message + "\")";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2006 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2007 unknown: "[Unknown]",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2008 "null": "null",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2009 "undefined": "undefined",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2010 "function": function( fn ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2011 var ret = "function",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2012
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2013 // functions never have name in IE
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2014 name = "name" in fn ? fn.name : ( reName.exec( fn ) || [] )[ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2015
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2016 if ( name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2017 ret += " " + name;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2018 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2019 ret += "( ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2020
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2021 ret = [ ret, dump.parse( fn, "functionArgs" ), "){" ].join( "" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2022 return join( ret, dump.parse( fn, "functionCode" ), "}" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2023 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2024 array: array,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2025 nodelist: array,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2026 "arguments": array,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2027 object: function( map, stack ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2028 var keys, key, val, i, nonEnumerableProperties,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2029 ret = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2030
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2031 if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2032 return "[object Object]";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2033 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2034
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2035 dump.up();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2036 keys = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2037 for ( key in map ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2038 keys.push( key );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2039 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2040
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2041 // Some properties are not always enumerable on Error objects.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2042 nonEnumerableProperties = [ "message", "name" ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2043 for ( i in nonEnumerableProperties ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2044 key = nonEnumerableProperties[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2045 if ( key in map && inArray( key, keys ) < 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2046 keys.push( key );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2047 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2048 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2049 keys.sort();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2050 for ( i = 0; i < keys.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2051 key = keys[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2052 val = map[ key ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2053 ret.push( dump.parse( key, "key" ) + ": " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2054 dump.parse( val, undefined, stack ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2055 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2056 dump.down();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2057 return join( "{", ret, "}" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2058 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2059 node: function( node ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2060 var len, i, val,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2061 open = dump.HTML ? "&lt;" : "<",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2062 close = dump.HTML ? "&gt;" : ">",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2063 tag = node.nodeName.toLowerCase(),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2064 ret = open + tag,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2065 attrs = node.attributes;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2066
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2067 if ( attrs ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2068 for ( i = 0, len = attrs.length; i < len; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2069 val = attrs[ i ].nodeValue;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2070
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2071 // IE6 includes all attributes in .attributes, even ones not explicitly
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2072 // set. Those have values like undefined, null, 0, false, "" or
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2073 // "inherit".
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2074 if ( val && val !== "inherit" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2075 ret += " " + attrs[ i ].nodeName + "=" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2076 dump.parse( val, "attribute" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2077 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2078 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2079 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2080 ret += close;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2081
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2082 // Show content of TextNode or CDATASection
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2083 if ( node.nodeType === 3 || node.nodeType === 4 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2084 ret += node.nodeValue;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2085 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2086
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2087 return ret + open + "/" + tag + close;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2088 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2089
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2090 // function calls it internally, it's the arguments part of the function
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2091 functionArgs: function( fn ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2092 var args,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2093 l = fn.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2094
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2095 if ( !l ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2096 return "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2097 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2098
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2099 args = new Array( l );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2100 while ( l-- ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2101
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2102 // 97 is 'a'
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2103 args[ l ] = String.fromCharCode( 97 + l );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2104 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2105 return " " + args.join( ", " ) + " ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2106 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2107 // object calls it internally, the key part of an item in a map
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2108 key: quote,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2109 // function calls it internally, it's the content of the function
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2110 functionCode: "[code]",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2111 // node calls it internally, it's an html attribute value
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2112 attribute: quote,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2113 string: quote,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2114 date: quote,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2115 regexp: literal,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2116 number: literal,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2117 "boolean": literal
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2118 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2119 // if true, entities are escaped ( <, >, \t, space and \n )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2120 HTML: false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2121 // indentation unit
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2122 indentChar: " ",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2123 // if true, items in a collection, are separated by a \n, else just a space.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2124 multiline: true
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2125 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2126
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2127 return dump;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2128 }());
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2129
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2130 // back compat
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2131 QUnit.jsDump = QUnit.dump;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2132
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2133 // For browser, export only select globals
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2134 if ( defined.document ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2135
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2136 // Deprecated
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2137 // Extend assert methods to QUnit and Global scope through Backwards compatibility
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2138 (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2139 var i,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2140 assertions = Assert.prototype;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2141
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2142 function applyCurrent( current ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2143 return function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2144 var assert = new Assert( QUnit.config.current );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2145 current.apply( assert, arguments );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2146 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2147 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2148
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2149 for ( i in assertions ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2150 QUnit[ i ] = applyCurrent( assertions[ i ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2151 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2152 })();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2153
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2154 (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2155 var i, l,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2156 keys = [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2157 "test",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2158 "module",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2159 "expect",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2160 "asyncTest",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2161 "start",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2162 "stop",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2163 "ok",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2164 "notOk",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2165 "equal",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2166 "notEqual",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2167 "propEqual",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2168 "notPropEqual",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2169 "deepEqual",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2170 "notDeepEqual",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2171 "strictEqual",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2172 "notStrictEqual",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2173 "throws",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2174 "raises"
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2175 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2176
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2177 for ( i = 0, l = keys.length; i < l; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2178 window[ keys[ i ] ] = QUnit[ keys[ i ] ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2179 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2180 })();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2181
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2182 window.QUnit = QUnit;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2183 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2184
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2185 // For nodejs
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2186 if ( typeof module !== "undefined" && module && module.exports ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2187 module.exports = QUnit;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2188
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2189 // For consistency with CommonJS environments' exports
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2190 module.exports.QUnit = QUnit;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2191 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2192
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2193 // For CommonJS with exports, but without module.exports, like Rhino
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2194 if ( typeof exports !== "undefined" && exports ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2195 exports.QUnit = QUnit;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2196 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2197
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2198 if ( typeof define === "function" && define.amd ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2199 define( function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2200 return QUnit;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2201 } );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2202 QUnit.config.autostart = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2203 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2204
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2205 /*
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2206 * This file is a modified version of google-diff-match-patch's JavaScript implementation
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2207 * (https://code.google.com/p/google-diff-match-patch/source/browse/trunk/javascript/diff_match_patch_uncompressed.js),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2208 * modifications are licensed as more fully set forth in LICENSE.txt.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2209 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2210 * The original source of google-diff-match-patch is attributable and licensed as follows:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2211 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2212 * Copyright 2006 Google Inc.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2213 * http://code.google.com/p/google-diff-match-patch/
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2214 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2215 * Licensed under the Apache License, Version 2.0 (the "License");
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2216 * you may not use this file except in compliance with the License.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2217 * You may obtain a copy of the License at
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2218 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2219 * http://www.apache.org/licenses/LICENSE-2.0
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2220 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2221 * Unless required by applicable law or agreed to in writing, software
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2222 * distributed under the License is distributed on an "AS IS" BASIS,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2223 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2224 * See the License for the specific language governing permissions and
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2225 * limitations under the License.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2226 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2227 * More Info:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2228 * https://code.google.com/p/google-diff-match-patch/
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2229 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2230 * Usage: QUnit.diff(expected, actual)
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2231 *
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2232 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2233 QUnit.diff = ( function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2234 function DiffMatchPatch() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2235 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2236
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2237 // DIFF FUNCTIONS
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2238
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2239 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2240 * The data structure representing a diff is an array of tuples:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2241 * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2242 * which means: delete 'Hello', add 'Goodbye' and keep ' world.'
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2243 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2244 var DIFF_DELETE = -1,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2245 DIFF_INSERT = 1,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2246 DIFF_EQUAL = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2247
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2248 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2249 * Find the differences between two texts. Simplifies the problem by stripping
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2250 * any common prefix or suffix off the texts before diffing.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2251 * @param {string} text1 Old string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2252 * @param {string} text2 New string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2253 * @param {boolean=} optChecklines Optional speedup flag. If present and false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2254 * then don't run a line-level diff first to identify the changed areas.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2255 * Defaults to true, which does a faster, slightly less optimal diff.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2256 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2257 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2258 DiffMatchPatch.prototype.DiffMain = function( text1, text2, optChecklines ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2259 var deadline, checklines, commonlength,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2260 commonprefix, commonsuffix, diffs;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2261
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2262 // The diff must be complete in up to 1 second.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2263 deadline = ( new Date() ).getTime() + 1000;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2264
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2265 // Check for null inputs.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2266 if ( text1 === null || text2 === null ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2267 throw new Error( "Null input. (DiffMain)" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2268 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2269
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2270 // Check for equality (speedup).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2271 if ( text1 === text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2272 if ( text1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2273 return [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2274 [ DIFF_EQUAL, text1 ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2275 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2276 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2277 return [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2278 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2279
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2280 if ( typeof optChecklines === "undefined" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2281 optChecklines = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2282 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2283
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2284 checklines = optChecklines;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2285
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2286 // Trim off common prefix (speedup).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2287 commonlength = this.diffCommonPrefix( text1, text2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2288 commonprefix = text1.substring( 0, commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2289 text1 = text1.substring( commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2290 text2 = text2.substring( commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2291
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2292 // Trim off common suffix (speedup).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2293 commonlength = this.diffCommonSuffix( text1, text2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2294 commonsuffix = text1.substring( text1.length - commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2295 text1 = text1.substring( 0, text1.length - commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2296 text2 = text2.substring( 0, text2.length - commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2297
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2298 // Compute the diff on the middle block.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2299 diffs = this.diffCompute( text1, text2, checklines, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2300
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2301 // Restore the prefix and suffix.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2302 if ( commonprefix ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2303 diffs.unshift( [ DIFF_EQUAL, commonprefix ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2304 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2305 if ( commonsuffix ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2306 diffs.push( [ DIFF_EQUAL, commonsuffix ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2307 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2308 this.diffCleanupMerge( diffs );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2309 return diffs;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2310 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2311
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2312 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2313 * Reduce the number of edits by eliminating operationally trivial equalities.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2314 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2315 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2316 DiffMatchPatch.prototype.diffCleanupEfficiency = function( diffs ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2317 var changes, equalities, equalitiesLength, lastequality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2318 pointer, preIns, preDel, postIns, postDel;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2319 changes = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2320 equalities = []; // Stack of indices where equalities are found.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2321 equalitiesLength = 0; // Keeping our own length var is faster in JS.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2322 /** @type {?string} */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2323 lastequality = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2324 // Always equal to diffs[equalities[equalitiesLength - 1]][1]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2325 pointer = 0; // Index of current position.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2326 // Is there an insertion operation before the last equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2327 preIns = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2328 // Is there a deletion operation before the last equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2329 preDel = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2330 // Is there an insertion operation after the last equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2331 postIns = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2332 // Is there a deletion operation after the last equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2333 postDel = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2334 while ( pointer < diffs.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2335
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2336 // Equality found.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2337 if ( diffs[ pointer ][ 0 ] === DIFF_EQUAL ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2338 if ( diffs[ pointer ][ 1 ].length < 4 && ( postIns || postDel ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2339
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2340 // Candidate found.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2341 equalities[ equalitiesLength++ ] = pointer;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2342 preIns = postIns;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2343 preDel = postDel;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2344 lastequality = diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2345 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2346
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2347 // Not a candidate, and can never become one.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2348 equalitiesLength = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2349 lastequality = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2350 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2351 postIns = postDel = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2352
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2353 // An insertion or deletion.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2354 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2355
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2356 if ( diffs[ pointer ][ 0 ] === DIFF_DELETE ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2357 postDel = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2358 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2359 postIns = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2360 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2361
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2362 /*
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2363 * Five types to be split:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2364 * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2365 * <ins>A</ins>X<ins>C</ins><del>D</del>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2366 * <ins>A</ins><del>B</del>X<ins>C</ins>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2367 * <ins>A</del>X<ins>C</ins><del>D</del>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2368 * <ins>A</ins><del>B</del>X<del>C</del>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2369 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2370 if ( lastequality && ( ( preIns && preDel && postIns && postDel ) ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2371 ( ( lastequality.length < 2 ) &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2372 ( preIns + preDel + postIns + postDel ) === 3 ) ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2373
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2374 // Duplicate record.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2375 diffs.splice(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2376 equalities[ equalitiesLength - 1 ],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2377 0,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2378 [ DIFF_DELETE, lastequality ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2379 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2380
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2381 // Change second copy to insert.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2382 diffs[ equalities[ equalitiesLength - 1 ] + 1 ][ 0 ] = DIFF_INSERT;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2383 equalitiesLength--; // Throw away the equality we just deleted;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2384 lastequality = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2385 if ( preIns && preDel ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2386 // No changes made which could affect previous entry, keep going.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2387 postIns = postDel = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2388 equalitiesLength = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2389 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2390 equalitiesLength--; // Throw away the previous equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2391 pointer = equalitiesLength > 0 ? equalities[ equalitiesLength - 1 ] : -1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2392 postIns = postDel = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2393 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2394 changes = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2395 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2396 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2397 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2398 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2399
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2400 if ( changes ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2401 this.diffCleanupMerge( diffs );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2402 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2403 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2404
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2405 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2406 * Convert a diff array into a pretty HTML report.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2407 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2408 * @param {integer} string to be beautified.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2409 * @return {string} HTML representation.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2410 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2411 DiffMatchPatch.prototype.diffPrettyHtml = function( diffs ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2412 var op, data, x,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2413 html = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2414 for ( x = 0; x < diffs.length; x++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2415 op = diffs[ x ][ 0 ]; // Operation (insert, delete, equal)
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2416 data = diffs[ x ][ 1 ]; // Text of change.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2417 switch ( op ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2418 case DIFF_INSERT:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2419 html[ x ] = "<ins>" + data + "</ins>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2420 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2421 case DIFF_DELETE:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2422 html[ x ] = "<del>" + data + "</del>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2423 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2424 case DIFF_EQUAL:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2425 html[ x ] = "<span>" + data + "</span>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2426 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2427 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2428 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2429 return html.join( "" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2430 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2431
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2432 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2433 * Determine the common prefix of two strings.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2434 * @param {string} text1 First string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2435 * @param {string} text2 Second string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2436 * @return {number} The number of characters common to the start of each
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2437 * string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2438 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2439 DiffMatchPatch.prototype.diffCommonPrefix = function( text1, text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2440 var pointermid, pointermax, pointermin, pointerstart;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2441 // Quick check for common null cases.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2442 if ( !text1 || !text2 || text1.charAt( 0 ) !== text2.charAt( 0 ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2443 return 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2444 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2445 // Binary search.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2446 // Performance analysis: http://neil.fraser.name/news/2007/10/09/
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2447 pointermin = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2448 pointermax = Math.min( text1.length, text2.length );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2449 pointermid = pointermax;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2450 pointerstart = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2451 while ( pointermin < pointermid ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2452 if ( text1.substring( pointerstart, pointermid ) ===
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2453 text2.substring( pointerstart, pointermid ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2454 pointermin = pointermid;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2455 pointerstart = pointermin;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2456 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2457 pointermax = pointermid;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2458 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2459 pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2460 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2461 return pointermid;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2462 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2463
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2464 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2465 * Determine the common suffix of two strings.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2466 * @param {string} text1 First string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2467 * @param {string} text2 Second string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2468 * @return {number} The number of characters common to the end of each string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2469 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2470 DiffMatchPatch.prototype.diffCommonSuffix = function( text1, text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2471 var pointermid, pointermax, pointermin, pointerend;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2472 // Quick check for common null cases.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2473 if ( !text1 ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2474 !text2 ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2475 text1.charAt( text1.length - 1 ) !== text2.charAt( text2.length - 1 ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2476 return 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2477 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2478 // Binary search.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2479 // Performance analysis: http://neil.fraser.name/news/2007/10/09/
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2480 pointermin = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2481 pointermax = Math.min( text1.length, text2.length );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2482 pointermid = pointermax;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2483 pointerend = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2484 while ( pointermin < pointermid ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2485 if ( text1.substring( text1.length - pointermid, text1.length - pointerend ) ===
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2486 text2.substring( text2.length - pointermid, text2.length - pointerend ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2487 pointermin = pointermid;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2488 pointerend = pointermin;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2489 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2490 pointermax = pointermid;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2491 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2492 pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2493 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2494 return pointermid;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2495 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2496
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2497 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2498 * Find the differences between two texts. Assumes that the texts do not
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2499 * have any common prefix or suffix.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2500 * @param {string} text1 Old string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2501 * @param {string} text2 New string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2502 * @param {boolean} checklines Speedup flag. If false, then don't run a
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2503 * line-level diff first to identify the changed areas.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2504 * If true, then run a faster, slightly less optimal diff.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2505 * @param {number} deadline Time when the diff should be complete by.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2506 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2507 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2508 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2509 DiffMatchPatch.prototype.diffCompute = function( text1, text2, checklines, deadline ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2510 var diffs, longtext, shorttext, i, hm,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2511 text1A, text2A, text1B, text2B,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2512 midCommon, diffsA, diffsB;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2513
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2514 if ( !text1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2515 // Just add some text (speedup).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2516 return [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2517 [ DIFF_INSERT, text2 ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2518 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2519 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2520
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2521 if ( !text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2522 // Just delete some text (speedup).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2523 return [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2524 [ DIFF_DELETE, text1 ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2525 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2526 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2527
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2528 longtext = text1.length > text2.length ? text1 : text2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2529 shorttext = text1.length > text2.length ? text2 : text1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2530 i = longtext.indexOf( shorttext );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2531 if ( i !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2532 // Shorter text is inside the longer text (speedup).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2533 diffs = [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2534 [ DIFF_INSERT, longtext.substring( 0, i ) ],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2535 [ DIFF_EQUAL, shorttext ],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2536 [ DIFF_INSERT, longtext.substring( i + shorttext.length ) ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2537 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2538 // Swap insertions for deletions if diff is reversed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2539 if ( text1.length > text2.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2540 diffs[ 0 ][ 0 ] = diffs[ 2 ][ 0 ] = DIFF_DELETE;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2541 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2542 return diffs;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2543 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2544
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2545 if ( shorttext.length === 1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2546 // Single character string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2547 // After the previous speedup, the character can't be an equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2548 return [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2549 [ DIFF_DELETE, text1 ],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2550 [ DIFF_INSERT, text2 ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2551 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2552 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2553
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2554 // Check to see if the problem can be split in two.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2555 hm = this.diffHalfMatch( text1, text2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2556 if ( hm ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2557 // A half-match was found, sort out the return data.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2558 text1A = hm[ 0 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2559 text1B = hm[ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2560 text2A = hm[ 2 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2561 text2B = hm[ 3 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2562 midCommon = hm[ 4 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2563 // Send both pairs off for separate processing.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2564 diffsA = this.DiffMain( text1A, text2A, checklines, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2565 diffsB = this.DiffMain( text1B, text2B, checklines, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2566 // Merge the results.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2567 return diffsA.concat( [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2568 [ DIFF_EQUAL, midCommon ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2569 ], diffsB );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2570 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2571
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2572 if ( checklines && text1.length > 100 && text2.length > 100 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2573 return this.diffLineMode( text1, text2, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2574 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2575
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2576 return this.diffBisect( text1, text2, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2577 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2578
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2579 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2580 * Do the two texts share a substring which is at least half the length of the
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2581 * longer text?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2582 * This speedup can produce non-minimal diffs.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2583 * @param {string} text1 First string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2584 * @param {string} text2 Second string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2585 * @return {Array.<string>} Five element Array, containing the prefix of
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2586 * text1, the suffix of text1, the prefix of text2, the suffix of
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2587 * text2 and the common middle. Or null if there was no match.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2588 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2589 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2590 DiffMatchPatch.prototype.diffHalfMatch = function( text1, text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2591 var longtext, shorttext, dmp,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2592 text1A, text2B, text2A, text1B, midCommon,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2593 hm1, hm2, hm;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2594
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2595 longtext = text1.length > text2.length ? text1 : text2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2596 shorttext = text1.length > text2.length ? text2 : text1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2597 if ( longtext.length < 4 || shorttext.length * 2 < longtext.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2598 return null; // Pointless.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2599 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2600 dmp = this; // 'this' becomes 'window' in a closure.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2601
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2602 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2603 * Does a substring of shorttext exist within longtext such that the substring
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2604 * is at least half the length of longtext?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2605 * Closure, but does not reference any external variables.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2606 * @param {string} longtext Longer string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2607 * @param {string} shorttext Shorter string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2608 * @param {number} i Start index of quarter length substring within longtext.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2609 * @return {Array.<string>} Five element Array, containing the prefix of
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2610 * longtext, the suffix of longtext, the prefix of shorttext, the suffix
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2611 * of shorttext and the common middle. Or null if there was no match.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2612 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2613 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2614 function diffHalfMatchI( longtext, shorttext, i ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2615 var seed, j, bestCommon, prefixLength, suffixLength,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2616 bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2617 // Start with a 1/4 length substring at position i as a seed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2618 seed = longtext.substring( i, i + Math.floor( longtext.length / 4 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2619 j = -1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2620 bestCommon = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2621 while ( ( j = shorttext.indexOf( seed, j + 1 ) ) !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2622 prefixLength = dmp.diffCommonPrefix( longtext.substring( i ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2623 shorttext.substring( j ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2624 suffixLength = dmp.diffCommonSuffix( longtext.substring( 0, i ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2625 shorttext.substring( 0, j ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2626 if ( bestCommon.length < suffixLength + prefixLength ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2627 bestCommon = shorttext.substring( j - suffixLength, j ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2628 shorttext.substring( j, j + prefixLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2629 bestLongtextA = longtext.substring( 0, i - suffixLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2630 bestLongtextB = longtext.substring( i + prefixLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2631 bestShorttextA = shorttext.substring( 0, j - suffixLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2632 bestShorttextB = shorttext.substring( j + prefixLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2633 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2634 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2635 if ( bestCommon.length * 2 >= longtext.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2636 return [ bestLongtextA, bestLongtextB,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2637 bestShorttextA, bestShorttextB, bestCommon
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2638 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2639 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2640 return null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2641 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2642 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2643
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2644 // First check if the second quarter is the seed for a half-match.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2645 hm1 = diffHalfMatchI( longtext, shorttext,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2646 Math.ceil( longtext.length / 4 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2647 // Check again based on the third quarter.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2648 hm2 = diffHalfMatchI( longtext, shorttext,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2649 Math.ceil( longtext.length / 2 ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2650 if ( !hm1 && !hm2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2651 return null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2652 } else if ( !hm2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2653 hm = hm1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2654 } else if ( !hm1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2655 hm = hm2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2656 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2657 // Both matched. Select the longest.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2658 hm = hm1[ 4 ].length > hm2[ 4 ].length ? hm1 : hm2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2659 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2660
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2661 // A half-match was found, sort out the return data.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2662 text1A, text1B, text2A, text2B;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2663 if ( text1.length > text2.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2664 text1A = hm[ 0 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2665 text1B = hm[ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2666 text2A = hm[ 2 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2667 text2B = hm[ 3 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2668 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2669 text2A = hm[ 0 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2670 text2B = hm[ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2671 text1A = hm[ 2 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2672 text1B = hm[ 3 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2673 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2674 midCommon = hm[ 4 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2675 return [ text1A, text1B, text2A, text2B, midCommon ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2676 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2677
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2678 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2679 * Do a quick line-level diff on both strings, then rediff the parts for
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2680 * greater accuracy.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2681 * This speedup can produce non-minimal diffs.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2682 * @param {string} text1 Old string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2683 * @param {string} text2 New string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2684 * @param {number} deadline Time when the diff should be complete by.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2685 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2686 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2687 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2688 DiffMatchPatch.prototype.diffLineMode = function( text1, text2, deadline ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2689 var a, diffs, linearray, pointer, countInsert,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2690 countDelete, textInsert, textDelete, j;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2691 // Scan the text on a line-by-line basis first.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2692 a = this.diffLinesToChars( text1, text2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2693 text1 = a.chars1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2694 text2 = a.chars2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2695 linearray = a.lineArray;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2696
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2697 diffs = this.DiffMain( text1, text2, false, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2698
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2699 // Convert the diff back to original text.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2700 this.diffCharsToLines( diffs, linearray );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2701 // Eliminate freak matches (e.g. blank lines)
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2702 this.diffCleanupSemantic( diffs );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2703
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2704 // Rediff any replacement blocks, this time character-by-character.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2705 // Add a dummy entry at the end.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2706 diffs.push( [ DIFF_EQUAL, "" ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2707 pointer = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2708 countDelete = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2709 countInsert = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2710 textDelete = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2711 textInsert = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2712 while ( pointer < diffs.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2713 switch ( diffs[ pointer ][ 0 ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2714 case DIFF_INSERT:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2715 countInsert++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2716 textInsert += diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2717 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2718 case DIFF_DELETE:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2719 countDelete++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2720 textDelete += diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2721 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2722 case DIFF_EQUAL:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2723 // Upon reaching an equality, check for prior redundancies.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2724 if ( countDelete >= 1 && countInsert >= 1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2725 // Delete the offending records and add the merged ones.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2726 diffs.splice( pointer - countDelete - countInsert,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2727 countDelete + countInsert );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2728 pointer = pointer - countDelete - countInsert;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2729 a = this.DiffMain( textDelete, textInsert, false, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2730 for ( j = a.length - 1; j >= 0; j-- ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2731 diffs.splice( pointer, 0, a[ j ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2732 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2733 pointer = pointer + a.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2734 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2735 countInsert = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2736 countDelete = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2737 textDelete = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2738 textInsert = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2739 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2740 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2741 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2742 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2743 diffs.pop(); // Remove the dummy entry at the end.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2744
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2745 return diffs;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2746 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2747
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2748 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2749 * Find the 'middle snake' of a diff, split the problem in two
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2750 * and return the recursively constructed diff.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2751 * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2752 * @param {string} text1 Old string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2753 * @param {string} text2 New string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2754 * @param {number} deadline Time at which to bail if not yet complete.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2755 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2756 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2757 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2758 DiffMatchPatch.prototype.diffBisect = function( text1, text2, deadline ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2759 var text1Length, text2Length, maxD, vOffset, vLength,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2760 v1, v2, x, delta, front, k1start, k1end, k2start,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2761 k2end, k2Offset, k1Offset, x1, x2, y1, y2, d, k1, k2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2762 // Cache the text lengths to prevent multiple calls.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2763 text1Length = text1.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2764 text2Length = text2.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2765 maxD = Math.ceil( ( text1Length + text2Length ) / 2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2766 vOffset = maxD;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2767 vLength = 2 * maxD;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2768 v1 = new Array( vLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2769 v2 = new Array( vLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2770 // Setting all elements to -1 is faster in Chrome & Firefox than mixing
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2771 // integers and undefined.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2772 for ( x = 0; x < vLength; x++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2773 v1[ x ] = -1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2774 v2[ x ] = -1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2775 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2776 v1[ vOffset + 1 ] = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2777 v2[ vOffset + 1 ] = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2778 delta = text1Length - text2Length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2779 // If the total number of characters is odd, then the front path will collide
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2780 // with the reverse path.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2781 front = ( delta % 2 !== 0 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2782 // Offsets for start and end of k loop.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2783 // Prevents mapping of space beyond the grid.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2784 k1start = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2785 k1end = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2786 k2start = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2787 k2end = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2788 for ( d = 0; d < maxD; d++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2789 // Bail out if deadline is reached.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2790 if ( ( new Date() ).getTime() > deadline ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2791 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2792 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2793
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2794 // Walk the front path one step.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2795 for ( k1 = -d + k1start; k1 <= d - k1end; k1 += 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2796 k1Offset = vOffset + k1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2797 if ( k1 === -d || ( k1 !== d && v1[ k1Offset - 1 ] < v1[ k1Offset + 1 ] ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2798 x1 = v1[ k1Offset + 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2799 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2800 x1 = v1[ k1Offset - 1 ] + 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2801 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2802 y1 = x1 - k1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2803 while ( x1 < text1Length && y1 < text2Length &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2804 text1.charAt( x1 ) === text2.charAt( y1 ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2805 x1++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2806 y1++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2807 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2808 v1[ k1Offset ] = x1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2809 if ( x1 > text1Length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2810 // Ran off the right of the graph.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2811 k1end += 2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2812 } else if ( y1 > text2Length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2813 // Ran off the bottom of the graph.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2814 k1start += 2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2815 } else if ( front ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2816 k2Offset = vOffset + delta - k1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2817 if ( k2Offset >= 0 && k2Offset < vLength && v2[ k2Offset ] !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2818 // Mirror x2 onto top-left coordinate system.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2819 x2 = text1Length - v2[ k2Offset ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2820 if ( x1 >= x2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2821 // Overlap detected.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2822 return this.diffBisectSplit( text1, text2, x1, y1, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2823 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2824 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2825 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2826 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2827
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2828 // Walk the reverse path one step.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2829 for ( k2 = -d + k2start; k2 <= d - k2end; k2 += 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2830 k2Offset = vOffset + k2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2831 if ( k2 === -d || ( k2 !== d && v2[ k2Offset - 1 ] < v2[ k2Offset + 1 ] ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2832 x2 = v2[ k2Offset + 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2833 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2834 x2 = v2[ k2Offset - 1 ] + 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2835 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2836 y2 = x2 - k2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2837 while ( x2 < text1Length && y2 < text2Length &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2838 text1.charAt( text1Length - x2 - 1 ) ===
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2839 text2.charAt( text2Length - y2 - 1 ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2840 x2++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2841 y2++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2842 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2843 v2[ k2Offset ] = x2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2844 if ( x2 > text1Length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2845 // Ran off the left of the graph.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2846 k2end += 2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2847 } else if ( y2 > text2Length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2848 // Ran off the top of the graph.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2849 k2start += 2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2850 } else if ( !front ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2851 k1Offset = vOffset + delta - k2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2852 if ( k1Offset >= 0 && k1Offset < vLength && v1[ k1Offset ] !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2853 x1 = v1[ k1Offset ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2854 y1 = vOffset + x1 - k1Offset;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2855 // Mirror x2 onto top-left coordinate system.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2856 x2 = text1Length - x2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2857 if ( x1 >= x2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2858 // Overlap detected.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2859 return this.diffBisectSplit( text1, text2, x1, y1, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2860 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2861 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2862 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2863 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2864 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2865 // Diff took too long and hit the deadline or
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2866 // number of diffs equals number of characters, no commonality at all.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2867 return [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2868 [ DIFF_DELETE, text1 ],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2869 [ DIFF_INSERT, text2 ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2870 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2871 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2872
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2873 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2874 * Given the location of the 'middle snake', split the diff in two parts
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2875 * and recurse.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2876 * @param {string} text1 Old string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2877 * @param {string} text2 New string to be diffed.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2878 * @param {number} x Index of split point in text1.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2879 * @param {number} y Index of split point in text2.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2880 * @param {number} deadline Time at which to bail if not yet complete.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2881 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2882 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2883 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2884 DiffMatchPatch.prototype.diffBisectSplit = function( text1, text2, x, y, deadline ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2885 var text1a, text1b, text2a, text2b, diffs, diffsb;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2886 text1a = text1.substring( 0, x );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2887 text2a = text2.substring( 0, y );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2888 text1b = text1.substring( x );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2889 text2b = text2.substring( y );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2890
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2891 // Compute both diffs serially.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2892 diffs = this.DiffMain( text1a, text2a, false, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2893 diffsb = this.DiffMain( text1b, text2b, false, deadline );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2894
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2895 return diffs.concat( diffsb );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2896 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2897
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2898 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2899 * Reduce the number of edits by eliminating semantically trivial equalities.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2900 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2901 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2902 DiffMatchPatch.prototype.diffCleanupSemantic = function( diffs ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2903 var changes, equalities, equalitiesLength, lastequality,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2904 pointer, lengthInsertions2, lengthDeletions2, lengthInsertions1,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2905 lengthDeletions1, deletion, insertion, overlapLength1, overlapLength2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2906 changes = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2907 equalities = []; // Stack of indices where equalities are found.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2908 equalitiesLength = 0; // Keeping our own length var is faster in JS.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2909 /** @type {?string} */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2910 lastequality = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2911 // Always equal to diffs[equalities[equalitiesLength - 1]][1]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2912 pointer = 0; // Index of current position.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2913 // Number of characters that changed prior to the equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2914 lengthInsertions1 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2915 lengthDeletions1 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2916 // Number of characters that changed after the equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2917 lengthInsertions2 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2918 lengthDeletions2 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2919 while ( pointer < diffs.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2920 if ( diffs[ pointer ][ 0 ] === DIFF_EQUAL ) { // Equality found.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2921 equalities[ equalitiesLength++ ] = pointer;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2922 lengthInsertions1 = lengthInsertions2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2923 lengthDeletions1 = lengthDeletions2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2924 lengthInsertions2 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2925 lengthDeletions2 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2926 lastequality = diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2927 } else { // An insertion or deletion.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2928 if ( diffs[ pointer ][ 0 ] === DIFF_INSERT ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2929 lengthInsertions2 += diffs[ pointer ][ 1 ].length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2930 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2931 lengthDeletions2 += diffs[ pointer ][ 1 ].length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2932 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2933 // Eliminate an equality that is smaller or equal to the edits on both
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2934 // sides of it.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2935 if ( lastequality && ( lastequality.length <=
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2936 Math.max( lengthInsertions1, lengthDeletions1 ) ) &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2937 ( lastequality.length <= Math.max( lengthInsertions2,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2938 lengthDeletions2 ) ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2939
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2940 // Duplicate record.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2941 diffs.splice(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2942 equalities[ equalitiesLength - 1 ],
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2943 0,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2944 [ DIFF_DELETE, lastequality ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2945 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2946
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2947 // Change second copy to insert.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2948 diffs[ equalities[ equalitiesLength - 1 ] + 1 ][ 0 ] = DIFF_INSERT;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2949
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2950 // Throw away the equality we just deleted.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2951 equalitiesLength--;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2952
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2953 // Throw away the previous equality (it needs to be reevaluated).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2954 equalitiesLength--;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2955 pointer = equalitiesLength > 0 ? equalities[ equalitiesLength - 1 ] : -1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2956
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2957 // Reset the counters.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2958 lengthInsertions1 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2959 lengthDeletions1 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2960 lengthInsertions2 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2961 lengthDeletions2 = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2962 lastequality = null;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2963 changes = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2964 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2965 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2966 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2967 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2968
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2969 // Normalize the diff.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2970 if ( changes ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2971 this.diffCleanupMerge( diffs );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2972 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2973
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2974 // Find any overlaps between deletions and insertions.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2975 // e.g: <del>abcxxx</del><ins>xxxdef</ins>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2976 // -> <del>abc</del>xxx<ins>def</ins>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2977 // e.g: <del>xxxabc</del><ins>defxxx</ins>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2978 // -> <ins>def</ins>xxx<del>abc</del>
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2979 // Only extract an overlap if it is as big as the edit ahead or behind it.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2980 pointer = 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2981 while ( pointer < diffs.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2982 if ( diffs[ pointer - 1 ][ 0 ] === DIFF_DELETE &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2983 diffs[ pointer ][ 0 ] === DIFF_INSERT ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2984 deletion = diffs[ pointer - 1 ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2985 insertion = diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2986 overlapLength1 = this.diffCommonOverlap( deletion, insertion );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2987 overlapLength2 = this.diffCommonOverlap( insertion, deletion );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2988 if ( overlapLength1 >= overlapLength2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2989 if ( overlapLength1 >= deletion.length / 2 ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2990 overlapLength1 >= insertion.length / 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2991 // Overlap found. Insert an equality and trim the surrounding edits.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2992 diffs.splice(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2993 pointer,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2994 0,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2995 [ DIFF_EQUAL, insertion.substring( 0, overlapLength1 ) ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2996 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2997 diffs[ pointer - 1 ][ 1 ] =
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2998 deletion.substring( 0, deletion.length - overlapLength1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
2999 diffs[ pointer + 1 ][ 1 ] = insertion.substring( overlapLength1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3000 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3001 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3002 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3003 if ( overlapLength2 >= deletion.length / 2 ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3004 overlapLength2 >= insertion.length / 2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3005
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3006 // Reverse overlap found.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3007 // Insert an equality and swap and trim the surrounding edits.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3008 diffs.splice(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3009 pointer,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3010 0,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3011 [ DIFF_EQUAL, deletion.substring( 0, overlapLength2 ) ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3012 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3013
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3014 diffs[ pointer - 1 ][ 0 ] = DIFF_INSERT;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3015 diffs[ pointer - 1 ][ 1 ] =
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3016 insertion.substring( 0, insertion.length - overlapLength2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3017 diffs[ pointer + 1 ][ 0 ] = DIFF_DELETE;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3018 diffs[ pointer + 1 ][ 1 ] =
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3019 deletion.substring( overlapLength2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3020 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3021 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3022 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3023 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3024 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3025 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3026 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3027 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3028
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3029 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3030 * Determine if the suffix of one string is the prefix of another.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3031 * @param {string} text1 First string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3032 * @param {string} text2 Second string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3033 * @return {number} The number of characters common to the end of the first
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3034 * string and the start of the second string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3035 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3036 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3037 DiffMatchPatch.prototype.diffCommonOverlap = function( text1, text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3038 var text1Length, text2Length, textLength,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3039 best, length, pattern, found;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3040 // Cache the text lengths to prevent multiple calls.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3041 text1Length = text1.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3042 text2Length = text2.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3043 // Eliminate the null case.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3044 if ( text1Length === 0 || text2Length === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3045 return 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3046 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3047 // Truncate the longer string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3048 if ( text1Length > text2Length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3049 text1 = text1.substring( text1Length - text2Length );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3050 } else if ( text1Length < text2Length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3051 text2 = text2.substring( 0, text1Length );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3052 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3053 textLength = Math.min( text1Length, text2Length );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3054 // Quick check for the worst case.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3055 if ( text1 === text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3056 return textLength;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3057 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3058
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3059 // Start by looking for a single character match
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3060 // and increase length until no match is found.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3061 // Performance analysis: http://neil.fraser.name/news/2010/11/04/
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3062 best = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3063 length = 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3064 while ( true ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3065 pattern = text1.substring( textLength - length );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3066 found = text2.indexOf( pattern );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3067 if ( found === -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3068 return best;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3069 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3070 length += found;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3071 if ( found === 0 || text1.substring( textLength - length ) ===
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3072 text2.substring( 0, length ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3073 best = length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3074 length++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3075 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3076 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3077 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3078
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3079 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3080 * Split two texts into an array of strings. Reduce the texts to a string of
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3081 * hashes where each Unicode character represents one line.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3082 * @param {string} text1 First string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3083 * @param {string} text2 Second string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3084 * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3085 * An object containing the encoded text1, the encoded text2 and
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3086 * the array of unique strings.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3087 * The zeroth element of the array of unique strings is intentionally blank.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3088 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3089 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3090 DiffMatchPatch.prototype.diffLinesToChars = function( text1, text2 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3091 var lineArray, lineHash, chars1, chars2;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3092 lineArray = []; // e.g. lineArray[4] === 'Hello\n'
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3093 lineHash = {}; // e.g. lineHash['Hello\n'] === 4
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3094
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3095 // '\x00' is a valid character, but various debuggers don't like it.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3096 // So we'll insert a junk entry to avoid generating a null character.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3097 lineArray[ 0 ] = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3098
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3099 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3100 * Split a text into an array of strings. Reduce the texts to a string of
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3101 * hashes where each Unicode character represents one line.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3102 * Modifies linearray and linehash through being a closure.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3103 * @param {string} text String to encode.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3104 * @return {string} Encoded string.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3105 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3106 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3107 function diffLinesToCharsMunge( text ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3108 var chars, lineStart, lineEnd, lineArrayLength, line;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3109 chars = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3110 // Walk the text, pulling out a substring for each line.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3111 // text.split('\n') would would temporarily double our memory footprint.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3112 // Modifying text would create many large strings to garbage collect.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3113 lineStart = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3114 lineEnd = -1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3115 // Keeping our own length variable is faster than looking it up.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3116 lineArrayLength = lineArray.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3117 while ( lineEnd < text.length - 1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3118 lineEnd = text.indexOf( "\n", lineStart );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3119 if ( lineEnd === -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3120 lineEnd = text.length - 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3121 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3122 line = text.substring( lineStart, lineEnd + 1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3123 lineStart = lineEnd + 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3124
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3125 if ( lineHash.hasOwnProperty ? lineHash.hasOwnProperty( line ) :
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3126 ( lineHash[ line ] !== undefined ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3127 chars += String.fromCharCode( lineHash[ line ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3128 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3129 chars += String.fromCharCode( lineArrayLength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3130 lineHash[ line ] = lineArrayLength;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3131 lineArray[ lineArrayLength++ ] = line;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3132 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3133 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3134 return chars;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3135 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3136
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3137 chars1 = diffLinesToCharsMunge( text1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3138 chars2 = diffLinesToCharsMunge( text2 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3139 return {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3140 chars1: chars1,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3141 chars2: chars2,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3142 lineArray: lineArray
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3143 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3144 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3145
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3146 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3147 * Rehydrate the text in a diff from a string of line hashes to real lines of
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3148 * text.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3149 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3150 * @param {!Array.<string>} lineArray Array of unique strings.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3151 * @private
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3152 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3153 DiffMatchPatch.prototype.diffCharsToLines = function( diffs, lineArray ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3154 var x, chars, text, y;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3155 for ( x = 0; x < diffs.length; x++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3156 chars = diffs[ x ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3157 text = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3158 for ( y = 0; y < chars.length; y++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3159 text[ y ] = lineArray[ chars.charCodeAt( y ) ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3160 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3161 diffs[ x ][ 1 ] = text.join( "" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3162 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3163 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3164
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3165 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3166 * Reorder and merge like edit sections. Merge equalities.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3167 * Any edit section can move as long as it doesn't cross an equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3168 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3169 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3170 DiffMatchPatch.prototype.diffCleanupMerge = function( diffs ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3171 var pointer, countDelete, countInsert, textInsert, textDelete,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3172 commonlength, changes, diffPointer, position;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3173 diffs.push( [ DIFF_EQUAL, "" ] ); // Add a dummy entry at the end.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3174 pointer = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3175 countDelete = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3176 countInsert = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3177 textDelete = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3178 textInsert = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3179 commonlength;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3180 while ( pointer < diffs.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3181 switch ( diffs[ pointer ][ 0 ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3182 case DIFF_INSERT:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3183 countInsert++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3184 textInsert += diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3185 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3186 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3187 case DIFF_DELETE:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3188 countDelete++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3189 textDelete += diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3190 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3191 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3192 case DIFF_EQUAL:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3193 // Upon reaching an equality, check for prior redundancies.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3194 if ( countDelete + countInsert > 1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3195 if ( countDelete !== 0 && countInsert !== 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3196 // Factor out any common prefixies.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3197 commonlength = this.diffCommonPrefix( textInsert, textDelete );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3198 if ( commonlength !== 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3199 if ( ( pointer - countDelete - countInsert ) > 0 &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3200 diffs[ pointer - countDelete - countInsert - 1 ][ 0 ] ===
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3201 DIFF_EQUAL ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3202 diffs[ pointer - countDelete - countInsert - 1 ][ 1 ] +=
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3203 textInsert.substring( 0, commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3204 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3205 diffs.splice( 0, 0, [ DIFF_EQUAL,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3206 textInsert.substring( 0, commonlength )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3207 ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3208 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3209 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3210 textInsert = textInsert.substring( commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3211 textDelete = textDelete.substring( commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3212 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3213 // Factor out any common suffixies.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3214 commonlength = this.diffCommonSuffix( textInsert, textDelete );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3215 if ( commonlength !== 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3216 diffs[ pointer ][ 1 ] = textInsert.substring( textInsert.length -
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3217 commonlength ) + diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3218 textInsert = textInsert.substring( 0, textInsert.length -
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3219 commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3220 textDelete = textDelete.substring( 0, textDelete.length -
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3221 commonlength );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3222 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3223 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3224 // Delete the offending records and add the merged ones.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3225 if ( countDelete === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3226 diffs.splice( pointer - countInsert,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3227 countDelete + countInsert, [ DIFF_INSERT, textInsert ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3228 } else if ( countInsert === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3229 diffs.splice( pointer - countDelete,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3230 countDelete + countInsert, [ DIFF_DELETE, textDelete ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3231 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3232 diffs.splice(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3233 pointer - countDelete - countInsert,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3234 countDelete + countInsert,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3235 [ DIFF_DELETE, textDelete ], [ DIFF_INSERT, textInsert ]
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3236 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3237 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3238 pointer = pointer - countDelete - countInsert +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3239 ( countDelete ? 1 : 0 ) + ( countInsert ? 1 : 0 ) + 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3240 } else if ( pointer !== 0 && diffs[ pointer - 1 ][ 0 ] === DIFF_EQUAL ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3241
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3242 // Merge this equality with the previous one.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3243 diffs[ pointer - 1 ][ 1 ] += diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3244 diffs.splice( pointer, 1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3245 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3246 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3247 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3248 countInsert = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3249 countDelete = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3250 textDelete = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3251 textInsert = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3252 break;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3253 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3254 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3255 if ( diffs[ diffs.length - 1 ][ 1 ] === "" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3256 diffs.pop(); // Remove the dummy entry at the end.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3257 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3258
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3259 // Second pass: look for single edits surrounded on both sides by equalities
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3260 // which can be shifted sideways to eliminate an equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3261 // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3262 changes = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3263 pointer = 1;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3264
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3265 // Intentionally ignore the first and last element (don't need checking).
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3266 while ( pointer < diffs.length - 1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3267 if ( diffs[ pointer - 1 ][ 0 ] === DIFF_EQUAL &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3268 diffs[ pointer + 1 ][ 0 ] === DIFF_EQUAL ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3269
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3270 diffPointer = diffs[ pointer ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3271 position = diffPointer.substring(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3272 diffPointer.length - diffs[ pointer - 1 ][ 1 ].length
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3273 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3274
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3275 // This is a single edit surrounded by equalities.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3276 if ( position === diffs[ pointer - 1 ][ 1 ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3277
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3278 // Shift the edit over the previous equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3279 diffs[ pointer ][ 1 ] = diffs[ pointer - 1 ][ 1 ] +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3280 diffs[ pointer ][ 1 ].substring( 0, diffs[ pointer ][ 1 ].length -
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3281 diffs[ pointer - 1 ][ 1 ].length );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3282 diffs[ pointer + 1 ][ 1 ] =
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3283 diffs[ pointer - 1 ][ 1 ] + diffs[ pointer + 1 ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3284 diffs.splice( pointer - 1, 1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3285 changes = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3286 } else if ( diffPointer.substring( 0, diffs[ pointer + 1 ][ 1 ].length ) ===
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3287 diffs[ pointer + 1 ][ 1 ] ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3288
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3289 // Shift the edit over the next equality.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3290 diffs[ pointer - 1 ][ 1 ] += diffs[ pointer + 1 ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3291 diffs[ pointer ][ 1 ] =
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3292 diffs[ pointer ][ 1 ].substring( diffs[ pointer + 1 ][ 1 ].length ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3293 diffs[ pointer + 1 ][ 1 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3294 diffs.splice( pointer + 1, 1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3295 changes = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3296 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3297 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3298 pointer++;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3299 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3300 // If shifts were made, the diff needs reordering and another shift sweep.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3301 if ( changes ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3302 this.diffCleanupMerge( diffs );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3303 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3304 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3305
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3306 return function( o, n ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3307 var diff, output, text;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3308 diff = new DiffMatchPatch();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3309 output = diff.DiffMain( o, n );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3310 diff.diffCleanupEfficiency( output );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3311 text = diff.diffPrettyHtml( output );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3312
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3313 return text;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3314 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3315 }() );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3316
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3317 // Get a reference to the global object, like window in browsers
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3318 }( (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3319 return this;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3320 })() ));
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3321
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3322 (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3323
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3324 // Don't load the HTML Reporter on non-Browser environments
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3325 if ( typeof window === "undefined" || !window.document ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3326 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3327 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3328
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3329 // Deprecated QUnit.init - Ref #530
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3330 // Re-initialize the configuration options
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3331 QUnit.init = function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3332 var tests, banner, result, qunit,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3333 config = QUnit.config;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3334
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3335 config.stats = { all: 0, bad: 0 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3336 config.moduleStats = { all: 0, bad: 0 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3337 config.started = 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3338 config.updateRate = 1000;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3339 config.blocking = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3340 config.autostart = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3341 config.autorun = false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3342 config.filter = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3343 config.queue = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3344
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3345 // Return on non-browser environments
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3346 // This is necessary to not break on node tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3347 if ( typeof window === "undefined" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3348 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3349 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3350
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3351 qunit = id( "qunit" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3352 if ( qunit ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3353 qunit.innerHTML =
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3354 "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3355 "<h2 id='qunit-banner'></h2>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3356 "<div id='qunit-testrunner-toolbar'></div>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3357 "<h2 id='qunit-userAgent'></h2>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3358 "<ol id='qunit-tests'></ol>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3359 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3360
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3361 tests = id( "qunit-tests" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3362 banner = id( "qunit-banner" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3363 result = id( "qunit-testresult" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3364
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3365 if ( tests ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3366 tests.innerHTML = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3367 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3368
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3369 if ( banner ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3370 banner.className = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3371 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3372
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3373 if ( result ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3374 result.parentNode.removeChild( result );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3375 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3376
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3377 if ( tests ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3378 result = document.createElement( "p" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3379 result.id = "qunit-testresult";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3380 result.className = "result";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3381 tests.parentNode.insertBefore( result, tests );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3382 result.innerHTML = "Running...<br />&#160;";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3383 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3384 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3385
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3386 var config = QUnit.config,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3387 collapseNext = false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3388 hasOwn = Object.prototype.hasOwnProperty,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3389 defined = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3390 document: window.document !== undefined,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3391 sessionStorage: (function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3392 var x = "qunit-test-string";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3393 try {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3394 sessionStorage.setItem( x, x );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3395 sessionStorage.removeItem( x );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3396 return true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3397 } catch ( e ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3398 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3399 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3400 }())
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3401 },
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3402 modulesList = [];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3403
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3404 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3405 * Escape text for attribute or text content.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3406 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3407 function escapeText( s ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3408 if ( !s ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3409 return "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3410 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3411 s = s + "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3412
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3413 // Both single quotes and double quotes (for attributes)
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3414 return s.replace( /['"<>&]/g, function( s ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3415 switch ( s ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3416 case "'":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3417 return "&#039;";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3418 case "\"":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3419 return "&quot;";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3420 case "<":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3421 return "&lt;";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3422 case ">":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3423 return "&gt;";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3424 case "&":
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3425 return "&amp;";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3426 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3427 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3428 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3429
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3430 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3431 * @param {HTMLElement} elem
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3432 * @param {string} type
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3433 * @param {Function} fn
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3434 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3435 function addEvent( elem, type, fn ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3436 if ( elem.addEventListener ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3437
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3438 // Standards-based browsers
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3439 elem.addEventListener( type, fn, false );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3440 } else if ( elem.attachEvent ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3441
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3442 // support: IE <9
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3443 elem.attachEvent( "on" + type, function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3444 var event = window.event;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3445 if ( !event.target ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3446 event.target = event.srcElement || document;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3447 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3448
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3449 fn.call( elem, event );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3450 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3451 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3452 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3453
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3454 /**
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3455 * @param {Array|NodeList} elems
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3456 * @param {string} type
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3457 * @param {Function} fn
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3458 */
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3459 function addEvents( elems, type, fn ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3460 var i = elems.length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3461 while ( i-- ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3462 addEvent( elems[ i ], type, fn );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3463 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3464 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3465
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3466 function hasClass( elem, name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3467 return ( " " + elem.className + " " ).indexOf( " " + name + " " ) >= 0;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3468 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3469
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3470 function addClass( elem, name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3471 if ( !hasClass( elem, name ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3472 elem.className += ( elem.className ? " " : "" ) + name;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3473 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3474 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3475
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3476 function toggleClass( elem, name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3477 if ( hasClass( elem, name ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3478 removeClass( elem, name );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3479 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3480 addClass( elem, name );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3481 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3482 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3483
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3484 function removeClass( elem, name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3485 var set = " " + elem.className + " ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3486
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3487 // Class name may appear multiple times
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3488 while ( set.indexOf( " " + name + " " ) >= 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3489 set = set.replace( " " + name + " ", " " );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3490 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3491
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3492 // trim for prettiness
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3493 elem.className = typeof set.trim === "function" ? set.trim() : set.replace( /^\s+|\s+$/g, "" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3494 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3495
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3496 function id( name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3497 return defined.document && document.getElementById && document.getElementById( name );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3498 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3499
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3500 function getUrlConfigHtml() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3501 var i, j, val,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3502 escaped, escapedTooltip,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3503 selection = false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3504 len = config.urlConfig.length,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3505 urlConfigHtml = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3506
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3507 for ( i = 0; i < len; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3508 val = config.urlConfig[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3509 if ( typeof val === "string" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3510 val = {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3511 id: val,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3512 label: val
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3513 };
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3514 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3515
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3516 escaped = escapeText( val.id );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3517 escapedTooltip = escapeText( val.tooltip );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3518
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3519 if ( config[ val.id ] === undefined ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3520 config[ val.id ] = QUnit.urlParams[ val.id ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3521 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3522
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3523 if ( !val.value || typeof val.value === "string" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3524 urlConfigHtml += "<input id='qunit-urlconfig-" + escaped +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3525 "' name='" + escaped + "' type='checkbox'" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3526 ( val.value ? " value='" + escapeText( val.value ) + "'" : "" ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3527 ( config[ val.id ] ? " checked='checked'" : "" ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3528 " title='" + escapedTooltip + "' /><label for='qunit-urlconfig-" + escaped +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3529 "' title='" + escapedTooltip + "'>" + val.label + "</label>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3530 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3531 urlConfigHtml += "<label for='qunit-urlconfig-" + escaped +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3532 "' title='" + escapedTooltip + "'>" + val.label +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3533 ": </label><select id='qunit-urlconfig-" + escaped +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3534 "' name='" + escaped + "' title='" + escapedTooltip + "'><option></option>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3535
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3536 if ( QUnit.is( "array", val.value ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3537 for ( j = 0; j < val.value.length; j++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3538 escaped = escapeText( val.value[ j ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3539 urlConfigHtml += "<option value='" + escaped + "'" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3540 ( config[ val.id ] === val.value[ j ] ?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3541 ( selection = true ) && " selected='selected'" : "" ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3542 ">" + escaped + "</option>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3543 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3544 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3545 for ( j in val.value ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3546 if ( hasOwn.call( val.value, j ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3547 urlConfigHtml += "<option value='" + escapeText( j ) + "'" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3548 ( config[ val.id ] === j ?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3549 ( selection = true ) && " selected='selected'" : "" ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3550 ">" + escapeText( val.value[ j ] ) + "</option>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3551 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3552 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3553 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3554 if ( config[ val.id ] && !selection ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3555 escaped = escapeText( config[ val.id ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3556 urlConfigHtml += "<option value='" + escaped +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3557 "' selected='selected' disabled='disabled'>" + escaped + "</option>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3558 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3559 urlConfigHtml += "</select>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3560 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3561 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3562
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3563 return urlConfigHtml;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3564 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3565
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3566 // Handle "click" events on toolbar checkboxes and "change" for select menus.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3567 // Updates the URL with the new state of `config.urlConfig` values.
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3568 function toolbarChanged() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3569 var updatedUrl, value,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3570 field = this,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3571 params = {};
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3572
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3573 // Detect if field is a select menu or a checkbox
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3574 if ( "selectedIndex" in field ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3575 value = field.options[ field.selectedIndex ].value || undefined;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3576 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3577 value = field.checked ? ( field.defaultValue || true ) : undefined;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3578 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3579
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3580 params[ field.name ] = value;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3581 updatedUrl = setUrl( params );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3582
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3583 if ( "hidepassed" === field.name && "replaceState" in window.history ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3584 config[ field.name ] = value || false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3585 if ( value ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3586 addClass( id( "qunit-tests" ), "hidepass" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3587 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3588 removeClass( id( "qunit-tests" ), "hidepass" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3589 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3590
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3591 // It is not necessary to refresh the whole page
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3592 window.history.replaceState( null, "", updatedUrl );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3593 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3594 window.location = updatedUrl;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3595 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3596 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3597
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3598 function setUrl( params ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3599 var key,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3600 querystring = "?";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3601
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3602 params = QUnit.extend( QUnit.extend( {}, QUnit.urlParams ), params );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3603
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3604 for ( key in params ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3605 if ( hasOwn.call( params, key ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3606 if ( params[ key ] === undefined ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3607 continue;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3608 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3609 querystring += encodeURIComponent( key );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3610 if ( params[ key ] !== true ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3611 querystring += "=" + encodeURIComponent( params[ key ] );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3612 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3613 querystring += "&";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3614 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3615 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3616 return location.protocol + "//" + location.host +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3617 location.pathname + querystring.slice( 0, -1 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3618 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3619
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3620 function applyUrlParams() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3621 var selectedModule,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3622 modulesList = id( "qunit-modulefilter" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3623 filter = id( "qunit-filter-input" ).value;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3624
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3625 selectedModule = modulesList ?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3626 decodeURIComponent( modulesList.options[ modulesList.selectedIndex ].value ) :
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3627 undefined;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3628
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3629 window.location = setUrl({
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3630 module: ( selectedModule === "" ) ? undefined : selectedModule,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3631 filter: ( filter === "" ) ? undefined : filter,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3632
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3633 // Remove testId filter
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3634 testId: undefined
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3635 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3636 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3637
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3638 function toolbarUrlConfigContainer() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3639 var urlConfigContainer = document.createElement( "span" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3640
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3641 urlConfigContainer.innerHTML = getUrlConfigHtml();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3642 addClass( urlConfigContainer, "qunit-url-config" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3643
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3644 // For oldIE support:
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3645 // * Add handlers to the individual elements instead of the container
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3646 // * Use "click" instead of "change" for checkboxes
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3647 addEvents( urlConfigContainer.getElementsByTagName( "input" ), "click", toolbarChanged );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3648 addEvents( urlConfigContainer.getElementsByTagName( "select" ), "change", toolbarChanged );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3649
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3650 return urlConfigContainer;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3651 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3652
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3653 function toolbarLooseFilter() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3654 var filter = document.createElement( "form" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3655 label = document.createElement( "label" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3656 input = document.createElement( "input" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3657 button = document.createElement( "button" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3658
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3659 addClass( filter, "qunit-filter" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3660
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3661 label.innerHTML = "Filter: ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3662
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3663 input.type = "text";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3664 input.value = config.filter || "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3665 input.name = "filter";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3666 input.id = "qunit-filter-input";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3667
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3668 button.innerHTML = "Go";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3669
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3670 label.appendChild( input );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3671
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3672 filter.appendChild( label );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3673 filter.appendChild( button );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3674 addEvent( filter, "submit", function( ev ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3675 applyUrlParams();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3676
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3677 if ( ev && ev.preventDefault ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3678 ev.preventDefault();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3679 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3680
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3681 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3682 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3683
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3684 return filter;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3685 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3686
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3687 function toolbarModuleFilterHtml() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3688 var i,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3689 moduleFilterHtml = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3690
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3691 if ( !modulesList.length ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3692 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3693 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3694
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3695 modulesList.sort(function( a, b ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3696 return a.localeCompare( b );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3697 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3698
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3699 moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3700 "<select id='qunit-modulefilter' name='modulefilter'><option value='' " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3701 ( QUnit.urlParams.module === undefined ? "selected='selected'" : "" ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3702 ">< All Modules ></option>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3703
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3704 for ( i = 0; i < modulesList.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3705 moduleFilterHtml += "<option value='" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3706 escapeText( encodeURIComponent( modulesList[ i ] ) ) + "' " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3707 ( QUnit.urlParams.module === modulesList[ i ] ? "selected='selected'" : "" ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3708 ">" + escapeText( modulesList[ i ] ) + "</option>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3709 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3710 moduleFilterHtml += "</select>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3711
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3712 return moduleFilterHtml;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3713 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3714
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3715 function toolbarModuleFilter() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3716 var toolbar = id( "qunit-testrunner-toolbar" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3717 moduleFilter = document.createElement( "span" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3718 moduleFilterHtml = toolbarModuleFilterHtml();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3719
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3720 if ( !toolbar || !moduleFilterHtml ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3721 return false;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3722 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3723
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3724 moduleFilter.setAttribute( "id", "qunit-modulefilter-container" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3725 moduleFilter.innerHTML = moduleFilterHtml;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3726
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3727 addEvent( moduleFilter.lastChild, "change", applyUrlParams );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3728
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3729 toolbar.appendChild( moduleFilter );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3730 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3731
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3732 function appendToolbar() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3733 var toolbar = id( "qunit-testrunner-toolbar" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3734
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3735 if ( toolbar ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3736 toolbar.appendChild( toolbarUrlConfigContainer() );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3737 toolbar.appendChild( toolbarLooseFilter() );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3738 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3739 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3740
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3741 function appendHeader() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3742 var header = id( "qunit-header" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3743
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3744 if ( header ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3745 header.innerHTML = "<a href='" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3746 setUrl({ filter: undefined, module: undefined, testId: undefined }) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3747 "'>" + header.innerHTML + "</a> ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3748 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3749 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3750
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3751 function appendBanner() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3752 var banner = id( "qunit-banner" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3753
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3754 if ( banner ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3755 banner.className = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3756 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3757 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3758
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3759 function appendTestResults() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3760 var tests = id( "qunit-tests" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3761 result = id( "qunit-testresult" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3762
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3763 if ( result ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3764 result.parentNode.removeChild( result );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3765 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3766
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3767 if ( tests ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3768 tests.innerHTML = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3769 result = document.createElement( "p" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3770 result.id = "qunit-testresult";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3771 result.className = "result";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3772 tests.parentNode.insertBefore( result, tests );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3773 result.innerHTML = "Running...<br />&#160;";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3774 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3775 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3776
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3777 function storeFixture() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3778 var fixture = id( "qunit-fixture" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3779 if ( fixture ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3780 config.fixture = fixture.innerHTML;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3781 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3782 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3783
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3784 function appendFilteredTest() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3785 var testId = QUnit.config.testId;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3786 if ( !testId || testId.length <= 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3787 return "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3788 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3789 return "<div id='qunit-filteredTest'>Rerunning selected tests: " + testId.join(", ") +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3790 " <a id='qunit-clearFilter' href='" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3791 setUrl({ filter: undefined, module: undefined, testId: undefined }) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3792 "'>" + "Run all tests" + "</a></div>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3793 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3794
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3795 function appendUserAgent() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3796 var userAgent = id( "qunit-userAgent" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3797
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3798 if ( userAgent ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3799 userAgent.innerHTML = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3800 userAgent.appendChild(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3801 document.createTextNode(
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3802 "QUnit " + QUnit.version + "; " + navigator.userAgent
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3803 )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3804 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3805 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3806 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3807
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3808 function appendTestsList( modules ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3809 var i, l, x, z, test, moduleObj;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3810
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3811 for ( i = 0, l = modules.length; i < l; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3812 moduleObj = modules[ i ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3813
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3814 if ( moduleObj.name ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3815 modulesList.push( moduleObj.name );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3816 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3817
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3818 for ( x = 0, z = moduleObj.tests.length; x < z; x++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3819 test = moduleObj.tests[ x ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3820
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3821 appendTest( test.name, test.testId, moduleObj.name );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3822 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3823 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3824 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3825
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3826 function appendTest( name, testId, moduleName ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3827 var title, rerunTrigger, testBlock, assertList,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3828 tests = id( "qunit-tests" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3829
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3830 if ( !tests ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3831 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3832 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3833
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3834 title = document.createElement( "strong" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3835 title.innerHTML = getNameHtml( name, moduleName );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3836
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3837 rerunTrigger = document.createElement( "a" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3838 rerunTrigger.innerHTML = "Rerun";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3839 rerunTrigger.href = setUrl({ testId: testId });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3840
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3841 testBlock = document.createElement( "li" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3842 testBlock.appendChild( title );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3843 testBlock.appendChild( rerunTrigger );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3844 testBlock.id = "qunit-test-output-" + testId;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3845
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3846 assertList = document.createElement( "ol" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3847 assertList.className = "qunit-assert-list";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3848
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3849 testBlock.appendChild( assertList );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3850
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3851 tests.appendChild( testBlock );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3852 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3853
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3854 // HTML Reporter initialization and load
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3855 QUnit.begin(function( details ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3856 var qunit = id( "qunit" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3857
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3858 // Fixture is the only one necessary to run without the #qunit element
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3859 storeFixture();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3860
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3861 if ( qunit ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3862 qunit.innerHTML =
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3863 "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3864 "<h2 id='qunit-banner'></h2>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3865 "<div id='qunit-testrunner-toolbar'></div>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3866 appendFilteredTest() +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3867 "<h2 id='qunit-userAgent'></h2>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3868 "<ol id='qunit-tests'></ol>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3869 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3870
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3871 appendHeader();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3872 appendBanner();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3873 appendTestResults();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3874 appendUserAgent();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3875 appendToolbar();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3876 appendTestsList( details.modules );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3877 toolbarModuleFilter();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3878
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3879 if ( qunit && config.hidepassed ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3880 addClass( qunit.lastChild, "hidepass" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3881 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3882 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3883
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3884 QUnit.done(function( details ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3885 var i, key,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3886 banner = id( "qunit-banner" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3887 tests = id( "qunit-tests" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3888 html = [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3889 "Tests completed in ",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3890 details.runtime,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3891 " milliseconds.<br />",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3892 "<span class='passed'>",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3893 details.passed,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3894 "</span> assertions of <span class='total'>",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3895 details.total,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3896 "</span> passed, <span class='failed'>",
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3897 details.failed,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3898 "</span> failed."
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3899 ].join( "" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3900
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3901 if ( banner ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3902 banner.className = details.failed ? "qunit-fail" : "qunit-pass";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3903 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3904
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3905 if ( tests ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3906 id( "qunit-testresult" ).innerHTML = html;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3907 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3908
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3909 if ( config.altertitle && defined.document && document.title ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3910
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3911 // show ✖ for good, ✔ for bad suite result in title
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3912 // use escape sequences in case file gets loaded with non-utf-8-charset
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3913 document.title = [
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3914 ( details.failed ? "\u2716" : "\u2714" ),
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3915 document.title.replace( /^[\u2714\u2716] /i, "" )
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3916 ].join( " " );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3917 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3918
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3919 // clear own sessionStorage items if all tests passed
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3920 if ( config.reorder && defined.sessionStorage && details.failed === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3921 for ( i = 0; i < sessionStorage.length; i++ ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3922 key = sessionStorage.key( i++ );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3923 if ( key.indexOf( "qunit-test-" ) === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3924 sessionStorage.removeItem( key );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3925 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3926 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3927 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3928
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3929 // scroll back to top to show results
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3930 if ( config.scrolltop && window.scrollTo ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3931 window.scrollTo( 0, 0 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3932 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3933 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3934
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3935 function getNameHtml( name, module ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3936 var nameHtml = "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3937
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3938 if ( module ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3939 nameHtml = "<span class='module-name'>" + escapeText( module ) + "</span>: ";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3940 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3941
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3942 nameHtml += "<span class='test-name'>" + escapeText( name ) + "</span>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3943
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3944 return nameHtml;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3945 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3946
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3947 QUnit.testStart(function( details ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3948 var running, testBlock, bad;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3949
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3950 testBlock = id( "qunit-test-output-" + details.testId );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3951 if ( testBlock ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3952 testBlock.className = "running";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3953 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3954
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3955 // Report later registered tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3956 appendTest( details.name, details.testId, details.module );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3957 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3958
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3959 running = id( "qunit-testresult" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3960 if ( running ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3961 bad = QUnit.config.reorder && defined.sessionStorage &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3962 +sessionStorage.getItem( "qunit-test-" + details.module + "-" + details.name );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3963
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3964 running.innerHTML = ( bad ?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3965 "Rerunning previously failed test: <br />" :
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3966 "Running: <br />" ) +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3967 getNameHtml( details.name, details.module );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3968 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3969
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3970 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3971
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3972 function stripHtml( string ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3973 // strip tags, html entity and whitespaces
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3974 return string.replace(/<\/?[^>]+(>|$)/g, "").replace(/\&quot;/g, "").replace(/\s+/g, "");
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3975 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3976
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3977 QUnit.log(function( details ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3978 var assertList, assertLi,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3979 message, expected, actual, diff,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3980 showDiff = false,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3981 testItem = id( "qunit-test-output-" + details.testId );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3982
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3983 if ( !testItem ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3984 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3985 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3986
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3987 message = escapeText( details.message ) || ( details.result ? "okay" : "failed" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3988 message = "<span class='test-message'>" + message + "</span>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3989 message += "<span class='runtime'>@ " + details.runtime + " ms</span>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3990
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3991 // pushFailure doesn't provide details.expected
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3992 // when it calls, it's implicit to also not show expected and diff stuff
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3993 // Also, we need to check details.expected existence, as it can exist and be undefined
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3994 if ( !details.result && hasOwn.call( details, "expected" ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3995 if ( details.negative ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3996 expected = escapeText( "NOT " + QUnit.dump.parse( details.expected ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3997 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3998 expected = escapeText( QUnit.dump.parse( details.expected ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
3999 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4000
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4001 actual = escapeText( QUnit.dump.parse( details.actual ) );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4002 message += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4003 expected +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4004 "</pre></td></tr>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4005
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4006 if ( actual !== expected ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4007
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4008 message += "<tr class='test-actual'><th>Result: </th><td><pre>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4009 actual + "</pre></td></tr>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4010
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4011 // Don't show diff if actual or expected are booleans
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4012 if ( !( /^(true|false)$/.test( actual ) ) &&
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4013 !( /^(true|false)$/.test( expected ) ) ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4014 diff = QUnit.diff( expected, actual );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4015 showDiff = stripHtml( diff ).length !==
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4016 stripHtml( expected ).length +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4017 stripHtml( actual ).length;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4018 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4019
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4020 // Don't show diff if expected and actual are totally different
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4021 if ( showDiff ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4022 message += "<tr class='test-diff'><th>Diff: </th><td><pre>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4023 diff + "</pre></td></tr>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4024 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4025 } else if ( expected.indexOf( "[object Array]" ) !== -1 ||
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4026 expected.indexOf( "[object Object]" ) !== -1 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4027 message += "<tr class='test-message'><th>Message: </th><td>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4028 "Diff suppressed as the depth of object is more than current max depth (" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4029 QUnit.config.maxDepth + ").<p>Hint: Use <code>QUnit.dump.maxDepth</code> to " +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4030 " run with a higher max depth or <a href='" + setUrl({ maxDepth: -1 }) + "'>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4031 "Rerun</a> without max depth.</p></td></tr>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4032 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4033
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4034 if ( details.source ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4035 message += "<tr class='test-source'><th>Source: </th><td><pre>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4036 escapeText( details.source ) + "</pre></td></tr>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4037 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4038
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4039 message += "</table>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4040
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4041 // this occours when pushFailure is set and we have an extracted stack trace
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4042 } else if ( !details.result && details.source ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4043 message += "<table>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4044 "<tr class='test-source'><th>Source: </th><td><pre>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4045 escapeText( details.source ) + "</pre></td></tr>" +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4046 "</table>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4047 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4048
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4049 assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4050
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4051 assertLi = document.createElement( "li" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4052 assertLi.className = details.result ? "pass" : "fail";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4053 assertLi.innerHTML = message;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4054 assertList.appendChild( assertLi );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4055 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4056
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4057 QUnit.testDone(function( details ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4058 var testTitle, time, testItem, assertList,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4059 good, bad, testCounts, skipped, sourceName,
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4060 tests = id( "qunit-tests" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4061
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4062 if ( !tests ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4063 return;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4064 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4065
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4066 testItem = id( "qunit-test-output-" + details.testId );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4067
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4068 assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4069
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4070 good = details.passed;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4071 bad = details.failed;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4072
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4073 // store result when possible
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4074 if ( config.reorder && defined.sessionStorage ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4075 if ( bad ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4076 sessionStorage.setItem( "qunit-test-" + details.module + "-" + details.name, bad );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4077 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4078 sessionStorage.removeItem( "qunit-test-" + details.module + "-" + details.name );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4079 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4080 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4081
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4082 if ( bad === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4083
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4084 // Collapse the passing tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4085 addClass( assertList, "qunit-collapsed" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4086 } else if ( bad && config.collapse && !collapseNext ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4087
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4088 // Skip collapsing the first failing test
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4089 collapseNext = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4090 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4091
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4092 // Collapse remaining tests
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4093 addClass( assertList, "qunit-collapsed" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4094 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4095
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4096 // testItem.firstChild is the test name
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4097 testTitle = testItem.firstChild;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4098
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4099 testCounts = bad ?
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4100 "<b class='failed'>" + bad + "</b>, " + "<b class='passed'>" + good + "</b>, " :
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4101 "";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4102
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4103 testTitle.innerHTML += " <b class='counts'>(" + testCounts +
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4104 details.assertions.length + ")</b>";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4105
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4106 if ( details.skipped ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4107 testItem.className = "skipped";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4108 skipped = document.createElement( "em" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4109 skipped.className = "qunit-skipped-label";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4110 skipped.innerHTML = "skipped";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4111 testItem.insertBefore( skipped, testTitle );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4112 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4113 addEvent( testTitle, "click", function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4114 toggleClass( assertList, "qunit-collapsed" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4115 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4116
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4117 testItem.className = bad ? "fail" : "pass";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4118
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4119 time = document.createElement( "span" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4120 time.className = "runtime";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4121 time.innerHTML = details.runtime + " ms";
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4122 testItem.insertBefore( time, assertList );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4123 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4124
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4125 // Show the source of the test when showing assertions
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4126 if ( details.source ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4127 sourceName = document.createElement( "p" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4128 sourceName.innerHTML = "<strong>Source: </strong>" + details.source;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4129 addClass( sourceName, "qunit-source" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4130 if ( bad === 0 ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4131 addClass( sourceName, "qunit-collapsed" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4132 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4133 addEvent( testTitle, "click", function() {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4134 toggleClass( sourceName, "qunit-collapsed" );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4135 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4136 testItem.appendChild( sourceName );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4137 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4138 });
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4139
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4140 if ( defined.document ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4141
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4142 // Avoid readyState issue with phantomjs
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4143 // Ref: #818
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4144 var notPhantom = ( function( p ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4145 return !( p && p.version && p.version.major > 0 );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4146 } )( window.phantom );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4147
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4148 if ( notPhantom && document.readyState === "complete" ) {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4149 QUnit.load();
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4150 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4151 addEvent( window, "load", QUnit.load );
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4152 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4153 } else {
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4154 config.pageLoaded = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4155 config.autorun = true;
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4156 }
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4157
89a5ca7d44f7 new: rename branch to task, add fields in task table, add scroll bar
Zoe Hong <zhong@mpiwg-berlin.mpg.de>
parents:
diff changeset
4158 })();