Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jio-main
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Hardik Juneja
jio-main
Commits
fb4891d1
Commit
fb4891d1
authored
Sep 19, 2013
by
Tristan Cavelier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sinon.js updated
parent
fd8a8709
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
519 additions
and
452 deletions
+519
-452
lib/sinon/sinon.js
lib/sinon/sinon.js
+519
-452
No files found.
lib/sinon/sinon.js
View file @
fb4891d1
/**
* Sinon.JS 1.
6.0, 2013/02/18
* Sinon.JS 1.
7.3, 2013/06/20
*
* @author Christian Johansen (christian@cjohansen.no)
* @author Contributors: https://github.com/cjohansen/Sinon.JS/blob/master/AUTHORS
...
...
@@ -33,9 +33,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
var
sinon
=
(
function
()
{
"
use strict
"
;
this
.
sinon
=
(
function
()
{
var
buster
=
(
function
(
setTimeout
,
B
)
{
var
isNode
=
typeof
require
==
"
function
"
&&
typeof
module
==
"
object
"
;
var
div
=
typeof
document
!=
"
undefined
"
&&
document
.
createElement
(
"
div
"
);
...
...
@@ -505,6 +503,10 @@ var sinon = (function (buster) {
}
}
function
isRestorable
(
obj
)
{
return
typeof
obj
===
"
function
"
&&
typeof
obj
.
restore
===
"
function
"
&&
obj
.
restore
.
sinon
;
}
var
sinon
=
{
wrapMethod
:
function
wrapMethod
(
object
,
property
,
method
)
{
if
(
!
object
)
{
...
...
@@ -617,6 +619,10 @@ var sinon = (function (buster) {
return
true
;
}
if
(
aString
==
"
[object Date]
"
)
{
return
a
.
valueOf
()
===
b
.
valueOf
();
}
var
prop
,
aLength
=
0
,
bLength
=
0
;
for
(
prop
in
a
)
{
...
...
@@ -631,11 +637,7 @@ var sinon = (function (buster) {
bLength
+=
1
;
}
if
(
aLength
!=
bLength
)
{
return
false
;
}
return
true
;
return
aLength
==
bLength
;
},
functionName
:
function
functionName
(
func
)
{
...
...
@@ -755,6 +757,19 @@ var sinon = (function (buster) {
throw
new
TypeError
(
"
The constructor should be a function.
"
);
}
return
sinon
.
stub
(
sinon
.
create
(
constructor
.
prototype
));
},
restore
:
function
(
object
)
{
if
(
object
!==
null
&&
typeof
object
===
"
object
"
)
{
for
(
var
prop
in
object
)
{
if
(
isRestorable
(
object
[
prop
]))
{
object
[
prop
].
restore
();
}
}
}
else
if
(
isRestorable
(
object
))
{
object
.
restore
();
}
}
};
...
...
@@ -1044,70 +1059,225 @@ var sinon = (function (buster) {
/*jslint eqeqeq: false, onevar: false, plusplus: false*/
/*global module, require, sinon*/
/**
* Spy
function
s
* Spy
call
s
*
* @author Christian Johansen (christian@cjohansen.no)
* @author Maximilian Antoni (mail@maxantoni.de)
* @license BSD
*
* Copyright (c) 2010-2013 Christian Johansen
* Copyright (c) 2013 Maximilian Antoni
*/
var
commonJSModule
=
typeof
module
==
"
object
"
&&
typeof
require
==
"
function
"
;
if
(
!
this
.
sinon
&&
commonJSModule
)
{
var
sinon
=
require
(
"
../sinon
"
);
}
(
function
(
sinon
)
{
var
commonJSModule
=
typeof
module
==
"
object
"
&&
typeof
require
==
"
function
"
;
var
spyCall
;
var
callId
=
0
;
var
push
=
[].
push
;
function
throwYieldError
(
proxy
,
text
,
args
)
{
var
msg
=
sinon
.
functionName
(
proxy
)
+
text
;
if
(
args
.
length
)
{
msg
+=
"
Received [
"
+
slice
.
call
(
args
).
join
(
"
,
"
)
+
"
]
"
;
}
throw
new
Error
(
msg
);
}
var
slice
=
Array
.
prototype
.
slice
;
if
(
!
sinon
&&
commonJSModule
)
{
sinon
=
require
(
"
../sinon
"
);
var
callProto
=
{
calledOn
:
function
calledOn
(
thisValue
)
{
if
(
sinon
.
match
&&
sinon
.
match
.
isMatcher
(
thisValue
))
{
return
thisValue
.
test
(
this
.
thisValue
);
}
return
this
.
thisValue
===
thisValue
;
},
if
(
!
sinon
)
{
return
;
calledWith
:
function
calledWith
()
{
for
(
var
i
=
0
,
l
=
arguments
.
length
;
i
<
l
;
i
+=
1
)
{
if
(
!
sinon
.
deepEqual
(
arguments
[
i
],
this
.
args
[
i
]))
{
return
false
;
}
}
function
spy
(
object
,
property
)
{
if
(
!
property
&&
typeof
object
==
"
function
"
)
{
return
spy
.
create
(
object
);
return
true
;
},
calledWithMatch
:
function
calledWithMatch
()
{
for
(
var
i
=
0
,
l
=
arguments
.
length
;
i
<
l
;
i
+=
1
)
{
var
actual
=
this
.
args
[
i
];
var
expectation
=
arguments
[
i
];
if
(
!
sinon
.
match
||
!
sinon
.
match
(
expectation
).
test
(
actual
))
{
return
false
;
}
}
return
true
;
},
if
(
!
object
&&
!
property
)
{
return
spy
.
create
(
function
()
{
});
calledWithExactly
:
function
calledWithExactly
()
{
return
arguments
.
length
==
this
.
args
.
length
&&
this
.
calledWith
.
apply
(
this
,
arguments
);
},
notCalledWith
:
function
notCalledWith
()
{
return
!
this
.
calledWith
.
apply
(
this
,
arguments
);
},
notCalledWithMatch
:
function
notCalledWithMatch
()
{
return
!
this
.
calledWithMatch
.
apply
(
this
,
arguments
);
},
returned
:
function
returned
(
value
)
{
return
sinon
.
deepEqual
(
value
,
this
.
returnValue
);
},
threw
:
function
threw
(
error
)
{
if
(
typeof
error
===
"
undefined
"
||
!
this
.
exception
)
{
return
!!
this
.
exception
;
}
var
method
=
object
[
property
];
return
sinon
.
wrapMethod
(
object
,
property
,
spy
.
create
(
method
));
return
this
.
exception
===
error
||
this
.
exception
.
name
===
error
;
},
calledWithNew
:
function
calledWithNew
(
thisValue
)
{
return
this
.
thisValue
instanceof
this
.
proxy
;
},
calledBefore
:
function
(
other
)
{
return
this
.
callId
<
other
.
callId
;
},
calledAfter
:
function
(
other
)
{
return
this
.
callId
>
other
.
callId
;
},
callArg
:
function
(
pos
)
{
this
.
args
[
pos
]();
},
callArgOn
:
function
(
pos
,
thisValue
)
{
this
.
args
[
pos
].
apply
(
thisValue
);
},
callArgWith
:
function
(
pos
)
{
this
.
callArgOnWith
.
apply
(
this
,
[
pos
,
null
].
concat
(
slice
.
call
(
arguments
,
1
)));
},
callArgOnWith
:
function
(
pos
,
thisValue
)
{
var
args
=
slice
.
call
(
arguments
,
2
);
this
.
args
[
pos
].
apply
(
thisValue
,
args
);
},
"
yield
"
:
function
()
{
this
.
yieldOn
.
apply
(
this
,
[
null
].
concat
(
slice
.
call
(
arguments
,
0
)));
},
yieldOn
:
function
(
thisValue
)
{
var
args
=
this
.
args
;
for
(
var
i
=
0
,
l
=
args
.
length
;
i
<
l
;
++
i
)
{
if
(
typeof
args
[
i
]
===
"
function
"
)
{
args
[
i
].
apply
(
thisValue
,
slice
.
call
(
arguments
,
1
));
return
;
}
}
throwYieldError
(
this
.
proxy
,
"
cannot yield since no callback was passed.
"
,
args
);
},
sinon
.
extend
(
spy
,
(
function
()
{
yieldTo
:
function
(
prop
)
{
this
.
yieldToOn
.
apply
(
this
,
[
prop
,
null
].
concat
(
slice
.
call
(
arguments
,
1
)));
},
function
delegateToCalls
(
api
,
method
,
matchAny
,
actual
,
notCalled
)
{
api
[
method
]
=
function
()
{
if
(
!
this
.
called
)
{
if
(
notCalled
)
{
return
notCalled
.
apply
(
this
,
arguments
);
yieldToOn
:
function
(
prop
,
thisValue
)
{
var
args
=
this
.
args
;
for
(
var
i
=
0
,
l
=
args
.
length
;
i
<
l
;
++
i
)
{
if
(
args
[
i
]
&&
typeof
args
[
i
][
prop
]
===
"
function
"
)
{
args
[
i
][
prop
].
apply
(
thisValue
,
slice
.
call
(
arguments
,
2
));
return
;
}
return
false
;
}
throwYieldError
(
this
.
proxy
,
"
cannot yield to '
"
+
prop
+
"
' since no callback was passed.
"
,
args
);
},
var
currentCall
;
var
matches
=
0
;
toString
:
function
()
{
var
callStr
=
this
.
proxy
.
toString
()
+
"
(
"
;
var
args
=
[];
for
(
var
i
=
0
,
l
=
this
.
callCount
;
i
<
l
;
i
+=
1
)
{
currentCall
=
this
.
getCall
(
i
);
for
(
var
i
=
0
,
l
=
this
.
args
.
length
;
i
<
l
;
++
i
)
{
args
.
push
(
sinon
.
format
(
this
.
args
[
i
]));
}
if
(
currentCall
[
actual
||
method
].
apply
(
currentCall
,
arguments
))
{
matches
+=
1
;
callStr
=
callStr
+
args
.
join
(
"
,
"
)
+
"
)
"
;
if
(
matchAny
)
{
return
true
;
if
(
typeof
this
.
returnValue
!=
"
undefined
"
)
{
callStr
+=
"
=>
"
+
sinon
.
format
(
this
.
returnValue
)
;
}
if
(
this
.
exception
)
{
callStr
+=
"
!
"
+
this
.
exception
.
name
;
if
(
this
.
exception
.
message
)
{
callStr
+=
"
(
"
+
this
.
exception
.
message
+
"
)
"
;
}
}
return
matches
===
this
.
callCount
;
return
callStr
;
}
};
callProto
.
invokeCallback
=
callProto
.
yield
;
function
createSpyCall
(
spy
,
thisValue
,
args
,
returnValue
,
exception
,
id
)
{
if
(
typeof
id
!==
"
number
"
)
{
throw
new
TypeError
(
"
Call id is not a number
"
);
}
var
proxyCall
=
sinon
.
create
(
callProto
);
proxyCall
.
proxy
=
spy
;
proxyCall
.
thisValue
=
thisValue
;
proxyCall
.
args
=
args
;
proxyCall
.
returnValue
=
returnValue
;
proxyCall
.
exception
=
exception
;
proxyCall
.
callId
=
id
;
return
proxyCall
;
};
createSpyCall
.
toString
=
callProto
.
toString
;
// used by mocks
sinon
.
spyCall
=
createSpyCall
;
}(
typeof
sinon
==
"
object
"
&&
sinon
||
null
));
/**
* @depend ../sinon.js
*/
/*jslint eqeqeq: false, onevar: false, plusplus: false*/
/*global module, require, sinon*/
/**
* Spy functions
*
* @author Christian Johansen (christian@cjohansen.no)
* @license BSD
*
* Copyright (c) 2010-2013 Christian Johansen
*/
(
function
(
sinon
)
{
var
commonJSModule
=
typeof
module
==
"
object
"
&&
typeof
require
==
"
function
"
;
var
push
=
Array
.
prototype
.
push
;
var
slice
=
Array
.
prototype
.
slice
;
var
callId
=
0
;
function
spy
(
object
,
property
)
{
if
(
!
property
&&
typeof
object
==
"
function
"
)
{
return
spy
.
create
(
object
);
}
if
(
!
object
&&
!
property
)
{
return
spy
.
create
(
function
()
{
});
}
var
method
=
object
[
property
];
return
sinon
.
wrapMethod
(
object
,
property
,
spy
.
create
(
method
));
}
function
matchingFake
(
fakes
,
args
,
strict
)
{
...
...
@@ -1243,7 +1413,7 @@ var sinon = (function (buster) {
return
null
;
}
return
spyCall
.
create
(
this
,
this
.
thisValues
[
i
],
this
.
args
[
i
],
return
sinon
.
spyCall
(
this
,
this
.
thisValues
[
i
],
this
.
args
[
i
],
this
.
returnValues
[
i
],
this
.
exceptions
[
i
],
this
.
callIds
[
i
]);
},
...
...
@@ -1333,45 +1503,73 @@ var sinon = (function (buster) {
}
};
delegateToCalls
(
spyApi
,
"
calledOn
"
,
true
);
delegateToCalls
(
spyApi
,
"
alwaysCalledOn
"
,
false
,
"
calledOn
"
);
delegateToCalls
(
spyApi
,
"
calledWith
"
,
true
);
delegateToCalls
(
spyApi
,
"
calledWithMatch
"
,
true
);
delegateToCalls
(
spyApi
,
"
alwaysCalledWith
"
,
false
,
"
calledWith
"
);
delegateToCalls
(
spyApi
,
"
alwaysCalledWithMatch
"
,
false
,
"
calledWithMatch
"
);
delegateToCalls
(
spyApi
,
"
calledWithExactly
"
,
true
);
delegateToCalls
(
spyApi
,
"
alwaysCalledWithExactly
"
,
false
,
"
calledWithExactly
"
);
delegateToCalls
(
spyApi
,
"
neverCalledWith
"
,
false
,
"
notCalledWith
"
,
function
delegateToCalls
(
method
,
matchAny
,
actual
,
notCalled
)
{
spyApi
[
method
]
=
function
()
{
if
(
!
this
.
called
)
{
if
(
notCalled
)
{
return
notCalled
.
apply
(
this
,
arguments
);
}
return
false
;
}
var
currentCall
;
var
matches
=
0
;
for
(
var
i
=
0
,
l
=
this
.
callCount
;
i
<
l
;
i
+=
1
)
{
currentCall
=
this
.
getCall
(
i
);
if
(
currentCall
[
actual
||
method
].
apply
(
currentCall
,
arguments
))
{
matches
+=
1
;
if
(
matchAny
)
{
return
true
;
}
}
}
return
matches
===
this
.
callCount
;
};
}
delegateToCalls
(
"
calledOn
"
,
true
);
delegateToCalls
(
"
alwaysCalledOn
"
,
false
,
"
calledOn
"
);
delegateToCalls
(
"
calledWith
"
,
true
);
delegateToCalls
(
"
calledWithMatch
"
,
true
);
delegateToCalls
(
"
alwaysCalledWith
"
,
false
,
"
calledWith
"
);
delegateToCalls
(
"
alwaysCalledWithMatch
"
,
false
,
"
calledWithMatch
"
);
delegateToCalls
(
"
calledWithExactly
"
,
true
);
delegateToCalls
(
"
alwaysCalledWithExactly
"
,
false
,
"
calledWithExactly
"
);
delegateToCalls
(
"
neverCalledWith
"
,
false
,
"
notCalledWith
"
,
function
()
{
return
true
;
});
delegateToCalls
(
spyApi
,
"
neverCalledWithMatch
"
,
false
,
"
notCalledWithMatch
"
,
delegateToCalls
(
"
neverCalledWithMatch
"
,
false
,
"
notCalledWithMatch
"
,
function
()
{
return
true
;
});
delegateToCalls
(
spyApi
,
"
threw
"
,
true
);
delegateToCalls
(
spyApi
,
"
alwaysThrew
"
,
false
,
"
threw
"
);
delegateToCalls
(
spyApi
,
"
returned
"
,
true
);
delegateToCalls
(
spyApi
,
"
alwaysReturned
"
,
false
,
"
returned
"
);
delegateToCalls
(
spyApi
,
"
calledWithNew
"
,
true
);
delegateToCalls
(
spyApi
,
"
alwaysCalledWithNew
"
,
false
,
"
calledWithNew
"
);
delegateToCalls
(
spyApi
,
"
callArg
"
,
false
,
"
callArgWith
"
,
function
()
{
delegateToCalls
(
"
threw
"
,
true
);
delegateToCalls
(
"
alwaysThrew
"
,
false
,
"
threw
"
);
delegateToCalls
(
"
returned
"
,
true
);
delegateToCalls
(
"
alwaysReturned
"
,
false
,
"
returned
"
);
delegateToCalls
(
"
calledWithNew
"
,
true
);
delegateToCalls
(
"
alwaysCalledWithNew
"
,
false
,
"
calledWithNew
"
);
delegateToCalls
(
"
callArg
"
,
false
,
"
callArgWith
"
,
function
()
{
throw
new
Error
(
this
.
toString
()
+
"
cannot call arg since it was not yet invoked.
"
);
});
spyApi
.
callArgWith
=
spyApi
.
callArg
;
delegateToCalls
(
spyApi
,
"
callArgOn
"
,
false
,
"
callArgOnWith
"
,
function
()
{
delegateToCalls
(
"
callArgOn
"
,
false
,
"
callArgOnWith
"
,
function
()
{
throw
new
Error
(
this
.
toString
()
+
"
cannot call arg since it was not yet invoked.
"
);
});
spyApi
.
callArgOnWith
=
spyApi
.
callArgOn
;
delegateToCalls
(
spyApi
,
"
yield
"
,
false
,
"
yield
"
,
function
()
{
delegateToCalls
(
"
yield
"
,
false
,
"
yield
"
,
function
()
{
throw
new
Error
(
this
.
toString
()
+
"
cannot yield since it was not yet invoked.
"
);
});
// "invokeCallback" is an alias for "yield" since "yield" is invalid in strict mode.
spyApi
.
invokeCallback
=
spyApi
.
yield
;
delegateToCalls
(
spyApi
,
"
yieldOn
"
,
false
,
"
yieldOn
"
,
function
()
{
delegateToCalls
(
"
yieldOn
"
,
false
,
"
yieldOn
"
,
function
()
{
throw
new
Error
(
this
.
toString
()
+
"
cannot yield since it was not yet invoked.
"
);
});
delegateToCalls
(
spyApi
,
"
yieldTo
"
,
false
,
"
yieldTo
"
,
function
(
property
)
{
delegateToCalls
(
"
yieldTo
"
,
false
,
"
yieldTo
"
,
function
(
property
)
{
throw
new
Error
(
this
.
toString
()
+
"
cannot yield to '
"
+
property
+
"
' since it was not yet invoked.
"
);
});
delegateToCalls
(
spyApi
,
"
yieldToOn
"
,
false
,
"
yieldToOn
"
,
function
(
property
)
{
delegateToCalls
(
"
yieldToOn
"
,
false
,
"
yieldToOn
"
,
function
(
property
)
{
throw
new
Error
(
this
.
toString
()
+
"
cannot yield to '
"
+
property
+
"
' since it was not yet invoked.
"
);
});
...
...
@@ -1420,183 +1618,9 @@ var sinon = (function (buster) {
}
};
return
spyApi
;
}()));
spyCall
=
(
function
()
{
function
throwYieldError
(
proxy
,
text
,
args
)
{
var
msg
=
sinon
.
functionName
(
proxy
)
+
text
;
if
(
args
.
length
)
{
msg
+=
"
Received [
"
+
slice
.
call
(
args
).
join
(
"
,
"
)
+
"
]
"
;
}
throw
new
Error
(
msg
);
}
var
callApi
=
{
create
:
function
create
(
spy
,
thisValue
,
args
,
returnValue
,
exception
,
id
)
{
var
proxyCall
=
sinon
.
create
(
spyCall
);
delete
proxyCall
.
create
;
proxyCall
.
proxy
=
spy
;
proxyCall
.
thisValue
=
thisValue
;
proxyCall
.
args
=
args
;
proxyCall
.
returnValue
=
returnValue
;
proxyCall
.
exception
=
exception
;
proxyCall
.
callId
=
typeof
id
==
"
number
"
&&
id
||
callId
++
;
sinon
.
extend
(
spy
,
spyApi
);
return
proxyCall
;
},
calledOn
:
function
calledOn
(
thisValue
)
{
if
(
sinon
.
match
&&
sinon
.
match
.
isMatcher
(
thisValue
))
{
return
thisValue
.
test
(
this
.
thisValue
);
}
return
this
.
thisValue
===
thisValue
;
},
calledWith
:
function
calledWith
()
{
for
(
var
i
=
0
,
l
=
arguments
.
length
;
i
<
l
;
i
+=
1
)
{
if
(
!
sinon
.
deepEqual
(
arguments
[
i
],
this
.
args
[
i
]))
{
return
false
;
}
}
return
true
;
},
calledWithMatch
:
function
calledWithMatch
()
{
for
(
var
i
=
0
,
l
=
arguments
.
length
;
i
<
l
;
i
+=
1
)
{
var
actual
=
this
.
args
[
i
];
var
expectation
=
arguments
[
i
];
if
(
!
sinon
.
match
||
!
sinon
.
match
(
expectation
).
test
(
actual
))
{
return
false
;
}
}
return
true
;
},
calledWithExactly
:
function
calledWithExactly
()
{
return
arguments
.
length
==
this
.
args
.
length
&&
this
.
calledWith
.
apply
(
this
,
arguments
);
},
notCalledWith
:
function
notCalledWith
()
{
return
!
this
.
calledWith
.
apply
(
this
,
arguments
);
},
notCalledWithMatch
:
function
notCalledWithMatch
()
{
return
!
this
.
calledWithMatch
.
apply
(
this
,
arguments
);
},
returned
:
function
returned
(
value
)
{
return
sinon
.
deepEqual
(
value
,
this
.
returnValue
);
},
threw
:
function
threw
(
error
)
{
if
(
typeof
error
==
"
undefined
"
||
!
this
.
exception
)
{
return
!!
this
.
exception
;
}
if
(
typeof
error
==
"
string
"
)
{
return
this
.
exception
.
name
==
error
;
}
return
this
.
exception
===
error
;
},
calledWithNew
:
function
calledWithNew
(
thisValue
)
{
return
this
.
thisValue
instanceof
this
.
proxy
;
},
calledBefore
:
function
(
other
)
{
return
this
.
callId
<
other
.
callId
;
},
calledAfter
:
function
(
other
)
{
return
this
.
callId
>
other
.
callId
;
},
callArg
:
function
(
pos
)
{
this
.
args
[
pos
]();
},
callArgOn
:
function
(
pos
,
thisValue
)
{
this
.
args
[
pos
].
apply
(
thisValue
);
},
callArgWith
:
function
(
pos
)
{
this
.
callArgOnWith
.
apply
(
this
,
[
pos
,
null
].
concat
(
slice
.
call
(
arguments
,
1
)));
},
callArgOnWith
:
function
(
pos
,
thisValue
)
{
var
args
=
slice
.
call
(
arguments
,
2
);
this
.
args
[
pos
].
apply
(
thisValue
,
args
);
},
"
yield
"
:
function
()
{
this
.
yieldOn
.
apply
(
this
,
[
null
].
concat
(
slice
.
call
(
arguments
,
0
)));
},
yieldOn
:
function
(
thisValue
)
{
var
args
=
this
.
args
;
for
(
var
i
=
0
,
l
=
args
.
length
;
i
<
l
;
++
i
)
{
if
(
typeof
args
[
i
]
===
"
function
"
)
{
args
[
i
].
apply
(
thisValue
,
slice
.
call
(
arguments
,
1
));
return
;
}
}
throwYieldError
(
this
.
proxy
,
"
cannot yield since no callback was passed.
"
,
args
);
},
yieldTo
:
function
(
prop
)
{
this
.
yieldToOn
.
apply
(
this
,
[
prop
,
null
].
concat
(
slice
.
call
(
arguments
,
1
)));
},
yieldToOn
:
function
(
prop
,
thisValue
)
{
var
args
=
this
.
args
;
for
(
var
i
=
0
,
l
=
args
.
length
;
i
<
l
;
++
i
)
{
if
(
args
[
i
]
&&
typeof
args
[
i
][
prop
]
===
"
function
"
)
{
args
[
i
][
prop
].
apply
(
thisValue
,
slice
.
call
(
arguments
,
2
));
return
;
}
}
throwYieldError
(
this
.
proxy
,
"
cannot yield to '
"
+
prop
+
"
' since no callback was passed.
"
,
args
);
},
toString
:
function
()
{
var
callStr
=
this
.
proxy
.
toString
()
+
"
(
"
;
var
args
=
[];
for
(
var
i
=
0
,
l
=
this
.
args
.
length
;
i
<
l
;
++
i
)
{
push
.
call
(
args
,
sinon
.
format
(
this
.
args
[
i
]));
}
callStr
=
callStr
+
args
.
join
(
"
,
"
)
+
"
)
"
;
if
(
typeof
this
.
returnValue
!=
"
undefined
"
)
{
callStr
+=
"
=>
"
+
sinon
.
format
(
this
.
returnValue
);
}
if
(
this
.
exception
)
{
callStr
+=
"
!
"
+
this
.
exception
.
name
;
if
(
this
.
exception
.
message
)
{
callStr
+=
"
(
"
+
this
.
exception
.
message
+
"
)
"
;
}
}
return
callStr
;
}
};
callApi
.
invokeCallback
=
callApi
.
yield
;
return
callApi
;
}());
spy
.
spyCall
=
spyCall
;
// This steps outside the module sandbox and will be removed
sinon
.
spyCall
=
spyCall
;
spy
.
spyCall
=
sinon
.
spyCall
;
if
(
commonJSModule
)
{
module
.
exports
=
spy
;
...
...
@@ -2926,15 +2950,16 @@ if (typeof sinon == "undefined") {
(
function
()
{
var
push
=
[].
push
;
sinon
.
Event
=
function
Event
(
type
,
bubbles
,
cancelable
)
{
this
.
initEvent
(
type
,
bubbles
,
cancelable
);
sinon
.
Event
=
function
Event
(
type
,
bubbles
,
cancelable
,
target
)
{
this
.
initEvent
(
type
,
bubbles
,
cancelable
,
target
);
};
sinon
.
Event
.
prototype
=
{
initEvent
:
function
(
type
,
bubbles
,
cancelable
)
{
initEvent
:
function
(
type
,
bubbles
,
cancelable
,
target
)
{
this
.
type
=
type
;
this
.
bubbles
=
bubbles
;
this
.
cancelable
=
cancelable
;
this
.
target
=
target
;
},
stopPropagation
:
function
()
{},
...
...
@@ -3038,6 +3063,23 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
this
.
status
=
0
;
this
.
statusText
=
""
;
var
xhr
=
this
;
var
events
=
[
"
loadstart
"
,
"
load
"
,
"
abort
"
,
"
loadend
"
];
function
addEventListener
(
eventName
)
{
xhr
.
addEventListener
(
eventName
,
function
(
event
)
{
var
listener
=
xhr
[
"
on
"
+
eventName
];
if
(
listener
&&
typeof
listener
==
"
function
"
)
{
listener
(
event
);
}
});
}
for
(
var
i
=
events
.
length
-
1
;
i
>=
0
;
i
--
)
{
addEventListener
(
events
[
i
]);
}
if
(
typeof
FakeXMLHttpRequest
.
onCreate
==
"
function
"
)
{
FakeXMLHttpRequest
.
onCreate
(
this
);
}
...
...
@@ -3191,6 +3233,13 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
}
this
.
dispatchEvent
(
new
sinon
.
Event
(
"
readystatechange
"
));
switch
(
this
.
readyState
)
{
case
FakeXMLHttpRequest
.
DONE
:
this
.
dispatchEvent
(
new
sinon
.
Event
(
"
load
"
,
false
,
false
,
this
));
this
.
dispatchEvent
(
new
sinon
.
Event
(
"
loadend
"
,
false
,
false
,
this
));
break
;
}
},
setRequestHeader
:
function
setRequestHeader
(
header
,
value
)
{
...
...
@@ -3246,6 +3295,8 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
if
(
typeof
this
.
onSend
==
"
function
"
)
{
this
.
onSend
(
this
);
}
this
.
dispatchEvent
(
new
sinon
.
Event
(
"
loadstart
"
,
false
,
false
,
this
));
},
abort
:
function
abort
()
{
...
...
@@ -3260,6 +3311,11 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
}
this
.
readyState
=
sinon
.
FakeXMLHttpRequest
.
UNSENT
;
this
.
dispatchEvent
(
new
sinon
.
Event
(
"
abort
"
,
false
,
false
,
this
));
if
(
typeof
this
.
onerror
===
"
function
"
)
{
this
.
onerror
();
}
},
getResponseHeader
:
function
getResponseHeader
(
header
)
{
...
...
@@ -3340,6 +3396,10 @@ sinon.xhr = { XMLHttpRequest: this.XMLHttpRequest };
this
.
status
=
typeof
status
==
"
number
"
?
status
:
200
;
this
.
statusText
=
FakeXMLHttpRequest
.
statusCodes
[
this
.
status
];
this
.
setResponseBody
(
body
||
""
);
if
(
typeof
this
.
onload
===
"
function
"
){
this
.
onload
();
}
}
});
...
...
@@ -4149,7 +4209,14 @@ if (typeof module == "object" && typeof require == "function") {
if
(
!
sinon
.
calledInOrder
(
arguments
))
{
try
{
expected
=
[].
join
.
call
(
arguments
,
"
,
"
);
actual
=
sinon
.
orderByFirstCall
(
slice
.
call
(
arguments
)).
join
(
"
,
"
);
var
calls
=
slice
.
call
(
arguments
);
var
i
=
calls
.
length
;
while
(
i
)
{
if
(
!
calls
[
--
i
].
called
)
{
calls
.
splice
(
i
,
1
);
}
}
actual
=
sinon
.
orderByFirstCall
(
calls
).
join
(
"
,
"
);
}
catch
(
e
)
{
// If this fails, we'll just fall back to the blank string
}
...
...
@@ -4218,6 +4285,6 @@ if (typeof module == "object" && typeof require == "function") {
}
else
{
sinon
.
assert
=
assert
;
}
}(
typeof
sinon
==
"
object
"
&&
sinon
||
null
,
typeof
window
!=
"
undefined
"
?
window
:
global
));
}(
typeof
sinon
==
"
object
"
&&
sinon
||
null
,
typeof
window
!=
"
undefined
"
?
window
:
(
typeof
self
!=
"
undefined
"
)
?
self
:
global
));
return
sinon
;}.
call
(
typeof
window
!=
'
undefined
'
&&
window
||
{}));
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment