diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..a6c0eca --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..e8b980b --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/doc/files.html b/doc/files.html new file mode 100644 index 0000000..cb01d0c --- /dev/null +++ b/doc/files.html @@ -0,0 +1,376 @@ + + + + + + JsDoc Reference - File Index + + + + + + + + +
+
Class Index +| File Index
+
+

Classes

+ +
+
+ +
+

File Index

+ + +
+

src/ActionCollection.js

+ +
+ + + + +
+
+
+ +
+

src/base.js

+ +
+ + + + +
+
+
+ +
+

src/Env.js

+ +
+ + + + +
+
+
+ +
+

src/jsUnitMockTimeout.js

+ +
+ + + + +
+
+
+ +
+

src/Matchers.js

+ +
+ + + + +
+
+
+ +
+

src/NestedResults.js

+ +
+ + + + +
+
+
+ +
+

src/PrettyPrinter.js

+ +
+ + + + +
+
+
+ +
+

src/QueuedFunction.js

+ +
+ + + + +
+
+
+ +
+

src/Reporters.js

+ +
+ + + + +
+
+
+ +
+

src/Runner.js

+ +
+ + + + +
+
+
+ +
+

src/Spec.js

+ +
+ + + + +
+
+
+ +
+

src/Suite.js

+ +
+ + + + +
+
+
+ +
+

src/util.js

+ +
+ + + + +
+
+
+ + +
+
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + \ No newline at end of file diff --git a/doc/index.html b/doc/index.html new file mode 100644 index 0000000..c6eb9b7 --- /dev/null +++ b/doc/index.html @@ -0,0 +1,274 @@ + + + + + + JsDoc Reference - Index + + + + + + + + +
+
Class Index +| File Index
+
+

Classes

+ +
+
+ +
+

Class Index

+ + +
+

_global_

+ +
+
+ +
+

jasmine

+ +
+
+ +
+

jasmine.ActionCollection

+ +
+
+ +
+

jasmine.NestedResults

+ +
+
+ +
+

jasmine.QueuedFunction

+ +
+
+ +
+

jasmine.Runner

+ +
+
+ +
+

jasmine.Spy

+ +
+
+ +
+

jasmine.Suite

+ +
+
+ +
+

jasmine.util

+ +
+
+ + +
+
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + \ No newline at end of file diff --git a/doc/symbols/_global_.html b/doc/symbols/_global_.html new file mode 100644 index 0000000..1c93049 --- /dev/null +++ b/doc/symbols/_global_.html @@ -0,0 +1,1110 @@ + + + + + + + JsDoc Reference - _global_ + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Built-In Namespace _global_ +

+ + +

+ + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
afterEach(afterEachFunction) +
+
A function that is called after each spec in a suite.
+
  +
beforeEach(beforeEachFunction) +
+
A function that is called before each spec in a suite.
+
  +
clearInterval(timeoutKey) +
+
+
  +
clearTimeout(timeoutKey) +
+
+
  +
describe(description, specDefinitions) +
+
Defines a suite of specifications.
+
  +
expect(actual) +
+
Starts a chain for a Jasmine expectation.
+
  +
it(desc, func) +
+
Creates a Jasmine spec that will be added to the current suite.
+
  +
runs(func) +
+
Defines part of a jasmine spec.
+
  +
setInterval(funcToCall, millis) +
+
+
  +
setTimeout(funcToCall, millis) +
+
+
  +
spyOn(obj, methodName) +
+
Function that installs a spy on an existing object's method name.
+
  +
waits(timeout) +
+
Waits for a timeout before moving to the next runs()-defined block.
+
  +
waitsFor(timeout, latchFunction, message) +
+
Waits for the latchFunction to return true before proceeding to the next runs()-defined block.
+
  +
xdescribe(description, specDefinitions) +
+
Disables a suite of specifications.
+
  +
xit(desc, func) +
+
Creates a disabled Jasmine spec.
+
+ + + + + + + + + + + + + + + +
+ Method Detail +
+ + +
+ + + afterEach(afterEachFunction) + +
+
+ A function that is called after each spec in a suite. + +Used for restoring any state that is hijacked during spec execution. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {Function} afterEachFunction + +
+
+ +
+ + + + + + + + +
+ + +
+ + + beforeEach(beforeEachFunction) + +
+
+ A function that is called before each spec in a suite. + +Used for spec setup, including validating assumptions. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {Function} beforeEachFunction + +
+
+ +
+ + + + + + + + +
+ + +
+ + + clearInterval(timeoutKey) + +
+
+ + +
+ Defined in: jsUnitMockTimeout.js. + + +
+ + + + +
+
Parameters:
+ +
+ timeoutKey + +
+
+ +
+ + + + + + + + +
+ + +
+ + + clearTimeout(timeoutKey) + +
+
+ + +
+ Defined in: jsUnitMockTimeout.js. + + +
+ + + + +
+
Parameters:
+ +
+ timeoutKey + +
+
+ +
+ + + + + + + + +
+ + +
+ + + describe(description, specDefinitions) + +
+
+ Defines a suite of specifications. + +Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared +are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization +of setup in some tests. + +
+ Defined in: base.js. + + +
+ + + +
// TODO: a simple suite
+
+// TODO: a simple suite with a nested describe block
+ + + + +
+
Parameters:
+ +
+ {String} description + +
+
A string, usually the class under test.
+ +
+ {Function} specDefinitions + +
+
function that defines several specs.
+ +
+ + + + + + + + +
+ + +
+ + + expect(actual) + +
+
+ Starts a chain for a Jasmine expectation. + +It is passed an Object that is the actual value and should chain to one of the many +jasmine.Matchers functions. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {Object} actual + +
+
Actual value to test against and expected value
+ +
+ + + + + + + + +
+ + +
+ + + it(desc, func) + +
+
+ Creates a Jasmine spec that will be added to the current suite. + +// TODO: pending tests + +
+ Defined in: base.js. + + +
+ + + +
it('should be true', function() {
+  expect(true).toEqual(true);
+});
+ + + + +
+
Parameters:
+ +
+ {String} desc + +
+
description of this specification
+ +
+ {Function} func + +
+
defines the preconditions and expectations of the spec
+ +
+ + + + + + + + +
+ + +
+ + + runs(func) + +
+
+ Defines part of a jasmine spec. Used in cominbination with waits or waitsFor in asynchrnous specs. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {Function} func + +
+
Function that defines part of a jasmine spec.
+ +
+ + + + + + + + +
+ + +
+ + + setInterval(funcToCall, millis) + +
+
+ + +
+ Defined in: jsUnitMockTimeout.js. + + +
+ + + + +
+
Parameters:
+ +
+ funcToCall + +
+
+ +
+ millis + +
+
+ +
+ + + + + + + + +
+ + +
+ + + setTimeout(funcToCall, millis) + +
+
+ + +
+ Defined in: jsUnitMockTimeout.js. + + +
+ + + + +
+
Parameters:
+ +
+ funcToCall + +
+
+ +
+ millis + +
+
+ +
+ + + + + + + + +
+ + +
+ + + spyOn(obj, methodName) + +
+
+ Function that installs a spy on an existing object's method name. Used within a Spec to create a spy. + +
+ Defined in: base.js. + + +
+ + + +
// spy example
+var foo = {
+  not: function(bool) { return !bool; }
+}
+spyOn(foo, 'not'); // actual foo.not will not be called, execution stops
+ + + + +
+
Parameters:
+ +
+ obj + +
+
+ +
+ methodName + +
+
+ +
+ + + + + +
+
Returns:
+ +
a Jasmine spy that can be chained with all spy methods
+ +
+ + + +
+
See:
+ +
jasmine.createSpy
+ +
+ + +
+ + +
+ + + waits(timeout) + +
+
+ Waits for a timeout before moving to the next runs()-defined block. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {Number} timeout + +
+
+ +
+ + + + + + + + +
+ + +
+ + + waitsFor(timeout, latchFunction, message) + +
+
+ Waits for the latchFunction to return true before proceeding to the next runs()-defined block. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {Number} timeout + +
+
+ +
+ {Function} latchFunction + +
+
+ +
+ {String} message + +
+
+ +
+ + + + + + + + +
+ + +
+ + + xdescribe(description, specDefinitions) + +
+
+ Disables a suite of specifications. Used to disable some suites in a file, or files, temporarily during development. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {String} description + +
+
A string, usually the class under test.
+ +
+ {Function} specDefinitions + +
+
function that defines several specs.
+ +
+ + + + + + + + +
+ + +
+ + + xit(desc, func) + +
+
+ Creates a disabled Jasmine spec. + +A convenience method that allows existing specs to be disabled temporarily during development. + +
+ Defined in: base.js. + + +
+ + + + +
+
Parameters:
+ +
+ {String} desc + +
+
description of this specification
+ +
+ {Function} func + +
+
defines the preconditions and expectations of the spec
+ +
+ + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.ActionCollection.html b/doc/symbols/jasmine.ActionCollection.html new file mode 100644 index 0000000..2ae2944 --- /dev/null +++ b/doc/symbols/jasmine.ActionCollection.html @@ -0,0 +1,533 @@ + + + + + + + JsDoc Reference - jasmine.ActionCollection + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.ActionCollection +

+ + +

+ + + + + +
Defined in: ActionCollection.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  + +
base for Runner & Suite: allows for a queue of functions to get executed, allowing for + any one action to complete, including asynchronous calls, before going to the next + action.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
execute() +
+
Starts executing the queue of functions/actions.
+
  +
finish() +
+
Marks the collection as done & calls the finish callback, if there is one
+
  + +
Gets the current action.
+
  +
next() +
+
Executes the next queued function/action.
+
  +
waitForDone(action) +
+
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.ActionCollection(env) +
+ +
+ base for Runner & Suite: allows for a queue of functions to get executed, allowing for + any one action to complete, including asynchronous calls, before going to the next + action. + +
+ + + + + +
+
Parameters:
+ +
+ {jasmine.Env} env + +
+
+ +
+ + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
+ + + execute() + +
+
+ Starts executing the queue of functions/actions. + + +
+ + + + + + + + + + + +
+ + +
+ + + finish() + +
+
+ Marks the collection as done & calls the finish callback, if there is one + + +
+ + + + + + + + + + + +
+ + +
+ + + getCurrentAction() + +
+
+ Gets the current action. + + +
+ + + + + + + + + + + +
+ + +
+ + + next() + +
+
+ Executes the next queued function/action. If there are no more in the queue, calls #finish. + + +
+ + + + + + + + + + + +
+ + +
+ + + waitForDone(action) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ action + +
+
+ +
+ + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.Env.html b/doc/symbols/jasmine.Env.html new file mode 100644 index 0000000..e675c98 --- /dev/null +++ b/doc/symbols/jasmine.Env.html @@ -0,0 +1,923 @@ + + + + + + + JsDoc Reference - jasmine.Env + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.Env +

+ + +

+ + + + + +
Defined in: Env.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  +
+ jasmine.Env() +
+
Env
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
addEqualityTester(equalityTester) +
+
+
  +
afterEach(afterEachFunction) +
+
+
  +
beforeEach(beforeEachFunction) +
+
+
  +
compareObjects_(a, b, mismatchKeys, mismatchValues) +
+
+
  +
contains_(haystack, needle) +
+
+
  +
describe(description, specDefinitions) +
+
+
  +
equals_(a, b, mismatchKeys, mismatchValues) +
+
+
  +
execute() +
+
+
  +
it(description, func) +
+
+
  + +
+
  +
xdescribe(desc, specDefinitions) +
+
+
  +
xit(desc, func) +
+
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.Env() +
+ +
+ Env + +
+ + + + + + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
+ + + addEqualityTester(equalityTester) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ equalityTester + +
+
+ +
+ + + + + + + + +
+ + +
+ + + afterEach(afterEachFunction) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ afterEachFunction + +
+
+ +
+ + + + + + + + +
+ + +
+ + + beforeEach(beforeEachFunction) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ beforeEachFunction + +
+
+ +
+ + + + + + + + +
+ + +
+ + + compareObjects_(a, b, mismatchKeys, mismatchValues) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ a + +
+
+ +
+ b + +
+
+ +
+ mismatchKeys + +
+
+ +
+ mismatchValues + +
+
+ +
+ + + + + + + + +
+ + +
+ + + contains_(haystack, needle) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ haystack + +
+
+ +
+ needle + +
+
+ +
+ + + + + + + + +
+ + +
+ + + describe(description, specDefinitions) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ description + +
+
+ +
+ specDefinitions + +
+
+ +
+ + + + + + + + +
+ + +
+ + + equals_(a, b, mismatchKeys, mismatchValues) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ a + +
+
+ +
+ b + +
+
+ +
+ mismatchKeys + +
+
+ +
+ mismatchValues + +
+
+ +
+ + + + + + + + +
+ + +
+ + + execute() + +
+
+ + + +
+ + + + + + + + + + + +
+ + +
+ + + it(description, func) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ description + +
+
+ +
+ func + +
+
+ +
+ + + + + + + + +
+ + +
+ + + specFilter() + +
+
+ + + +
+ + + + + + + + + + + +
+ + +
+ + + xdescribe(desc, specDefinitions) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ desc + +
+
+ +
+ specDefinitions + +
+
+ +
+ + + + + + + + +
+ + +
+ + + xit(desc, func) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ desc + +
+
+ +
+ func + +
+
+ +
+ + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 09:15:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.NestedResults.html b/doc/symbols/jasmine.NestedResults.html new file mode 100644 index 0000000..90c73cd --- /dev/null +++ b/doc/symbols/jasmine.NestedResults.html @@ -0,0 +1,698 @@ + + + + + + + JsDoc Reference - jasmine.NestedResults + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.NestedResults +

+ + +

+ + + + + +
Defined in: NestedResults.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  + +
Holds results for a set of Jasmine spec.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field Summary
Field AttributesField Name and Description
  + +
Number of failed results
+
  + +
Number of passed results
+
  +
+ skipped +
+
Was this suite/spec skipped?
+
  + +
The total count of results
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
addResult(result) +
+
Adds a result, tracking counts (total, passed, & failed)
+
  + +
Getter for the results: message & results.
+
  +
log(message) +
+
Tracks a result's message.
+
  +
passed() +
+
+
  +
rollupCounts(result) +
+
Roll up the result counts.
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.NestedResults() +
+ +
+ Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults + +
+ + + + + + + + + + + + +
+ + + + +
+ Field Detail +
+ + +
+ + + failedCount + +
+
+ Number of failed results + + +
+ + + + + + + + +
+ + +
+ + + passedCount + +
+
+ Number of passed results + + +
+ + + + + + + + +
+ + +
+ + + skipped + +
+
+ Was this suite/spec skipped? + + +
+ + + + + + + + +
+ + +
+ + + totalCount + +
+
+ The total count of results + + +
+ + + + + + + + + + + + + + +
+ Method Detail +
+ + +
+ + + addResult(result) + +
+
+ Adds a result, tracking counts (total, passed, & failed) + + +
+ + + + +
+
Parameters:
+ +
+ {jasmine.ExpectationResult|jasmine.NestedResults} result + +
+
+ +
+ + + + + + + + +
+ + +
+ + + getItems() + +
+
+ Getter for the results: message & results. + + +
+ + + + + + + + + + + +
+ + +
+ + + log(message) + +
+
+ Tracks a result's message. + + +
+ + + + +
+
Parameters:
+ +
+ message + +
+
+ +
+ + + + + + + + +
+ + +
+ + {Boolean} + passed() + +
+
+ + + +
+ + + + + + + + +
+
Returns:
+ +
{Boolean} True if everything below passed
+ +
+ + + + +
+ + +
+ + + rollupCounts(result) + +
+
+ Roll up the result counts. + + +
+ + + + +
+
Parameters:
+ +
+ result + +
+
+ +
+ + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.QueuedFunction.html b/doc/symbols/jasmine.QueuedFunction.html new file mode 100644 index 0000000..5b45ba4 --- /dev/null +++ b/doc/symbols/jasmine.QueuedFunction.html @@ -0,0 +1,519 @@ + + + + + + + JsDoc Reference - jasmine.QueuedFunction + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.QueuedFunction +

+ + +

+ + + + + +
Defined in: QueuedFunction.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  +
+ jasmine.QueuedFunction(env, func, timeout, latchFunction, spec) +
+
QueuedFunction is how ActionCollections' actions are implemented
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
execute() +
+
+
  +
fail(e) +
+
+
  +
next() +
+
+
  + +
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.QueuedFunction(env, func, timeout, latchFunction, spec) +
+ +
+ QueuedFunction is how ActionCollections' actions are implemented + +
+ + + + + +
+
Parameters:
+ +
+ {jasmine.Env} env + +
+
+ +
+ {Function} func + +
+
+ +
+ {Number} timeout + +
+
+ +
+ {Function} latchFunction + +
+
+ +
+ {jasmine.Spec} spec + +
+
+ +
+ + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
+ + + execute() + +
+
+ + + +
+ + + + + + + + + + + +
+ + +
+ + + fail(e) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ e + +
+
+ +
+ + + + + + + + +
+ + +
+ + + next() + +
+
+ + + +
+ + + + + + + + + + + +
+ + +
+ + + safeExecute() + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.Runner.html b/doc/symbols/jasmine.Runner.html new file mode 100644 index 0000000..34049a5 --- /dev/null +++ b/doc/symbols/jasmine.Runner.html @@ -0,0 +1,416 @@ + + + + + + + JsDoc Reference - jasmine.Runner + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.Runner +

+ + +

+ + + + + +
Defined in: Runner.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  +
+ jasmine.Runner(env) +
+
Runner
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  + +
+
  + +
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.Runner(env) +
+ +
+ Runner + +
+ + + + + +
+
Parameters:
+ +
+ {jasmine.Env} env + +
+
+ +
+ + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
+ + + finishCallback() + +
+
+ + + +
+ + + + + + + + + + + +
+ + +
+ + + getResults() + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.Spec.html b/doc/symbols/jasmine.Spec.html new file mode 100644 index 0000000..092be9a --- /dev/null +++ b/doc/symbols/jasmine.Spec.html @@ -0,0 +1,407 @@ + + + + + + + JsDoc Reference - jasmine.Spec + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.Spec +

+ + +

+ + + + + +
Defined in: Spec.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  +
+ jasmine.Spec(env, description, description) +
+
Spec
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
expects_that(actual) +
+
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.Spec(env, description, description) +
+ +
+ Spec + +
+ + + + + +
+
Parameters:
+ +
+ {jasmine.Env} env + +
+
+ +
+ {String} description + +
+
+ +
+ description + +
+
+ +
+ + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
+ + + expects_that(actual) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ actual + +
+
+ +
+ + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Fri Jun 26 2009 08:22:36 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.Spy.html b/doc/symbols/jasmine.Spy.html new file mode 100644 index 0000000..197fa42 --- /dev/null +++ b/doc/symbols/jasmine.Spy.html @@ -0,0 +1,843 @@ + + + + + + + JsDoc Reference - jasmine.Spy + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.Spy +

+ + +

+ + + + + +
Defined in: base.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  +
+ jasmine.Spy(name) +
+
Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Field Summary
Field AttributesField Name and Description
  + +
Holds arguments for each call to the spy, indexed by call count
+
  +
+ identity +
+
The name of the spy, if provided.
+
  +
+ isSpy +
+
Is this Object a spy?
+
  + +
Tracking of the most recent call to the spy.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
andCallFake(fakeFunc) +
+
Calls an alternate implementation when a spy is called.
+
  + +
Tells a spy to call through to the actual implemenatation.
+
  +
andReturn(value) +
+
For setting the return value of a spy.
+
  +
andThrow(exceptionMsg) +
+
For throwing an exception when a spy is called.
+
  +
plan() +
+
The acutal function this spy stubs.
+
  +
reset() +
+
Resets all of a spy's the tracking variables so that it can be used again.
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.Spy(name) +
+ +
+ Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks. + +Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine +expectation syntax. Spies can be checked if they were called or not and what the calling params were. + +A Spy has the following mehtod: wasCalled, callCount, mostRecentCall, and argsForCall (see docs) +Spies are torn down at the end of every spec. + +Note: Do not call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj. + +
+ + + +
// a stub
+var myStub = jasmine.createSpy('myStub');  // can be used anywhere
+
+// spy example
+var foo = {
+  not: function(bool) { return !bool; }
+}
+
+// actual foo.not will not be called, execution stops
+spyOn(foo, 'not');
+
+ // foo.not spied upon, execution will continue to implementation
+spyOn(foo, 'not').andCallThrough();
+
+// fake example
+var foo = {
+  not: function(bool) { return !bool; }
+}
+
+// foo.not(val) will return val
+spyOn(foo, 'not').andCallFake(function(value) {return value;});
+
+// mock example
+foo.not(7 == 7);
+expect(foo.not).wasCalled();
+expect(foo.not).wasCalledWith(true);
+ + + + + +
+
Parameters:
+ +
+ {String} name + +
+
+ +
+ + + + + + + +
+
See:
+ +
spyOn, jasmine.createSpy, jasmine.createSpyObj
+ +
+ + +
+ + + + +
+ Field Detail +
+ + +
+ + + argsForCall + +
+
+ Holds arguments for each call to the spy, indexed by call count + + +
+ + + +
var mySpy = jasmine.createSpy('foo');
+mySpy(1, 2);
+mySpy(7, 8);
+mySpy.mostRecentCall.args = [7, 8];
+mySpy.argsForCall[0] = [1, 2];
+mySpy.argsForCall[1] = [7, 8];
+ + + + + + + + +
+ + +
+ + + identity + +
+
+ The name of the spy, if provided. + + +
+ + + + + + + + +
+ + +
+ + + isSpy + +
+
+ Is this Object a spy? + + +
+ + + + + + + + +
+ + +
+ + + mostRecentCall + +
+
+ Tracking of the most recent call to the spy. + + +
+ + + +
var mySpy = jasmine.createSpy('foo');
+mySpy(1, 2);
+mySpy.mostRecentCall.args = [1, 2];
+ + + + + + + + + + + + + + +
+ Method Detail +
+ + +
+ + + andCallFake(fakeFunc) + +
+
+ Calls an alternate implementation when a spy is called. + + +
+ + + +
var baz = function() {
+  // do some stuff, return something
+}
+// defining a spy from scratch: foo() calls the function baz
+var foo = jasmine.createSpy('spy on foo').andCall(baz);
+
+// defining a spy on an existing property: foo.bar() calls an anonymnous function
+spyOn(foo, 'bar').andCall(function() { return 'baz';} );
+ + + + +
+
Parameters:
+ +
+ {Function} fakeFunc + +
+
+ +
+ + + + + + + + +
+ + +
+ + + andCallThrough() + +
+
+ Tells a spy to call through to the actual implemenatation. + + +
+ + + +
var foo = {
+  bar: function() { // do some stuff }
+}
+
+// defining a spy on an existing property: foo.bar
+spyOn(foo, 'bar').andCallThrough();
+ + + + + + + + + + + +
+ + +
+ + + andReturn(value) + +
+
+ For setting the return value of a spy. + + +
+ + + +
// defining a spy from scratch: foo() returns 'baz'
+var foo = jasmine.createSpy('spy on foo').andReturn('baz');
+
+// defining a spy on an existing property: foo.bar() returns 'baz'
+spyOn(foo, 'bar').andReturn('baz');
+ + + + +
+
Parameters:
+ +
+ {Object} value + +
+
+ +
+ + + + + + + + +
+ + +
+ + + andThrow(exceptionMsg) + +
+
+ For throwing an exception when a spy is called. + + +
+ + + +
// defining a spy from scratch: foo() throws an exception w/ message 'ouch'
+var foo = jasmine.createSpy('spy on foo').andThrow('baz');
+
+// defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch'
+spyOn(foo, 'bar').andThrow('baz');
+ + + + +
+
Parameters:
+ +
+ {String} exceptionMsg + +
+
+ +
+ + + + + + + + +
+ + +
+ + + plan() + +
+
+ The acutal function this spy stubs. + + +
+ + + + + + + + + + + +
+ + +
+ + + reset() + +
+
+ Resets all of a spy's the tracking variables so that it can be used again. + + +
+ + + +
spyOn(foo, 'bar');
+
+foo.bar();
+
+expect(foo.bar.callCount).toEqual(1);
+
+foo.bar.reset();
+
+expect(foo.bar.callCount).toEqual(0);
+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.Suite.html b/doc/symbols/jasmine.Suite.html new file mode 100644 index 0000000..3cdf17e --- /dev/null +++ b/doc/symbols/jasmine.Suite.html @@ -0,0 +1,558 @@ + + + + + + + JsDoc Reference - jasmine.Suite + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Class jasmine.Suite +

+ + +

+ + + + + +
Defined in: Suite.js. + +

+ + + + + + + + + + + + + + + + + +
Class Summary
Constructor AttributesConstructor Name and Description
  +
+ jasmine.Suite(env, description, specDefinitions, parentSuite) +
+
For storing & executing a Jasmine suite.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
  +
afterEach(afterEachFunction) +
+
+
  +
beforeEach(beforeEachFunction) +
+
+
  + +
+
  + +
+
  + +
+
+ + + + + + + + + +
+
+ Class Detail +
+ +
+ jasmine.Suite(env, description, specDefinitions, parentSuite) +
+ +
+ For storing & executing a Jasmine suite. + +
+ + + + + +
+
Parameters:
+ +
+ {jasmine.Env} env + +
+
+ +
+ {String} description + +
+
+ +
+ {Function} specDefinitions + +
+
+ +
+ {jasmine.Suite} parentSuite + +
+
+ +
+ + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
+ + + afterEach(afterEachFunction) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ afterEachFunction + +
+
+ +
+ + + + + + + + +
+ + +
+ + + beforeEach(beforeEachFunction) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ beforeEachFunction + +
+
+ +
+ + + + + + + + +
+ + +
+ + + finishCallback() + +
+
+ + + +
+ + + + + + + + + + + +
+ + +
+ + + getFullName() + +
+
+ + + +
+ + + + + + + + + + + +
+ + +
+ + + getResults() + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.html b/doc/symbols/jasmine.html new file mode 100644 index 0000000..9d1351a --- /dev/null +++ b/doc/symbols/jasmine.html @@ -0,0 +1,1076 @@ + + + + + + + JsDoc Reference - jasmine + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Namespace jasmine +

+ + +

+ + + + + +
Defined in: base.js. + +

+ + + + + + + + + + + + + + + + + +
Namespace Summary
Constructor AttributesConstructor Name and Description
  +
+ jasmine +
+
Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework.
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
<static>   +
jasmine.any(clazz) +
+
Returns a matchable 'generic' object of the class type.
+
<static>   +
jasmine.createSpy(name) +
+
+
<static>   +
jasmine.createSpyObj(baseName, methodNames) +
+
Creates a more complicated spy: an Object that has every property a function that is a spy.
+
<static>   +
jasmine.Env() +
+
+
<static>   +
jasmine.ExpectationResult(passed, message, details) +
+
+
<static>   +
jasmine.getEnv() +
+
Getter for the Jasmine environment.
+
<static>   +
jasmine.include(url, opt_global) +
+
Adds suite files to an HTML document so that they are executed, thus adding them to the current +Jasmine environment.
+
<static>   +
jasmine.isDomNode(obj) +
+
Returns true if the object is a DOM Node.
+
<static>   +
jasmine.log(message) +
+
+
<static>   +
jasmine.Matchers(env, actual, results) +
+
+
<static>   +
jasmine.MessageResult(text) +
+
+
<static>   +
jasmine.pp(value) +
+
Pretty printer for expecations.
+
<static>   +
jasmine.PrettyPrinter() +
+
Base class for pretty printing for expectation results.
+
<static>   +
jasmine.specFilter() +
+
+
<static>   +
jasmine.StringPrettyPrinter() +
+
+
<static>   +
jasmine.XmlHttpRequest() +
+
+
+ + + + + + + + + +
+
+ Namespace Detail +
+ +
+ jasmine +
+ +
+ Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework. + +
+ + + + + + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
<static> + + + jasmine.any(clazz) + +
+
+ Returns a matchable 'generic' object of the class type. For use in expecations of type when values don't matter. + + +
+ + + +
// don't care about which function is passed in, as long as it's a function
+expect(mySpy).wasCalledWith(jasmine.any(Function));
+ + + + +
+
Parameters:
+ +
+ {Class} clazz + +
+
+ +
+ + + + + +
+
Returns:
+ +
matchable object of the type clazz
+ +
+ + + + +
+ + +
<static> + + + jasmine.createSpy(name) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ name + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + + jasmine.createSpyObj(baseName, methodNames) + +
+
+ Creates a more complicated spy: an Object that has every property a function that is a spy. Used for stubbing something +large in one call. + + +
+ + + + +
+
Parameters:
+ +
+ {String} baseName + +
+
name of spy class
+ +
+ {Array} methodNames + +
+
array of names of methods to make spies
+ +
+ + + + + + + + +
+ + +
<static> + + + jasmine.Env() + +
+
+ + +
+ Defined in: Env.js. + + +
+ + + + + + + + + + + +
+ + +
<static> + + + jasmine.ExpectationResult(passed, message, details) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ passed + +
+
+ +
+ message + +
+
+ +
+ details + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + + jasmine.getEnv() + +
+
+ Getter for the Jasmine environment. Ensures one gets created + + +
+ + + + + + + + + + + +
+ + +
<static> + + + jasmine.include(url, opt_global) + +
+
+ Adds suite files to an HTML document so that they are executed, thus adding them to the current +Jasmine environment. + + +
+ + + + +
+
Parameters:
+ +
+ {String} url + +
+
path to the file to include
+ +
+ {Boolean} opt_global + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + {Boolean} + jasmine.isDomNode(obj) + +
+
+ Returns true if the object is a DOM Node. + + +
+ + + + +
+
Parameters:
+ +
+ {Object} obj + +
+
object to check
+ +
+ + + + + +
+
Returns:
+ +
{Boolean}
+ +
+ + + + +
+ + +
<static> + + + jasmine.log(message) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ message + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + + jasmine.Matchers(env, actual, results) + +
+
+ + +
+ Defined in: Matchers.js. + + +
+ + + + +
+
Parameters:
+ +
+ env + +
+
+ +
+ actual + +
+
+ +
+ results + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + + jasmine.MessageResult(text) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ text + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + {String} + jasmine.pp(value) + +
+
+ Pretty printer for expecations. Takes any object and turns it into a human-readable string. + + +
+ + + + +
+
Parameters:
+ +
+ value + +
+
{Object} an object to be outputted
+ +
+ + + + + +
+
Returns:
+ +
{String}
+ +
+ + + + +
+ + +
<static> + + + jasmine.PrettyPrinter() + +
+
+ Base class for pretty printing for expectation results. + +
+ Defined in: PrettyPrinter.js. + + +
+ + + + + + + + + + + +
+ + +
<static> + + + jasmine.specFilter() + +
+
+ + +
+ Defined in: Env.js. + + +
+ + + + + + + + + + + +
+ + +
<static> + + + jasmine.StringPrettyPrinter() + +
+
+ + +
+ Defined in: PrettyPrinter.js. + + +
+ + + + + + + + + + + +
+ + +
<static> + + + jasmine.XmlHttpRequest() + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/jasmine.util.html b/doc/symbols/jasmine.util.html new file mode 100644 index 0000000..d0b1300 --- /dev/null +++ b/doc/symbols/jasmine.util.html @@ -0,0 +1,472 @@ + + + + + + + JsDoc Reference - jasmine.util + + + + + + + + + + + +
+ +
Class Index +| File Index
+
+

Classes

+ +
+ +
+ +
+ +

+ + Namespace jasmine.util +

+ + +

+ + + + + +
Defined in: util.js. + +

+ + + + + + + + + + + + + + + + + +
Namespace Summary
Constructor AttributesConstructor Name and Description
  + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Method Summary
Method AttributesMethod Name and Description
<static>   +
jasmine.util.argsToArray(args) +
+
+
<static>   +
jasmine.util.formatException(e) +
+
+
<static>   +
jasmine.util.htmlEscape(str) +
+
+
+ + + + + + + + + +
+
+ Namespace Detail +
+ +
+ jasmine.util +
+ +
+ + +
+ + + + + + + + + + + + +
+ + + + + + + +
+ Method Detail +
+ + +
<static> + + + jasmine.util.argsToArray(args) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ args + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + + jasmine.util.formatException(e) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ e + +
+
+ +
+ + + + + + + + +
+ + +
<static> + + + jasmine.util.htmlEscape(str) + +
+
+ + + +
+ + + + +
+
Parameters:
+ +
+ str + +
+
+ +
+ + + + + + + + + + + + + + + +
+
+ + + +
+ + Documentation generated by JsDoc Toolkit 2.3.0 on Sun Jun 28 2009 13:23:39 GMT-0700 (PDT) +
+ + diff --git a/doc/symbols/src/src_ActionCollection.js.html b/doc/symbols/src/src_ActionCollection.js.html new file mode 100644 index 0000000..45b2abb --- /dev/null +++ b/doc/symbols/src/src_ActionCollection.js.html @@ -0,0 +1,100 @@ +
  1 /**
+  2  * base for Runner & Suite: allows for a queue of functions to get executed, allowing for
+  3  *   any one action to complete, including asynchronous calls, before going to the next
+  4  *   action.
+  5  *
+  6  * @constructor
+  7  * @param {jasmine.Env} env
+  8  */
+  9 jasmine.ActionCollection = function(env) {
+ 10   this.env = env;
+ 11   this.actions = [];
+ 12   this.index = 0;
+ 13   this.finished = false;
+ 14 };
+ 15 
+ 16 /**
+ 17  * Marks the collection as done & calls the finish callback, if there is one
+ 18  */
+ 19 jasmine.ActionCollection.prototype.finish = function() {
+ 20   if (this.finishCallback) {
+ 21     this.finishCallback();
+ 22   }
+ 23   this.finished = true;
+ 24 };
+ 25 
+ 26 /**
+ 27  * Starts executing the queue of functions/actions.
+ 28  */
+ 29 jasmine.ActionCollection.prototype.execute = function() {
+ 30   if (this.actions.length > 0) {
+ 31     this.next();
+ 32   }
+ 33 };
+ 34 
+ 35 /**
+ 36  * Gets the current action.
+ 37  */
+ 38 jasmine.ActionCollection.prototype.getCurrentAction = function() {
+ 39   return this.actions[this.index];
+ 40 };
+ 41 
+ 42 /**
+ 43  * Executes the next queued function/action. If there are no more in the queue, calls #finish.
+ 44  */
+ 45 jasmine.ActionCollection.prototype.next = function() {
+ 46   if (this.index >= this.actions.length) {
+ 47     this.finish();
+ 48     return;
+ 49   }
+ 50 
+ 51   var currentAction = this.getCurrentAction();
+ 52 
+ 53   currentAction.execute(this);
+ 54 
+ 55   if (currentAction.afterCallbacks) {
+ 56     for (var i = 0; i < currentAction.afterCallbacks.length; i++) {
+ 57       try {
+ 58         currentAction.afterCallbacks[i]();
+ 59       } catch (e) {
+ 60         alert(e);
+ 61       }
+ 62     }
+ 63   }
+ 64 
+ 65   this.waitForDone(currentAction);
+ 66 };
+ 67 
+ 68 jasmine.ActionCollection.prototype.waitForDone = function(action) {
+ 69   var self = this;
+ 70   var afterExecute = function afterExecute() {
+ 71     self.index++;
+ 72     self.next();
+ 73   };
+ 74 
+ 75   if (action.finished) {
+ 76     var now = new Date().getTime();
+ 77     if (this.env.updateInterval && now - this.env.lastUpdate > this.env.updateInterval) {
+ 78       this.env.lastUpdate = now;
+ 79       this.env.setTimeout(afterExecute, 0);
+ 80     } else {
+ 81       afterExecute();
+ 82     }
+ 83     return;
+ 84   }
+ 85 
+ 86   var id = this.env.setInterval(function() {
+ 87     if (action.finished) {
+ 88       self.env.clearInterval(id);
+ 89       afterExecute();
+ 90     }
+ 91   }, 150);
+ 92 };
+ 93 
\ No newline at end of file diff --git a/doc/symbols/src/src_Env.js.html b/doc/symbols/src/src_Env.js.html new file mode 100644 index 0000000..bf486e9 --- /dev/null +++ b/doc/symbols/src/src_Env.js.html @@ -0,0 +1,179 @@ +
  1 jasmine.Env = function() {
+  2   this.currentSpec = null;
+  3   this.currentSuite = null;
+  4   this.currentRunner = new jasmine.Runner(this);
+  5   this.currentlyRunningTests = false;
+  6 
+  7   this.updateInterval = 0;
+  8   this.lastUpdate = 0;
+  9   this.specFilter = function() {
+ 10     return true;
+ 11   };
+ 12 
+ 13   this.nextSpecId_ = 0;
+ 14   this.equalityTesters_ = [];
+ 15 };
+ 16 
+ 17 
+ 18 jasmine.Env.prototype.setTimeout = jasmine.setTimeout;
+ 19 jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout;
+ 20 jasmine.Env.prototype.setInterval = jasmine.setInterval;
+ 21 jasmine.Env.prototype.clearInterval = jasmine.clearInterval;
+ 22 
+ 23 jasmine.Env.prototype.execute = function() {
+ 24   this.currentRunner.execute();
+ 25 };
+ 26 
+ 27 jasmine.Env.prototype.describe = function(description, specDefinitions) {
+ 28   var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite);
+ 29 
+ 30   var parentSuite = this.currentSuite;
+ 31   if (parentSuite) {
+ 32     parentSuite.specs.push(suite);
+ 33   } else {
+ 34     this.currentRunner.suites.push(suite);
+ 35   }
+ 36 
+ 37   this.currentSuite = suite;
+ 38 
+ 39   specDefinitions.call(suite);
+ 40 
+ 41   this.currentSuite = parentSuite;
+ 42 
+ 43   return suite;
+ 44 };
+ 45 
+ 46 jasmine.Env.prototype.beforeEach = function(beforeEachFunction) {
+ 47   this.currentSuite.beforeEach(beforeEachFunction);
+ 48 };
+ 49 
+ 50 jasmine.Env.prototype.afterEach = function(afterEachFunction) {
+ 51   this.currentSuite.afterEach(afterEachFunction);
+ 52 };
+ 53 
+ 54 jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) {
+ 55   return {
+ 56     execute: function() {
+ 57     }
+ 58   };
+ 59 };
+ 60 
+ 61 jasmine.Env.prototype.it = function(description, func) {
+ 62   var spec = new jasmine.Spec(this, this.currentSuite, description);
+ 63   this.currentSuite.specs.push(spec);
+ 64   this.currentSpec = spec;
+ 65 
+ 66   if (func) {
+ 67     spec.addToQueue(func);
+ 68   }
+ 69 
+ 70   return spec;
+ 71 };
+ 72 
+ 73 jasmine.Env.prototype.xit = function(desc, func) {
+ 74   return {
+ 75     id: this.nextSpecId_++,
+ 76     runs: function() {
+ 77     }
+ 78   };
+ 79 };
+ 80 
+ 81 jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) {
+ 82   if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) {
+ 83     return true;
+ 84   }
+ 85 
+ 86   a.__Jasmine_been_here_before__ = b;
+ 87   b.__Jasmine_been_here_before__ = a;
+ 88 
+ 89   var hasKey = function(obj, keyName) {
+ 90     return obj != null && obj[keyName] !== undefined;
+ 91   };
+ 92 
+ 93   for (var property in b) {
+ 94     if (!hasKey(a, property) && hasKey(b, property)) {
+ 95       mismatchKeys.push("expected has key '" + property + "', but missing from <b>actual</b>.");
+ 96     }
+ 97   }
+ 98   for (property in a) {
+ 99     if (!hasKey(b, property) && hasKey(a, property)) {
+100       mismatchKeys.push("<b>expected</b> missing key '" + property + "', but present in actual.");
+101     }
+102   }
+103   for (property in b) {
+104     if (property == '__Jasmine_been_here_before__') continue;
+105     if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) {
+106       mismatchValues.push("'" + property + "' was<br /><br />'" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "'<br /><br />in expected, but was<br /><br />'" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "'<br /><br />in actual.<br />");
+107     }
+108   }
+109 
+110   if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) {
+111     mismatchValues.push("arrays were not the same length");
+112   }
+113 
+114   delete a.__Jasmine_been_here_before__;
+115   delete b.__Jasmine_been_here_before__;
+116   return (mismatchKeys.length == 0 && mismatchValues.length == 0);
+117 };
+118 
+119 jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) {
+120   mismatchKeys = mismatchKeys || [];
+121   mismatchValues = mismatchValues || [];
+122 
+123   if (a === b) return true;
+124 
+125   if (a === undefined || a === null || b === undefined || b === null) {
+126     return (a == undefined && b == undefined);
+127   }
+128 
+129   if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) {
+130     return a === b;
+131   }
+132 
+133   if (a instanceof Date && b instanceof Date) {
+134     return a.getTime() == b.getTime();
+135   }
+136 
+137   if (a instanceof jasmine.Matchers.Any) {
+138     return a.matches(b);
+139   }
+140 
+141   if (b instanceof jasmine.Matchers.Any) {
+142     return b.matches(a);
+143   }
+144 
+145   if (typeof a === "object" && typeof b === "object") {
+146     return this.compareObjects_(a, b, mismatchKeys, mismatchValues);
+147   }
+148 
+149   for (var i = 0; i < this.equalityTesters_.length; i++) {
+150     var equalityTester = this.equalityTesters_[i];
+151     var result = equalityTester(a, b, this, mismatchKeys, mismatchValues);
+152     if (result !== undefined) return result;
+153   }
+154 
+155   //Straight check
+156   return (a === b);
+157 };
+158 
+159 jasmine.Env.prototype.contains_ = function(haystack, needle) {
+160   if (jasmine.isArray_(haystack)) {
+161     for (var i = 0; i < haystack.length; i++) {
+162       if (this.equals_(haystack[i], needle)) return true;
+163     }
+164     return false;
+165   }
+166   return haystack.indexOf(needle) >= 0;
+167 };
+168 
+169 jasmine.Env.prototype.addEqualityTester = function(equalityTester) {
+170   this.equalityTesters_.push(equalityTester);
+171 };
+172 
\ No newline at end of file diff --git a/doc/symbols/src/src_Matchers.js.html b/doc/symbols/src/src_Matchers.js.html new file mode 100644 index 0000000..906d872 --- /dev/null +++ b/doc/symbols/src/src_Matchers.js.html @@ -0,0 +1,280 @@ +
  1 jasmine.Matchers = function(env, actual, results) {
+  2   this.env = env;
+  3   this.actual = actual;
+  4   this.passing_message = 'Passed.';
+  5   this.results = results || new jasmine.NestedResults();
+  6 };
+  7 
+  8 jasmine.Matchers.pp = function(str) {
+  9   return jasmine.util.htmlEscape(jasmine.pp(str));
+ 10 };
+ 11 
+ 12 jasmine.Matchers.prototype.getResults = function() {
+ 13   return this.results;
+ 14 };
+ 15 
+ 16 jasmine.Matchers.prototype.report = function(result, failing_message, details) {
+ 17   this.results.addResult(new jasmine.ExpectationResult(result, result ? this.passing_message : failing_message, details));
+ 18   return result;
+ 19 };
+ 20 
+ 21 /**
+ 22  * Matcher that compares the actual to the expected using ===.
+ 23  *
+ 24  * @param expected
+ 25  */
+ 26 jasmine.Matchers.prototype.toBe = function(expected) {
+ 27   return this.report(this.actual === expected, 'Expected<br /><br />' + jasmine.Matchers.pp(expected)
+ 28     + '<br /><br />to be the same object as<br /><br />' + jasmine.Matchers.pp(this.actual)
+ 29     + '<br />');
+ 30 };
+ 31 
+ 32 /**
+ 33  * Matcher that compares the actual to the expected using !==
+ 34  * @param expected
+ 35  */
+ 36 jasmine.Matchers.prototype.toNotBe = function(expected) {
+ 37   return this.report(this.actual !== expected, 'Expected<br /><br />' + jasmine.Matchers.pp(expected)
+ 38     + '<br /><br />to be a different object from actual, but they were the same.');
+ 39 };
+ 40 
+ 41 /**
+ 42  * Matcher that compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc.
+ 43  *
+ 44  * @param expected
+ 45  */
+ 46 jasmine.Matchers.prototype.toEqual = function(expected) {
+ 47   var mismatchKeys = [];
+ 48   var mismatchValues = [];
+ 49 
+ 50   var formatMismatches = function(name, array) {
+ 51     if (array.length == 0) return '';
+ 52     var errorOutput = '<br /><br />Different ' + name + ':<br />';
+ 53     for (var i = 0; i < array.length; i++) {
+ 54       errorOutput += array[i] + '<br />';
+ 55     }
+ 56     return errorOutput;
+ 57   };
+ 58 
+ 59   return this.report(this.env.equals_(this.actual, expected, mismatchKeys, mismatchValues),
+ 60     'Expected<br /><br />' + jasmine.Matchers.pp(expected)
+ 61       + '<br /><br />but got<br /><br />' + jasmine.Matchers.pp(this.actual)
+ 62       + '<br />'
+ 63       + formatMismatches('Keys', mismatchKeys)
+ 64       + formatMismatches('Values', mismatchValues), {
+ 65     matcherName: 'toEqual', expected: expected, actual: this.actual
+ 66   });
+ 67 };
+ 68 /** @deprecated */
+ 69 jasmine.Matchers.prototype.should_equal = jasmine.Matchers.prototype.toEqual;
+ 70 
+ 71 /**
+ 72  * Matcher that compares the actual to the expected using the ! of jasmine.Matchers.toEqual
+ 73  * @param expected
+ 74  */
+ 75 jasmine.Matchers.prototype.toNotEqual = function(expected) {
+ 76   return this.report(!this.env.equals_(this.actual, expected),
+ 77     'Expected ' + jasmine.Matchers.pp(expected) + ' to not equal ' + jasmine.Matchers.pp(this.actual) + ', but it does.');
+ 78 };
+ 79 /** @deprecated */
+ 80 jasmine.Matchers.prototype.should_not_equal = jasmine.Matchers.prototype.toNotEqual;
+ 81 
+ 82 /**
+ 83  * Matcher that compares the actual to the expected using a regular expression.  Constructs a RegExp, so takes
+ 84  * a pattern or a String.
+ 85  *
+ 86  * @param reg_exp
+ 87  */
+ 88 jasmine.Matchers.prototype.toMatch = function(reg_exp) {
+ 89   return this.report((new RegExp(reg_exp).test(this.actual)),
+ 90     'Expected ' + jasmine.Matchers.pp(this.actual) + ' to match ' + reg_exp + '.');
+ 91 };
+ 92 /** @deprecated */
+ 93 jasmine.Matchers.prototype.should_match = jasmine.Matchers.prototype.toMatch;
+ 94 
+ 95 /**
+ 96  * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch
+ 97  * @param reg_exp
+ 98  */
+ 99 jasmine.Matchers.prototype.toNotMatch = function(reg_exp) {
+100   return this.report((!new RegExp(reg_exp).test(this.actual)),
+101     'Expected ' + jasmine.Matchers.pp(this.actual) + ' to not match ' + reg_exp + '.');
+102 };
+103 /** @deprecated */
+104 jasmine.Matchers.prototype.should_not_match = jasmine.Matchers.prototype.toNotMatch;
+105 
+106 /**
+107  * Matcher that compares the acutal to undefined.
+108  */
+109 jasmine.Matchers.prototype.toBeDefined = function() {
+110   return this.report((this.actual !== undefined),
+111     'Expected a value to be defined but it was undefined.');
+112 };
+113 /** @deprecated */
+114 jasmine.Matchers.prototype.should_be_defined = jasmine.Matchers.prototype.toBeDefined;
+115 
+116 /**
+117  * Matcher that compares the actual to null.
+118  *
+119  */
+120 jasmine.Matchers.prototype.toBeNull = function() {
+121   return this.report((this.actual === null),
+122     'Expected a value to be null but it was ' + jasmine.Matchers.pp(this.actual) + '.');
+123 };
+124 /** @deprecated */
+125 jasmine.Matchers.prototype.should_be_null = jasmine.Matchers.prototype.toBeNull;
+126 
+127 /**
+128  * Matcher that boolean not-nots the actual.
+129  */
+130 jasmine.Matchers.prototype.toBeTruthy = function() {
+131   return this.report(!!this.actual,
+132     'Expected a value to be truthy but it was ' + jasmine.Matchers.pp(this.actual) + '.');
+133 };
+134 /** @deprecated */
+135 jasmine.Matchers.prototype.should_be_truthy = jasmine.Matchers.prototype.toBeTruthy;
+136 
+137 /**
+138  * Matcher that boolean nots the actual.
+139  */
+140 jasmine.Matchers.prototype.toBeFalsy = function() {
+141   return this.report(!this.actual,
+142     'Expected a value to be falsy but it was ' + jasmine.Matchers.pp(this.actual) + '.');
+143 };
+144 /** @deprecated */
+145 jasmine.Matchers.prototype.should_be_falsy = jasmine.Matchers.prototype.toBeFalsy;
+146 
+147 /**
+148  * Matcher that checks to see if the acutal, a Jasmine spy, was called.
+149  */
+150 jasmine.Matchers.prototype.wasCalled = function() {
+151   if (!this.actual || !this.actual.isSpy) {
+152     return this.report(false, 'Expected a spy, but got ' + jasmine.Matchers.pp(this.actual) + '.');
+153   }
+154   if (arguments.length > 0) {
+155     return this.report(false, 'wasCalled matcher does not take arguments');
+156   }
+157   return this.report((this.actual.wasCalled),
+158     'Expected spy "' + this.actual.identity + '" to have been called, but it was not.');
+159 };
+160 /** @deprecated */
+161 jasmine.Matchers.prototype.was_called = jasmine.Matchers.prototype.wasCalled;
+162 
+163 /**
+164  * Matcher that checks to see if the acutal, a Jasmine spy, was not called.
+165  */
+166 jasmine.Matchers.prototype.wasNotCalled = function() {
+167   if (!this.actual || !this.actual.isSpy) {
+168     return this.report(false, 'Expected a spy, but got ' + jasmine.Matchers.pp(this.actual) + '.');
+169   }
+170   return this.report((!this.actual.wasCalled),
+171     'Expected spy "' + this.actual.identity + '" to not have been called, but it was.');
+172 };
+173 /** @deprecated */
+174 jasmine.Matchers.prototype.was_not_called = jasmine.Matchers.prototype.wasNotCalled;
+175 
+176 /**
+177  * Matcher that checks to see if the acutal, a Jasmine spy, was called with a set of parameters.
+178  *
+179  * @example
+180  *
+181  */
+182 jasmine.Matchers.prototype.wasCalledWith = function() {
+183   if (!this.actual || !this.actual.isSpy) {
+184     return this.report(false, 'Expected a spy, but got ' + jasmine.Matchers.pp(this.actual) + '.', {
+185       matcherName: 'wasCalledWith'
+186     });
+187   }
+188 
+189   var args = jasmine.util.argsToArray(arguments);
+190 
+191   return this.report(this.env.contains_(this.actual.argsForCall, args),
+192     'Expected ' + jasmine.Matchers.pp(this.actual.argsForCall) + ' to contain ' + jasmine.Matchers.pp(args) + ', but it does not.', {
+193     matcherName: 'wasCalledWith', expected: args, actual: this.actual.argsForCall
+194   });
+195 };
+196 
+197 /**
+198  * Matcher that checks that the expected item is an element in the actual Array.
+199  *
+200  * @param {Object} item
+201  */
+202 jasmine.Matchers.prototype.toContain = function(item) {
+203   return this.report(this.env.contains_(this.actual, item),
+204     'Expected ' + jasmine.Matchers.pp(this.actual) + ' to contain ' + jasmine.Matchers.pp(item) + ', but it does not.', {
+205     matcherName: 'toContain', expected: item, actual: this.actual
+206   });
+207 };
+208 
+209 /**
+210  * Matcher that checks that the expected item is NOT an element in the actual Array.
+211  *
+212  * @param {Object} item
+213  */
+214 jasmine.Matchers.prototype.toNotContain = function(item) {
+215   return this.report(!this.env.contains_(this.actual, item),
+216     'Expected ' + jasmine.Matchers.pp(this.actual) + ' not to contain ' + jasmine.Matchers.pp(item) + ', but it does.');
+217 };
+218 
+219 /**
+220  * Matcher that checks that the expected exception was thrown by the actual.
+221  *
+222  * @param {String} expectedException
+223  */
+224 jasmine.Matchers.prototype.toThrow = function(expectedException) {
+225   var exception = null;
+226   try {
+227     this.actual();
+228   } catch (e) {
+229     exception = e;
+230   }
+231   if (expectedException !== undefined) {
+232     if (exception == null) {
+233       return this.report(false, "Expected function to throw " + jasmine.Matchers.pp(expectedException) + ", but it did not.");
+234     }
+235     return this.report(
+236       this.env.equals_(
+237         exception.message || exception,
+238         expectedException.message || expectedException),
+239       "Expected function to throw " + jasmine.Matchers.pp(expectedException) + ", but it threw " + jasmine.Matchers.pp(exception) + ".");
+240   } else {
+241     return this.report(exception != null, "Expected function to throw an exception, but it did not.");
+242   }
+243 };
+244 
+245 jasmine.Matchers.Any = function(expectedClass) {
+246   this.expectedClass = expectedClass;
+247 };
+248 
+249 jasmine.Matchers.Any.prototype.matches = function(other) {
+250   if (this.expectedClass == String) {
+251     return typeof other == 'string' || other instanceof String;
+252   }
+253 
+254   if (this.expectedClass == Number) {
+255     return typeof other == 'number' || other instanceof Number;
+256   }
+257 
+258   if (this.expectedClass == Function) {
+259     return typeof other == 'function' || other instanceof Function;
+260   }
+261 
+262   if (this.expectedClass == Object) {
+263     return typeof other == 'object';
+264   }
+265 
+266   return other instanceof this.expectedClass;
+267 };
+268 
+269 jasmine.Matchers.Any.prototype.toString = function() {
+270   return '<jasmine.any(' + this.expectedClass + ')>';
+271 };
+272 
+273 
\ No newline at end of file diff --git a/doc/symbols/src/src_NestedResults.js.html b/doc/symbols/src/src_NestedResults.js.html new file mode 100644 index 0000000..47bc43a --- /dev/null +++ b/doc/symbols/src/src_NestedResults.js.html @@ -0,0 +1,88 @@ +
  1 /**
+  2  * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults
+  3  *
+  4  * @constructor
+  5  */
+  6 jasmine.NestedResults = function() {
+  7   /**
+  8    * The total count of results
+  9    */
+ 10   this.totalCount = 0;
+ 11   /**
+ 12    * Number of passed results
+ 13    */
+ 14   this.passedCount = 0;
+ 15   /**
+ 16    * Number of failed results
+ 17    */
+ 18   this.failedCount = 0;
+ 19   /**
+ 20    * Was this suite/spec skipped?
+ 21    */
+ 22   this.skipped = false;
+ 23   /**
+ 24    * @ignore
+ 25    */
+ 26   this.items_ = [];
+ 27 };
+ 28 
+ 29 /**
+ 30  * Roll up the result counts.
+ 31  *
+ 32  * @param result
+ 33  */
+ 34 jasmine.NestedResults.prototype.rollupCounts = function(result) {
+ 35   this.totalCount += result.totalCount;
+ 36   this.passedCount += result.passedCount;
+ 37   this.failedCount += result.failedCount;
+ 38 };
+ 39 
+ 40 /**
+ 41  * Tracks a result's message.
+ 42  * @param message
+ 43  */
+ 44 jasmine.NestedResults.prototype.log = function(message) {
+ 45   this.items_.push(new jasmine.MessageResult(message));
+ 46 };
+ 47 
+ 48 /**
+ 49  * Getter for the results: message & results.
+ 50  */
+ 51 jasmine.NestedResults.prototype.getItems = function() {
+ 52   return this.items_;
+ 53 };
+ 54 
+ 55 /**
+ 56  * Adds a result, tracking counts (total, passed, & failed)
+ 57  * @param {jasmine.ExpectationResult|jasmine.NestedResults} result
+ 58  */
+ 59 jasmine.NestedResults.prototype.addResult = function(result) {
+ 60   if (result.type != 'MessageResult') {
+ 61     if (result.items_) {
+ 62       this.rollupCounts(result);
+ 63     } else {
+ 64       this.totalCount++;
+ 65       if (result.passed) {
+ 66         this.passedCount++;
+ 67       } else {
+ 68         this.failedCount++;
+ 69       }
+ 70     }
+ 71   }
+ 72   this.items_.push(result);
+ 73 };
+ 74 
+ 75 /**
+ 76  * @returns {Boolean} True if <b>everything</b> below passed
+ 77  */
+ 78 jasmine.NestedResults.prototype.passed = function() {
+ 79   return this.passedCount === this.totalCount;
+ 80 };
+ 81 
\ No newline at end of file diff --git a/doc/symbols/src/src_PrettyPrinter.js.html b/doc/symbols/src/src_PrettyPrinter.js.html new file mode 100644 index 0000000..da77fcc --- /dev/null +++ b/doc/symbols/src/src_PrettyPrinter.js.html @@ -0,0 +1,123 @@ +
  1 /**
+  2  * Base class for pretty printing for expectation results.
+  3  */
+  4 jasmine.PrettyPrinter = function() {
+  5   this.ppNestLevel_ = 0;
+  6 };
+  7 
+  8 /**
+  9  * Formats a value in a nice, human-readable string.
+ 10  *
+ 11  * @param value
+ 12  * @returns {String}
+ 13  */
+ 14 jasmine.PrettyPrinter.prototype.format = function(value) {
+ 15   if (this.ppNestLevel_ > 40) {
+ 16     //    return '(jasmine.pp nested too deeply!)';
+ 17     throw new Error('jasmine.PrettyPrinter: format() nested too deeply!');
+ 18   }
+ 19 
+ 20   this.ppNestLevel_++;
+ 21   try {
+ 22     if (value === undefined) {
+ 23       this.emitScalar('undefined');
+ 24     } else if (value === null) {
+ 25       this.emitScalar('null');
+ 26     } else if (value.navigator && value.frames && value.setTimeout) {
+ 27       this.emitScalar('<window>');
+ 28     } else if (value instanceof jasmine.Matchers.Any) {
+ 29       this.emitScalar(value.toString());
+ 30     } else if (typeof value === 'string') {
+ 31       this.emitScalar("'" + value + "'");
+ 32     } else if (typeof value === 'function') {
+ 33       this.emitScalar('Function');
+ 34     } else if (typeof value.nodeType === 'number') {
+ 35       this.emitScalar('HTMLNode');
+ 36     } else if (value instanceof Date) {
+ 37       this.emitScalar('Date(' + value + ')');
+ 38     } else if (value.__Jasmine_been_here_before__) {
+ 39       this.emitScalar('<circular reference: ' + (jasmine.isArray_(value) ? 'Array' : 'Object') + '>');
+ 40     } else if (jasmine.isArray_(value) || typeof value == 'object') {
+ 41       value.__Jasmine_been_here_before__ = true;
+ 42       if (jasmine.isArray_(value)) {
+ 43         this.emitArray(value);
+ 44       } else {
+ 45         this.emitObject(value);
+ 46       }
+ 47       delete value.__Jasmine_been_here_before__;
+ 48     } else {
+ 49       this.emitScalar(value.toString());
+ 50     }
+ 51   } finally {
+ 52     this.ppNestLevel_--;
+ 53   }
+ 54 };
+ 55 
+ 56 jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) {
+ 57   for (var property in obj) {
+ 58     if (property == '__Jasmine_been_here_before__') continue;
+ 59     fn(property, obj.__lookupGetter__(property) != null);
+ 60   }
+ 61 };
+ 62 
+ 63 jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_;
+ 64 jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_;
+ 65 jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_;
+ 66 
+ 67 jasmine.StringPrettyPrinter = function() {
+ 68   jasmine.PrettyPrinter.call(this);
+ 69 
+ 70   this.string = '';
+ 71 };
+ 72 jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter);
+ 73 
+ 74 jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) {
+ 75   this.append(value);
+ 76 };
+ 77 
+ 78 jasmine.StringPrettyPrinter.prototype.emitArray = function(array) {
+ 79   this.append('[ ');
+ 80   for (var i = 0; i < array.length; i++) {
+ 81     if (i > 0) {
+ 82       this.append(', ');
+ 83     }
+ 84     this.format(array[i]);
+ 85   }
+ 86   this.append(' ]');
+ 87 };
+ 88 
+ 89 jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) {
+ 90   var self = this;
+ 91   this.append('{ ');
+ 92   var first = true;
+ 93 
+ 94   this.iterateObject(obj, function(property, isGetter) {
+ 95     if (first) {
+ 96       first = false;
+ 97     } else {
+ 98       self.append(', ');
+ 99     }
+100 
+101     self.append(property);
+102     self.append(' : ');
+103     if (isGetter) {
+104       self.append('<getter>');
+105     } else {
+106       self.format(obj[property]);
+107     }
+108   });
+109 
+110   this.append(' }');
+111 };
+112 
+113 jasmine.StringPrettyPrinter.prototype.append = function(value) {
+114   this.string += value;
+115 };
+116 
\ No newline at end of file diff --git a/doc/symbols/src/src_QueuedFunction.js.html b/doc/symbols/src/src_QueuedFunction.js.html new file mode 100644 index 0000000..c3642a3 --- /dev/null +++ b/doc/symbols/src/src_QueuedFunction.js.html @@ -0,0 +1,94 @@ +
  1 /**
+  2  * QueuedFunction is how ActionCollections' actions are implemented
+  3  *
+  4  * @constructor
+  5  * @param {jasmine.Env} env
+  6  * @param {Function} func
+  7  * @param {Number} timeout
+  8  * @param {Function} latchFunction
+  9  * @param {jasmine.Spec} spec
+ 10  */
+ 11 jasmine.QueuedFunction = function(env, func, timeout, latchFunction, spec) {
+ 12   this.env = env;
+ 13   this.func = func;
+ 14   this.timeout = timeout;
+ 15   this.latchFunction = latchFunction;
+ 16   this.spec = spec;
+ 17 
+ 18   this.totalTimeSpentWaitingForLatch = 0;
+ 19   this.latchTimeoutIncrement = 100;
+ 20 };
+ 21 
+ 22 jasmine.QueuedFunction.prototype.next = function() {
+ 23   this.spec.finish(); // default value is to be done after one function
+ 24 };
+ 25 
+ 26 jasmine.QueuedFunction.prototype.safeExecute = function() {
+ 27   if (this.env.reporter) {
+ 28     this.env.reporter.log('>> Jasmine Running ' + this.spec.suite.description + ' ' + this.spec.description + '...');
+ 29   }
+ 30 
+ 31   try {
+ 32     this.func.apply(this.spec);
+ 33   } catch (e) {
+ 34     this.fail(e);
+ 35   }
+ 36 };
+ 37 
+ 38 jasmine.QueuedFunction.prototype.execute = function() {
+ 39   var self = this;
+ 40   var executeNow = function() {
+ 41     self.safeExecute();
+ 42     self.next();
+ 43   };
+ 44 
+ 45   var executeLater = function() {
+ 46     self.env.setTimeout(executeNow, self.timeout);
+ 47   };
+ 48 
+ 49   var executeNowOrLater = function() {
+ 50     var latchFunctionResult;
+ 51 
+ 52     try {
+ 53       latchFunctionResult = self.latchFunction.apply(self.spec);
+ 54     } catch (e) {
+ 55       self.fail(e);
+ 56       self.next();
+ 57       return;
+ 58     }
+ 59 
+ 60     if (latchFunctionResult) {
+ 61       executeNow();
+ 62     } else if (self.totalTimeSpentWaitingForLatch >= self.timeout) {
+ 63       var message = 'timed out after ' + self.timeout + ' msec waiting for ' + (self.latchFunction.description || 'something to happen');
+ 64       self.fail({
+ 65         name: 'timeout',
+ 66         message: message
+ 67       });
+ 68       self.next();
+ 69     } else {
+ 70       self.totalTimeSpentWaitingForLatch += self.latchTimeoutIncrement;
+ 71       self.env.setTimeout(executeNowOrLater, self.latchTimeoutIncrement);
+ 72     }
+ 73   };
+ 74 
+ 75   if (this.latchFunction !== undefined) {
+ 76     executeNowOrLater();
+ 77   } else if (this.timeout > 0) {
+ 78     executeLater();
+ 79   } else {
+ 80     executeNow();
+ 81   }
+ 82 };
+ 83 
+ 84 jasmine.QueuedFunction.prototype.fail = function(e) {
+ 85   this.spec.results.addResult(new jasmine.ExpectationResult(false, jasmine.util.formatException(e), null));
+ 86 };
+ 87 
\ No newline at end of file diff --git a/doc/symbols/src/src_Reporters.js.html b/doc/symbols/src/src_Reporters.js.html new file mode 100644 index 0000000..996a8e2 --- /dev/null +++ b/doc/symbols/src/src_Reporters.js.html @@ -0,0 +1,41 @@ +
  1 /* JasmineReporters.reporter
+  2  *    Base object that will get called whenever a Spec, Suite, or Runner is done.  It is up to
+  3  *    descendants of this object to do something with the results (see json_reporter.js)
+  4  */
+  5 jasmine.Reporters = {};
+  6 
+  7 jasmine.Reporters.reporter = function(callbacks) {
+  8   var that = {
+  9     callbacks: callbacks || {},
+ 10 
+ 11     doCallback: function(callback, results) {
+ 12       if (callback) {
+ 13         callback(results);
+ 14       }
+ 15     },
+ 16 
+ 17     reportRunnerResults: function(runner) {
+ 18       that.doCallback(that.callbacks.runnerCallback, runner);
+ 19     },
+ 20     reportSuiteResults:  function(suite) {
+ 21       that.doCallback(that.callbacks.suiteCallback, suite);
+ 22     },
+ 23     reportSpecResults:   function(spec) {
+ 24       that.doCallback(that.callbacks.specCallback, spec);
+ 25     },
+ 26     log: function (str) {
+ 27       if (console && console.log) console.log(str);
+ 28     }
+ 29   };
+ 30 
+ 31   return that;
+ 32 };
+ 33 
+ 34 
\ No newline at end of file diff --git a/doc/symbols/src/src_Runner.js.html b/doc/symbols/src/src_Runner.js.html new file mode 100644 index 0000000..2b828fa --- /dev/null +++ b/doc/symbols/src/src_Runner.js.html @@ -0,0 +1,34 @@ +
  1 /**
+  2  * Runner
+  3  *
+  4  * @constructor
+  5  * @param {jasmine.Env} env
+  6  */
+  7 jasmine.Runner = function(env) {
+  8   jasmine.ActionCollection.call(this, env);
+  9 
+ 10   this.suites = this.actions;
+ 11 };
+ 12 jasmine.util.inherit(jasmine.Runner, jasmine.ActionCollection);
+ 13 
+ 14 jasmine.Runner.prototype.finishCallback = function() {
+ 15   if (this.env.reporter) {
+ 16     this.env.reporter.reportRunnerResults(this);
+ 17   }
+ 18 };
+ 19 
+ 20 jasmine.Runner.prototype.getResults = function() {
+ 21   var results = new jasmine.NestedResults();
+ 22   for (var i = 0; i < this.suites.length; i++) {
+ 23     results.rollupCounts(this.suites[i].getResults());
+ 24   }
+ 25   return results;
+ 26 };
+ 27 
\ No newline at end of file diff --git a/doc/symbols/src/src_Spec.js.html b/doc/symbols/src/src_Spec.js.html new file mode 100644 index 0000000..e75c5ad --- /dev/null +++ b/doc/symbols/src/src_Spec.js.html @@ -0,0 +1,199 @@ +
  1 /**
+  2  * Internal representation of a Jasmine specification, or test.
+  3  * @private
+  4  * @constructs
+  5  * @param {jasmine.Env} env
+  6  * @param {jasmine.Suite} suite
+  7  * @param {String} description
+  8  */
+  9 jasmine.Spec = function(env, suite, description) {
+ 10   this.id = env.nextSpecId_++;
+ 11   this.env = env;
+ 12   this.suite = suite;
+ 13   this.description = description;
+ 14   this.queue = [];
+ 15   this.currentTimeout = 0;
+ 16   this.currentLatchFunction = undefined;
+ 17   this.finished = false;
+ 18   this.afterCallbacks = [];
+ 19   this.spies_ = [];
+ 20 
+ 21   this.results = new jasmine.NestedResults();
+ 22   this.results.description = description;
+ 23   this.runs = this.addToQueue;
+ 24 };
+ 25 
+ 26 jasmine.Spec.prototype.getFullName = function() {
+ 27   return this.suite.getFullName() + ' ' + this.description + '.';
+ 28 };
+ 29 
+ 30 jasmine.Spec.prototype.getResults = function() {
+ 31   return this.results;
+ 32 };
+ 33 
+ 34 jasmine.Spec.prototype.addToQueue = function(func) {
+ 35   var queuedFunction = new jasmine.QueuedFunction(this.env, func, this.currentTimeout, this.currentLatchFunction, this);
+ 36   this.queue.push(queuedFunction);
+ 37 
+ 38   if (this.queue.length > 1) {
+ 39     var previousQueuedFunction = this.queue[this.queue.length - 2];
+ 40     previousQueuedFunction.next = function() {
+ 41       queuedFunction.execute();
+ 42     };
+ 43   }
+ 44 
+ 45   this.resetTimeout();
+ 46   return this;
+ 47 };
+ 48 
+ 49 /**
+ 50  * @private
+ 51  * @deprecated
+ 52  */
+ 53 jasmine.Spec.prototype.expects_that = function(actual) {
+ 54   return this.expect(actual);
+ 55 };
+ 56 
+ 57 /**
+ 58  * @private
+ 59  * @deprecated
+ 60  */
+ 61 jasmine.Spec.prototype.expect = function(actual) {
+ 62   return new jasmine.Matchers(this.env, actual, this.results);
+ 63 };
+ 64 
+ 65 /**
+ 66  * @private
+ 67  * @deprecated
+ 68  */
+ 69 jasmine.Spec.prototype.waits = function(timeout) {
+ 70   this.currentTimeout = timeout;
+ 71   this.currentLatchFunction = undefined;
+ 72   return this;
+ 73 };
+ 74 
+ 75 /**
+ 76  * @private
+ 77  * @deprecated
+ 78  */
+ 79 jasmine.Spec.prototype.waitsFor = function(timeout, latchFunction, message) {
+ 80   this.currentTimeout = timeout;
+ 81   this.currentLatchFunction = latchFunction;
+ 82   this.currentLatchFunction.description = message;
+ 83   return this;
+ 84 };
+ 85 
+ 86 jasmine.Spec.prototype.resetTimeout = function() {
+ 87   this.currentTimeout = 0;
+ 88   this.currentLatchFunction = undefined;
+ 89 };
+ 90 
+ 91 jasmine.Spec.prototype.finishCallback = function() {
+ 92   if (this.env.reporter) {
+ 93     this.env.reporter.reportSpecResults(this);
+ 94   }
+ 95 };
+ 96 
+ 97 jasmine.Spec.prototype.finish = function() {
+ 98   this.safeExecuteAfters();
+ 99 
+100   this.removeAllSpies();
+101   this.finishCallback();
+102   this.finished = true;
+103 };
+104 
+105 jasmine.Spec.prototype.after = function(doAfter) {
+106   this.afterCallbacks.unshift(doAfter);
+107 };
+108 
+109 jasmine.Spec.prototype.execute = function() {
+110   if (!this.env.specFilter(this)) {
+111     this.results.skipped = true;
+112     this.finishCallback();
+113     this.finished = true;
+114     return;
+115   }
+116 
+117   this.env.currentSpec = this;
+118   this.env.currentlyRunningTests = true;
+119 
+120   this.safeExecuteBefores();
+121 
+122   if (this.queue[0]) {
+123     this.queue[0].execute();
+124   } else {
+125     this.finish();
+126   }
+127   this.env.currentlyRunningTests = false;
+128 };
+129 
+130 jasmine.Spec.prototype.safeExecuteBefores = function() {
+131   var befores = [];
+132   for (var suite = this.suite; suite; suite = suite.parentSuite) {
+133     if (suite.beforeEachFunction) befores.push(suite.beforeEachFunction);
+134   }
+135 
+136   while (befores.length) {
+137     this.safeExecuteBeforeOrAfter(befores.pop());
+138   }
+139 };
+140 
+141 jasmine.Spec.prototype.safeExecuteAfters = function() {
+142   for (var suite = this.suite; suite; suite = suite.parentSuite) {
+143     if (suite.afterEachFunction) this.safeExecuteBeforeOrAfter(suite.afterEachFunction);
+144   }
+145 };
+146 
+147 jasmine.Spec.prototype.safeExecuteBeforeOrAfter = function(func) {
+148   try {
+149     func.apply(this);
+150   } catch (e) {
+151     this.results.addResult(new jasmine.ExpectationResult(false, func.typeName + '() fail: ' + jasmine.util.formatException(e), null));
+152   }
+153 };
+154 
+155 jasmine.Spec.prototype.explodes = function() {
+156   throw 'explodes function should not have been called';
+157 };
+158 
+159 jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) {
+160   if (obj == undefined) {
+161     throw "spyOn could not find an object to spy upon for " + methodName + "()";
+162   }
+163 
+164   if (!ignoreMethodDoesntExist && obj[methodName] === undefined) {
+165     throw methodName + '() method does not exist';
+166   }
+167 
+168   if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) {
+169     throw new Error(methodName + ' has already been spied upon');
+170   }
+171 
+172   var spyObj = jasmine.createSpy(methodName);
+173 
+174   this.spies_.push(spyObj);
+175   spyObj.baseObj = obj;
+176   spyObj.methodName = methodName;
+177   spyObj.originalValue = obj[methodName];
+178 
+179   obj[methodName] = spyObj;
+180 
+181   return spyObj;
+182 };
+183 
+184 jasmine.Spec.prototype.removeAllSpies = function() {
+185   for (var i = 0; i < this.spies_.length; i++) {
+186     var spy = this.spies_[i];
+187     spy.baseObj[spy.methodName] = spy.originalValue;
+188   }
+189   this.spies_ = [];
+190 };
+191 
+192 
\ No newline at end of file diff --git a/doc/symbols/src/src_Suite.js.html b/doc/symbols/src/src_Suite.js.html new file mode 100644 index 0000000..9157f41 --- /dev/null +++ b/doc/symbols/src/src_Suite.js.html @@ -0,0 +1,61 @@ +
  1 /**
+  2  * For storing & executing a Jasmine suite.
+  3  *
+  4  * @constructor
+  5  * @param {jasmine.Env} env
+  6  * @param {String} description
+  7  * @param {Function} specDefinitions
+  8  * @param {jasmine.Suite} parentSuite
+  9  */
+ 10 jasmine.Suite = function(env, description, specDefinitions, parentSuite) {
+ 11   jasmine.ActionCollection.call(this, env);
+ 12 
+ 13   this.description = description;
+ 14   this.specs = this.actions;
+ 15   this.parentSuite = parentSuite;
+ 16 
+ 17   this.beforeEachFunction = null;
+ 18   this.afterEachFunction = null;
+ 19 };
+ 20 jasmine.util.inherit(jasmine.Suite, jasmine.ActionCollection);
+ 21 
+ 22 jasmine.Suite.prototype.getFullName = function() {
+ 23   var fullName = this.description;
+ 24   for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) {
+ 25     fullName = parentSuite.description + ' ' + fullName;
+ 26   }
+ 27   return fullName;
+ 28 };
+ 29 
+ 30 jasmine.Suite.prototype.finishCallback = function() {
+ 31   if (this.env.reporter) {
+ 32     this.env.reporter.reportSuiteResults(this);
+ 33   }
+ 34 };
+ 35 
+ 36 jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) {
+ 37   beforeEachFunction.typeName = 'beforeEach';
+ 38   this.beforeEachFunction = beforeEachFunction;
+ 39 };
+ 40 
+ 41 jasmine.Suite.prototype.afterEach = function(afterEachFunction) {
+ 42   afterEachFunction.typeName = 'afterEach';
+ 43   this.afterEachFunction = afterEachFunction;
+ 44 };
+ 45 
+ 46 jasmine.Suite.prototype.getResults = function() {
+ 47   var results = new jasmine.NestedResults();
+ 48   for (var i = 0; i < this.specs.length; i++) {
+ 49     results.rollupCounts(this.specs[i].getResults());
+ 50   }
+ 51   return results;
+ 52 };
+ 53 
+ 54 
\ No newline at end of file diff --git a/doc/symbols/src/src_base.js.html b/doc/symbols/src/src_base.js.html new file mode 100644 index 0000000..db29192 --- /dev/null +++ b/doc/symbols/src/src_base.js.html @@ -0,0 +1,517 @@ +
  1 /**
+  2  * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework.
+  3  * 
+  4  * @namespace
+  5  */
+  6 var jasmine = {};
+  7 
+  8 /**
+  9  * @private
+ 10  */
+ 11 jasmine.unimplementedMethod_ = function() {
+ 12   throw new Error("unimplemented method");
+ 13 };
+ 14 
+ 15 /**
+ 16  * Allows for bound functions to be comapred.  Internal use only.
+ 17  *
+ 18  * @ignore
+ 19  * @private
+ 20  * @param base {Object} bound 'this' for the function
+ 21  * @param name {Function} function to find
+ 22  */
+ 23 jasmine.bindOriginal_ = function(base, name) {
+ 24   var original = base[name];
+ 25   return function() {
+ 26     return original.apply(base, arguments);
+ 27   };
+ 28 };
+ 29 
+ 30 jasmine.setTimeout = jasmine.bindOriginal_(window, 'setTimeout');
+ 31 jasmine.clearTimeout = jasmine.bindOriginal_(window, 'clearTimeout');
+ 32 jasmine.setInterval = jasmine.bindOriginal_(window, 'setInterval');
+ 33 jasmine.clearInterval = jasmine.bindOriginal_(window, 'clearInterval');
+ 34 
+ 35 jasmine.MessageResult = function(text) {
+ 36   this.type = 'MessageResult';
+ 37   this.text = text;
+ 38   this.trace = new Error(); // todo: test better
+ 39 };
+ 40 
+ 41 jasmine.ExpectationResult = function(passed, message, details) {
+ 42   this.type = 'ExpectationResult';
+ 43   this.passed = passed;
+ 44   this.message = message;
+ 45   this.details = details;
+ 46   this.trace = new Error(message); // todo: test better
+ 47 };
+ 48 
+ 49 /**
+ 50  * Getter for the Jasmine environment. Ensures one gets created
+ 51  */
+ 52 jasmine.getEnv = function() {
+ 53   return jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env();
+ 54 };
+ 55 
+ 56 /**
+ 57  * @ignore
+ 58  * @private
+ 59  * @param value
+ 60  * @returns {Boolean}
+ 61  */
+ 62 jasmine.isArray_ = function(value) {
+ 63   return value &&
+ 64   typeof value === 'object' &&
+ 65   typeof value.length === 'number' &&
+ 66   typeof value.splice === 'function' &&
+ 67   !(value.propertyIsEnumerable('length'));
+ 68 };
+ 69 
+ 70 /**
+ 71  * Pretty printer for expecations.  Takes any object and turns it into a human-readable string.
+ 72  *
+ 73  * @param value {Object} an object to be outputted
+ 74  * @returns {String}
+ 75  */
+ 76 jasmine.pp = function(value) {
+ 77   var stringPrettyPrinter = new jasmine.StringPrettyPrinter();
+ 78   stringPrettyPrinter.format(value);
+ 79   return stringPrettyPrinter.string;
+ 80 };
+ 81 
+ 82 /**
+ 83  * Returns true if the object is a DOM Node.
+ 84  *
+ 85  * @param {Object} obj object to check
+ 86  * @returns {Boolean}
+ 87  */
+ 88 jasmine.isDomNode = function(obj) {
+ 89   return obj['nodeType'] > 0;
+ 90 };
+ 91 
+ 92 /**
+ 93  * Returns a matchable 'generic' object of the class type.  For use in expecations of type when values don't matter.
+ 94  *
+ 95  * @example
+ 96  * // don't care about which function is passed in, as long as it's a function
+ 97  * expect(mySpy).wasCalledWith(jasmine.any(Function));
+ 98  *
+ 99  * @param {Class} clazz
+100  * @returns matchable object of the type clazz
+101  */
+102 jasmine.any = function(clazz) {
+103   return new jasmine.Matchers.Any(clazz);
+104 };
+105 
+106 /**
+107  * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks.
+108  *
+109  * Spies should be created in test setup, before expectations.  They can then be checked, using the standard Jasmine
+110  * expectation syntax. Spies can be checked if they were called or not and what the calling params were.
+111  *
+112  * A Spy has the following mehtod: wasCalled, callCount, mostRecentCall, and argsForCall (see docs)
+113  * Spies are torn down at the end of every spec.
+114  *
+115  * Note: Do <b>not</b> call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj.
+116  * 
+117  * @example
+118  * // a stub
+119  * var myStub = jasmine.createSpy('myStub');  // can be used anywhere
+120  *
+121  * // spy example
+122  * var foo = {
+123  *   not: function(bool) { return !bool; }
+124  * }
+125  *
+126  * // actual foo.not will not be called, execution stops
+127  * spyOn(foo, 'not');
+128 
+129  // foo.not spied upon, execution will continue to implementation
+130  * spyOn(foo, 'not').andCallThrough();
+131  *
+132  * // fake example
+133  * var foo = {
+134  *   not: function(bool) { return !bool; }
+135  * }
+136  *
+137  * // foo.not(val) will return val
+138  * spyOn(foo, 'not').andCallFake(function(value) {return value;});
+139  *
+140  * // mock example
+141  * foo.not(7 == 7);
+142  * expect(foo.not).wasCalled();
+143  * expect(foo.not).wasCalledWith(true);
+144  *
+145  * @constructor
+146  * @see spyOn, jasmine.createSpy, jasmine.createSpyObj
+147  * @param {String} name
+148  */
+149 jasmine.Spy = function(name) {
+150   /**
+151    * The name of the spy, if provided.
+152    */
+153   this.identity = name || 'unknown';
+154   /**
+155    *  Is this Object a spy?
+156    */
+157   this.isSpy = true;
+158   /**
+159    * The acutal function this spy stubs.
+160    */
+161   this.plan = function() {};
+162   /**
+163    * Tracking of the most recent call to the spy.
+164    * @example
+165    * var mySpy = jasmine.createSpy('foo');
+166    * mySpy(1, 2);
+167    * mySpy.mostRecentCall.args = [1, 2];
+168    */
+169   this.mostRecentCall = {};
+170 
+171   /**
+172    * Holds arguments for each call to the spy, indexed by call count
+173    * @example
+174    * var mySpy = jasmine.createSpy('foo');
+175    * mySpy(1, 2);
+176    * mySpy(7, 8);
+177    * mySpy.mostRecentCall.args = [7, 8];
+178    * mySpy.argsForCall[0] = [1, 2];
+179    * mySpy.argsForCall[1] = [7, 8];
+180    */
+181   this.argsForCall = [];
+182 };
+183 
+184 /**
+185  * Tells a spy to call through to the actual implemenatation.
+186  *
+187  * @example
+188  * var foo = {
+189  *   bar: function() { // do some stuff }
+190  * }
+191  * 
+192  * // defining a spy on an existing property: foo.bar
+193  * spyOn(foo, 'bar').andCallThrough();
+194  */
+195 jasmine.Spy.prototype.andCallThrough = function() {
+196   this.plan = this.originalValue;
+197   return this;
+198 };
+199 
+200 /**
+201  * For setting the return value of a spy.
+202  *
+203  * @example
+204  * // defining a spy from scratch: foo() returns 'baz'
+205  * var foo = jasmine.createSpy('spy on foo').andReturn('baz');
+206  *
+207  * // defining a spy on an existing property: foo.bar() returns 'baz'
+208  * spyOn(foo, 'bar').andReturn('baz');
+209  *
+210  * @param {Object} value
+211  */
+212 jasmine.Spy.prototype.andReturn = function(value) {
+213   this.plan = function() {
+214     return value;
+215   };
+216   return this;
+217 };
+218 
+219 /**
+220  * For throwing an exception when a spy is called.
+221  *
+222  * @example
+223  * // defining a spy from scratch: foo() throws an exception w/ message 'ouch'
+224  * var foo = jasmine.createSpy('spy on foo').andThrow('baz');
+225  *
+226  * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch'
+227  * spyOn(foo, 'bar').andThrow('baz');
+228  *
+229  * @param {String} exceptionMsg
+230  */
+231 jasmine.Spy.prototype.andThrow = function(exceptionMsg) {
+232   this.plan = function() {
+233     throw exceptionMsg;
+234   };
+235   return this;
+236 };
+237 
+238 /**
+239  * Calls an alternate implementation when a spy is called.
+240  *
+241  * @example
+242  * var baz = function() {
+243  *   // do some stuff, return something
+244  * }
+245  * // defining a spy from scratch: foo() calls the function baz
+246  * var foo = jasmine.createSpy('spy on foo').andCall(baz);
+247  *
+248  * // defining a spy on an existing property: foo.bar() calls an anonymnous function
+249  * spyOn(foo, 'bar').andCall(function() { return 'baz';} );
+250  *
+251  * @param {Function} fakeFunc
+252  */
+253 jasmine.Spy.prototype.andCallFake = function(fakeFunc) {
+254   this.plan = fakeFunc;
+255   return this;
+256 };
+257 
+258 /**
+259  * Resets all of a spy's the tracking variables so that it can be used again.
+260  *
+261  * @example
+262  * spyOn(foo, 'bar');
+263  *
+264  * foo.bar();
+265  *
+266  * expect(foo.bar.callCount).toEqual(1);
+267  *
+268  * foo.bar.reset();
+269  *
+270  * expect(foo.bar.callCount).toEqual(0);
+271  */
+272 jasmine.Spy.prototype.reset = function() {
+273   this.wasCalled = false;
+274   this.callCount = 0;
+275   this.argsForCall = [];
+276   this.mostRecentCall = {};
+277 };
+278 
+279 jasmine.createSpy = function(name) {
+280 
+281   var spyObj = function() {
+282     spyObj.wasCalled = true;
+283     spyObj.callCount++;
+284     var args = jasmine.util.argsToArray(arguments);
+285     //spyObj.mostRecentCall = {
+286     //  object: this,
+287     //  args: args
+288     //};
+289     spyObj.mostRecentCall.object = this;
+290     spyObj.mostRecentCall.args = args;
+291     spyObj.argsForCall.push(args);
+292     return spyObj.plan.apply(this, arguments);
+293   };
+294 
+295   var spy = new jasmine.Spy(name);
+296   
+297   for(var prop in spy) {
+298     spyObj[prop] = spy[prop];
+299   }
+300   
+301   spyObj.reset();
+302 
+303   return spyObj;
+304 };
+305 
+306 /**
+307  * Creates a more complicated spy: an Object that has every property a function that is a spy.  Used for stubbing something
+308  * large in one call.
+309  *
+310  * @param {String} baseName name of spy class
+311  * @param {Array} methodNames array of names of methods to make spies
+312  */
+313 jasmine.createSpyObj = function(baseName, methodNames) {
+314   var obj = {};
+315   for (var i = 0; i < methodNames.length; i++) {
+316     obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]);
+317   }
+318   return obj;
+319 };
+320 
+321 jasmine.log = function(message) {
+322   jasmine.getEnv().currentSpec.getResults().log(message);
+323 };
+324 
+325 /**
+326  * Function that installs a spy on an existing object's method name.  Used within a Spec to create a spy.
+327  *
+328  * @example
+329  * // spy example
+330  * var foo = {
+331  *   not: function(bool) { return !bool; }
+332  * }
+333  * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops
+334  *
+335  * @see jasmine.createSpy
+336  * @param obj
+337  * @param methodName
+338  * @returns a Jasmine spy that can be chained with all spy methods
+339  */
+340 var spyOn = function(obj, methodName) {
+341   return jasmine.getEnv().currentSpec.spyOn(obj, methodName);
+342 };
+343 
+344 /**
+345  * Creates a Jasmine spec that will be added to the current suite.
+346  *
+347  * // TODO: pending tests
+348  *
+349  * @example
+350  * it('should be true', function() {
+351  *   expect(true).toEqual(true);
+352  * });
+353  *
+354  * @param {String} desc description of this specification
+355  * @param {Function} func defines the preconditions and expectations of the spec
+356  */
+357 var it = function(desc, func) {
+358   return jasmine.getEnv().it(desc, func);
+359 };
+360 
+361 /**
+362  * Creates a <em>disabled</em> Jasmine spec.
+363  *
+364  * A convenience method that allows existing specs to be disabled temporarily during development.
+365  *
+366  * @param {String} desc description of this specification
+367  * @param {Function} func defines the preconditions and expectations of the spec
+368  */
+369 var xit = function(desc, func) {
+370   return jasmine.getEnv().xit(desc, func);
+371 };
+372 
+373 /**
+374  * Starts a chain for a Jasmine expectation.
+375  *
+376  * It is passed an Object that is the actual value and should chain to one of the many
+377  * jasmine.Matchers functions.
+378  *
+379  * @param {Object} actual Actual value to test against and expected value
+380  */
+381 var expect = function(actual) {
+382   return jasmine.getEnv().currentSpec.expect(actual);
+383 };
+384 
+385 /**
+386  * Defines part of a jasmine spec.  Used in cominbination with waits or waitsFor in asynchrnous specs.
+387  *
+388  * @param {Function} func Function that defines part of a jasmine spec.
+389  */
+390 var runs = function(func) {
+391   jasmine.getEnv().currentSpec.runs(func);
+392 };
+393 
+394 /**
+395  * Waits for a timeout before moving to the next runs()-defined block.
+396  * @param {Number} timeout
+397  */
+398 var waits = function(timeout) {
+399   jasmine.getEnv().currentSpec.waits(timeout);
+400 };
+401 
+402 /**
+403  * Waits for the latchFunction to return true before proceeding to the next runs()-defined block.
+404  *  
+405  * @param {Number} timeout
+406  * @param {Function} latchFunction
+407  * @param {String} message
+408  */
+409 var waitsFor = function(timeout, latchFunction, message) {
+410   jasmine.getEnv().currentSpec.waitsFor(timeout, latchFunction, message);
+411 };
+412 
+413 /**
+414  * A function that is called before each spec in a suite.
+415  *
+416  * Used for spec setup, including validating assumptions.
+417  *
+418  * @param {Function} beforeEachFunction
+419  */
+420 var beforeEach = function(beforeEachFunction) {
+421   jasmine.getEnv().beforeEach(beforeEachFunction);
+422 };
+423 
+424 /**
+425  * A function that is called after each spec in a suite.
+426  *
+427  * Used for restoring any state that is hijacked during spec execution.
+428  *
+429  * @param {Function} afterEachFunction
+430  */
+431 var afterEach = function(afterEachFunction) {
+432   jasmine.getEnv().afterEach(afterEachFunction);
+433 };
+434 
+435 /**
+436  * Defines a suite of specifications.
+437  *
+438  * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared
+439  * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization
+440  * of setup in some tests.
+441  *
+442  * @example
+443  * // TODO: a simple suite
+444  *
+445  * // TODO: a simple suite with a nested describe block
+446  *
+447  * @param {String} description A string, usually the class under test.
+448  * @param {Function} specDefinitions function that defines several specs.
+449  */
+450 var describe = function(description, specDefinitions) {
+451   return jasmine.getEnv().describe(description, specDefinitions);
+452 };
+453 
+454 /**
+455  * Disables a suite of specifications.  Used to disable some suites in a file, or files, temporarily during development.
+456  *
+457  * @param {String} description A string, usually the class under test.
+458  * @param {Function} specDefinitions function that defines several specs.
+459  */
+460 var xdescribe = function(description, specDefinitions) {
+461   return jasmine.getEnv().xdescribe(description, specDefinitions);
+462 };
+463 
+464 
+465 jasmine.XmlHttpRequest = XMLHttpRequest;
+466 
+467 // Provide the XMLHttpRequest class for IE 5.x-6.x:
+468 if (typeof XMLHttpRequest == "undefined") jasmine.XmlHttpRequest = function() {
+469   try {
+470     return new ActiveXObject("Msxml2.XMLHTTP.6.0");
+471   } catch(e) {
+472   }
+473   try {
+474     return new ActiveXObject("Msxml2.XMLHTTP.3.0");
+475   } catch(e) {
+476   }
+477   try {
+478     return new ActiveXObject("Msxml2.XMLHTTP");
+479   } catch(e) {
+480   }
+481   try {
+482     return new ActiveXObject("Microsoft.XMLHTTP");
+483   } catch(e) {
+484   }
+485   throw new Error("This browser does not support XMLHttpRequest.");
+486 };
+487 
+488 /**
+489  * Adds suite files to an HTML document so that they are executed, thus adding them to the current
+490  * Jasmine environment.
+491  *
+492  * @param {String} url path to the file to include
+493  * @param {Boolean} opt_global
+494  */
+495 jasmine.include = function(url, opt_global) {
+496   if (opt_global) {
+497     document.write('<script type="text/javascript" src="' + url + '"></' + 'script>');
+498   } else {
+499     var xhr;
+500     try {
+501       xhr = new jasmine.XmlHttpRequest();
+502       xhr.open("GET", url, false);
+503       xhr.send(null);
+504     } catch(e) {
+505       throw new Error("couldn't fetch " + url + ": " + e);
+506     }
+507 
+508     return eval(xhr.responseText);
+509   }
+510 };
\ No newline at end of file diff --git a/doc/symbols/src/src_jsUnitMockTimeout.js.html b/doc/symbols/src/src_jsUnitMockTimeout.js.html new file mode 100644 index 0000000..0dd3928 --- /dev/null +++ b/doc/symbols/src/src_jsUnitMockTimeout.js.html @@ -0,0 +1,89 @@ +
  1 // Mock setTimeout, clearTimeout
+  2 // Contributed by Pivotal Computer Systems, www.pivotalsf.com
+  3 
+  4 var Clock = {
+  5     timeoutsMade: 0,
+  6     scheduledFunctions: {},
+  7     nowMillis: 0,
+  8     reset: function() {
+  9         this.scheduledFunctions = {};
+ 10         this.nowMillis = 0;
+ 11         this.timeoutsMade = 0;
+ 12     },
+ 13     tick: function(millis) {
+ 14         var oldMillis = this.nowMillis;
+ 15         var newMillis = oldMillis + millis;
+ 16         this.runFunctionsWithinRange(oldMillis, newMillis);
+ 17         this.nowMillis = newMillis;
+ 18     },
+ 19     runFunctionsWithinRange: function(oldMillis, nowMillis) {
+ 20         var scheduledFunc;
+ 21         var funcsToRun = [];
+ 22         for (var timeoutKey in this.scheduledFunctions) {
+ 23             scheduledFunc = this.scheduledFunctions[timeoutKey];
+ 24             if (scheduledFunc != undefined &&
+ 25                 scheduledFunc.runAtMillis >= oldMillis &&
+ 26                 scheduledFunc.runAtMillis <= nowMillis) {
+ 27                 funcsToRun.push(scheduledFunc);
+ 28                 this.scheduledFunctions[timeoutKey] = undefined;
+ 29             }
+ 30         }
+ 31 
+ 32         if (funcsToRun.length > 0) {
+ 33             funcsToRun.sort(function(a, b) {
+ 34                 return a.runAtMillis - b.runAtMillis;
+ 35             });
+ 36             for (var i = 0; i < funcsToRun.length; ++i) {
+ 37                 try {
+ 38                     this.nowMillis = funcsToRun[i].runAtMillis;
+ 39                     funcsToRun[i].funcToCall();
+ 40                     if (funcsToRun[i].recurring) {
+ 41                         Clock.scheduleFunction(funcsToRun[i].timeoutKey,
+ 42                                 funcsToRun[i].funcToCall,
+ 43                                 funcsToRun[i].millis,
+ 44                                 true);
+ 45                     }
+ 46                 } catch(e) {
+ 47                 }
+ 48             }
+ 49             this.runFunctionsWithinRange(oldMillis, nowMillis);
+ 50         }
+ 51     },
+ 52     scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) {
+ 53         Clock.scheduledFunctions[timeoutKey] = {
+ 54             runAtMillis: Clock.nowMillis + millis,
+ 55             funcToCall: funcToCall,
+ 56             recurring: recurring,
+ 57             timeoutKey: timeoutKey,
+ 58             millis: millis
+ 59         };
+ 60     }
+ 61 };
+ 62 
+ 63 function setTimeout(funcToCall, millis) {
+ 64     Clock.timeoutsMade = Clock.timeoutsMade + 1;
+ 65     Clock.scheduleFunction(Clock.timeoutsMade, funcToCall, millis, false);
+ 66     return Clock.timeoutsMade;
+ 67 }
+ 68 
+ 69 function setInterval(funcToCall, millis) {
+ 70     Clock.timeoutsMade = Clock.timeoutsMade + 1;
+ 71     Clock.scheduleFunction(Clock.timeoutsMade, funcToCall, millis, true);
+ 72     return Clock.timeoutsMade;
+ 73 }
+ 74 
+ 75 function clearTimeout(timeoutKey) {
+ 76     Clock.scheduledFunctions[timeoutKey] = undefined;
+ 77 }
+ 78 
+ 79 function clearInterval(timeoutKey) {
+ 80     Clock.scheduledFunctions[timeoutKey] = undefined;
+ 81 }
+ 82 
\ No newline at end of file diff --git a/doc/symbols/src/src_util.js.html b/doc/symbols/src/src_util.js.html new file mode 100644 index 0000000..7d80a0e --- /dev/null +++ b/doc/symbols/src/src_util.js.html @@ -0,0 +1,67 @@ +
  1 /**
+  2  * @namespace
+  3  */
+  4 jasmine.util = {};
+  5 
+  6 /**
+  7  * Declare that a child class inherite it's prototype from the parent class.
+  8  *
+  9  * @private
+ 10  * @param {Function} childClass
+ 11  * @param {Function} parentClass
+ 12  */
+ 13 jasmine.util.inherit = function(childClass, parentClass) {
+ 14   var subclass = function() {
+ 15   };
+ 16   subclass.prototype = parentClass.prototype;
+ 17   childClass.prototype = new subclass;
+ 18 };
+ 19 
+ 20 jasmine.util.formatException = function(e) {
+ 21   var lineNumber;
+ 22   if (e.line) {
+ 23     lineNumber = e.line;
+ 24   }
+ 25   else if (e.lineNumber) {
+ 26     lineNumber = e.lineNumber;
+ 27   }
+ 28 
+ 29   var file;
+ 30 
+ 31   if (e.sourceURL) {
+ 32     file = e.sourceURL;
+ 33   }
+ 34   else if (e.fileName) {
+ 35     file = e.fileName;
+ 36   }
+ 37 
+ 38   var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString();
+ 39 
+ 40   if (file && lineNumber) {
+ 41     message += ' in ' + file + ' (line ' + lineNumber + ')';
+ 42   }
+ 43 
+ 44   return message;
+ 45 };
+ 46 
+ 47 jasmine.util.htmlEscape = function(str) {
+ 48   if (!str) return str;
+ 49   return str.replace(/&/g, '&')
+ 50     .replace(/</g, '<')
+ 51     .replace(/>/g, '>');
+ 52 };
+ 53 
+ 54 jasmine.util.argsToArray = function(args) {
+ 55   var arrayOfArgs = [];
+ 56   for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
+ 57   return arrayOfArgs;
+ 58 };
+ 59 
+ 60 
\ No newline at end of file